diff --git a/docs/install/README.md b/docs/install/README.md
index 6f6ff66248..5921c7948a 100644
--- a/docs/install/README.md
+++ b/docs/install/README.md
@@ -35,27 +35,16 @@ to see if your system is capable of running Kata Containers.
| [Scripted](#scripted-installation) |Generates an installation script which will result in a working system when executed |[see table](#supported-distributions) |
| [Manual](#manual-installation) |Allows the user to read a brief document and execute the specified commands step-by-step |[see table](#supported-distributions) |
-### Supported Distributions
-
-Kata is packaged by the Kata community for:
-
-|Distribution (link to installation guide) | Versions |
-|-----------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------|
-|[CentOS](centos-installation-guide.md) | 7 |
-|[Debian](debian-installation-guide.md) | 9, 10 |
-|[Fedora](fedora-installation-guide.md) | 28, 29, 30 |
-|[openSUSE](opensuse-installation-guide.md) | [Leap](opensuse-leap-installation-guide.md) (15, 15.1)
[Tumbleweed](opensuse-tumbleweed-installation-guide.md) |
-|[Red Hat Enterprise Linux (RHEL)](rhel-installation-guide.md) | 7 |
-|[SUSE Linux Enterprise Server (SLES)](sles-installation-guide.md)| SLES 12 SP3 |
-|[Ubuntu](ubuntu-installation-guide.md) | 16.04, 18.04 |
-
#### Official packages
Kata packages are provided by official distribution repositories for:
-|Distribution (link to packages) | Versions |
-|-----------------------------------------------------------------|------------|
-|[openSUSE](https://software.opensuse.org/package/katacontainers) | Tumbleweed |
+|Distribution (link to packages) | Versions | Contacts |
+|---------------------------------------------------------|--------------------------------------------------------------------------------|-------------------------------------------------------|
+|[CentOS](centos-installation-guide.md) | 8 | |
+|[Fedora](fedora-installation-guide.md) | 32, Rawhide | |
+|[SUSE Linux Enterprise (SLE)](sle-installation-guide.md) | SLE 15 SP1, 15 SP2 | |
+|[openSUSE](opensuse-installation-guide.md) | [Leap 15.1](opensuse-leap-15.1-installation-guide.md)
Leap 15.2, Tumbleweed | |
### Automatic Installation
diff --git a/docs/install/centos-installation-guide.md b/docs/install/centos-installation-guide.md
index da53a0b8e0..58173036c1 100644
--- a/docs/install/centos-installation-guide.md
+++ b/docs/install/centos-installation-guide.md
@@ -4,11 +4,24 @@
```bash
$ source /etc/os-release
- $ sudo yum -y install yum-utils
- $ ARCH=$(arch)
- $ BRANCH="${BRANCH:-master}"
- $ sudo -E yum-config-manager --add-repo "http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/CentOS_${VERSION_ID}/home:katacontainers:releases:${ARCH}:${BRANCH}.repo"
- $ sudo -E yum -y install kata-runtime kata-proxy kata-shim
+ $ cat <
-
-2. Decide which container manager to use and select the corresponding link that follows:
- - [Docker](docker/opensuse-leap-docker-install.md)
- - [Kubernetes](../Developer-Guide.md#run-kata-containers-with-kubernetes)
diff --git a/docs/install/opensuse-tumbleweed-installation-guide.md b/docs/install/opensuse-tumbleweed-installation-guide.md
deleted file mode 100644
index 35ec2f2e3d..0000000000
--- a/docs/install/opensuse-tumbleweed-installation-guide.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Install Kata Containers on openSUSE Tumbleweed
-
-1. Install Kata Containers on openSUSE by following the instructions in the
-[openSUSE install guide](opensuse-installation-guide.md).
-
-
-2. Decide which container manager to use and select the corresponding link that follows:
- - [Docker](docker/opensuse-tumbleweed-docker-install.md)
- - [Kubernetes](../Developer-Guide.md#run-kata-containers-with-kubernetes)
diff --git a/docs/install/rhel-installation-guide.md b/docs/install/rhel-installation-guide.md
deleted file mode 100644
index 37412a7f11..0000000000
--- a/docs/install/rhel-installation-guide.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# Install Kata Containers on RHEL
-
-1. Install the Kata Containers components with the following commands:
-
- ```bash
- $ source /etc/os-release
- $ ARCH=$(arch)
- $ BRANCH="${BRANCH:-master}"
- $ sudo -E yum-config-manager --add-repo "http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/RHEL_${VERSION_ID}/home:katacontainers:releases:${ARCH}:${BRANCH}.repo"
- $ sudo -E yum -y install kata-runtime kata-proxy kata-shim
- ```
-
-2. Decide which container manager to use and select the corresponding link that follows:
-
- - [Docker](docker/rhel-docker-install.md)
- - [Kubernetes](../Developer-Guide.md#run-kata-containers-with-kubernetes)
diff --git a/docs/install/sle-installation-guide.md b/docs/install/sle-installation-guide.md
new file mode 100644
index 0000000000..7e22396b33
--- /dev/null
+++ b/docs/install/sle-installation-guide.md
@@ -0,0 +1,15 @@
+# Install Kata Containers on SLE
+
+1. Install the Kata Containers components with the following commands:
+
+ ```bash
+ $ source /etc/os-release
+ $ DISTRO_VERSION=$(sed "s/-/_/g" <<< "$VERSION")
+ $ sudo -E zypper addrepo --refresh "https://download.opensuse.org/repositories/devel:/kubic/SLE_${DISTRO_VERSION}_Backports/devel:kubic.repo"
+ $ sudo -E zypper -n --gpg-auto-import-keys install katacontainers
+ ```
+
+2. Decide which container manager to use and select the corresponding link that follows:
+
+ - [Docker](docker/sles-docker-install.md)
+ - [Kubernetes](../Developer-Guide.md#run-kata-containers-with-kubernetes)
diff --git a/docs/install/sles-installation-guide.md b/docs/install/sles-installation-guide.md
deleted file mode 100644
index b602ce05ca..0000000000
--- a/docs/install/sles-installation-guide.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Install Kata Containers on SLES
-
-1. Install the Kata Containers components with the following commands:
-
- ```bash
- $ ARCH=$(arch)
- $ BRANCH="${BRANCH:-master}"
- $ sudo -E zypper addrepo "http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/SLE_15_SP1/home:katacontainers:releases:${ARCH}:${BRANCH}.repo"
- $ sudo -E zypper -n --no-gpg-checks install kata-runtime kata-proxy kata-shim
- ```
-
-2. Decide which container manager to use and select the corresponding link that follows:
-
- - [Docker](docker/sles-docker-install.md)
- - [Kubernetes](../Developer-Guide.md#run-kata-containers-with-kubernetes)
diff --git a/tools/packaging/README.md b/tools/packaging/README.md
index 7a8a7125ec..0fbf4be31d 100644
--- a/tools/packaging/README.md
+++ b/tools/packaging/README.md
@@ -1,7 +1,6 @@
# Kata Containers packaging
* [Introduction](#introduction)
-* [Build using OBS](#build-using-obs)
* [Build in a container](#build-in-a-container)
* [Build a snap package](#build-a-snap-package)
* [Build static binaries](#build-static-binaries)
@@ -18,10 +17,6 @@
Kata Containers currently supports packages for many distributions. Tooling to
aid in creating these packages are contained within this repository.
-## Build using OBS
-
-See the [OBS documentation](obs-packaging).
-
## Build in a container
Kata build artifacts are available within a container image, created by a
diff --git a/tools/packaging/obs-packaging/Dockerfile b/tools/packaging/obs-packaging/Dockerfile
deleted file mode 100644
index 4e3e6b755d..0000000000
--- a/tools/packaging/obs-packaging/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-ARG SUSE_VERSION=${SUSE_VERSION:-15.1}
-FROM opensuse/leap:${SUSE_VERSION}
-
-
-# Get OBS client, plugins and dependencies
-RUN zypper -v -n install osc-plugin-install vim curl bsdtar git sudo
-RUN zypper -v -n install build \
- obs-service-tar_scm \
- obs-service-verify_file \
- obs-service-obs_scm \
- obs-service-recompress \
- obs-service-download_url
diff --git a/tools/packaging/obs-packaging/Makefile b/tools/packaging/obs-packaging/Makefile
deleted file mode 100644
index 25139136b3..0000000000
--- a/tools/packaging/obs-packaging/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-
-clean:
- find . -maxdepth 2 -type d -name '*home:katacontainers*' -prune -exec sudo rm -rf {} \;
diff --git a/tools/packaging/obs-packaging/README.md b/tools/packaging/obs-packaging/README.md
deleted file mode 100644
index 757a410588..0000000000
--- a/tools/packaging/obs-packaging/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Building under OBS
-
-SUSE's [Open Build Service (OBS)](https://openbuildservice.org) is used to
-build [the official Kata Containers packages](https://build.opensuse.org/project/subprojects/home:katacontainers).
-
-This directory contains tooling and packaging metadata to build all Kata
-components with OBS.
-
-See
-[the Kata installation documentation](../../../docs/install/README.md)
-for instructions on how to install the official packages.
diff --git a/tools/packaging/obs-packaging/build_all.sh b/tools/packaging/obs-packaging/build_all.sh
deleted file mode 100755
index 7045a30ddb..0000000000
--- a/tools/packaging/obs-packaging/build_all.sh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-readonly script_name="$(basename "${BASH_SOURCE[0]}")"
-readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-
-# shellcheck source=scripts/obs-docker.sh
-source "${script_dir}/scripts/obs-pkgs.sh"
-
-PUSH=${PUSH:-""}
-LOCAL=${LOCAL:-""}
-
-export BUILD_DISTROS=${BUILD_DISTROS:-xUbuntu_16.04}
-# Packaging use this variable instead of use git user value
-# On CI git user is not set
-export AUTHOR="${AUTHOR:-user}"
-export AUTHOR_EMAIL="${AUTHOR_EMAIL:-user@example.com}"
-
-die() {
- local msg="${1:-}"
- local print_usage=$"${2:-}"
- if [ -n "${msg}" ]; then
- echo -e "ERROR: ${msg}\n"
- fi
-
- [ -n "${print_usage}" ] && usage 1
-}
-
-usage() {
- exit_code=$"${1:-0}"
- cat < [PROJ1 PROJ2 ... ]
-
-Generate OBS packages sources for the kata projects, based on branch
-kata-branch.
-${script_name} processes all the kata projects by default; alternatively you can
-specify a subset of the projects as additional arguments.
-
-Environment variables:
-PUSH When set, push the packages sources to the openSUSE build
- service.
-
-LOCAL When set, build the packages locally.
-
-EOT
- exit "${exit_code}"
-}
-
-main() {
- case "${1:-}" in
- "-h"|"--help")
- usage
- ;;
- -*)
- die "Invalid option: ${1:-}" "1"
- ;;
- "")
- die "missing branch" "1"
- ;;
- *)
- branch="${1:-}"
- ;;
- esac
-
- shift
- local projectsList=("$@")
- [ "${#projectsList[@]}" = "0" ] && projectsList=("${OBS_PKGS_PROJECTS[@]}")
-
- # Make sure runtime is the last project
- projectsList=($(echo "${projectsList[@]}" | sed -E "s/(^.*)(runtime)(.*$)/\1 \3 \2/"))
-
- pushd "${script_dir}" >>/dev/null
- local compare_result="$(./gen_versions_txt.sh --compare ${branch})"
- [[ "$compare_result" =~ different ]] && die "$compare_result -- you need to run gen_versions_txt.sh"
- for p in "${projectsList[@]}"; do
- [ -d "$p" ] || die "$p is not a valid project directory"
- update_cmd="./update.sh"
- if [ -n "${PUSH}" ]; then
- # push to obs
- update_cmd+=" -p"
- elif [ -n "${LOCAL}" ]; then
- # local build
- update_cmd+=" -l"
- fi
-
- echo "======= Updating ${p} ======="
- pushd "$p" >>/dev/null
- bash -c "${update_cmd} ${branch}"
- popd >>/dev/null
- echo ""
- done
- popd >> /dev/null
-}
-
-main $@
diff --git a/tools/packaging/obs-packaging/build_from_docker.sh b/tools/packaging/obs-packaging/build_from_docker.sh
deleted file mode 100755
index 3f52d1715f..0000000000
--- a/tools/packaging/obs-packaging/build_from_docker.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-script_dir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
-script_name="$(basename "${BASH_SOURCE[0]}")"
-#where packaing repo lives
-packaging_repo_dir=$(cd "${script_dir}/.." && pwd)
-export USE_DOCKER=1
-http_proxy=${http_proxy:-}
-https_proxy=${https_proxy:-}
-no_proxy=${no_proxy:-}
-PUSH=${PUSH:-}
-BUILD_HEAD="${BUILD_HEAD:-false}"
-
-# shellcheck source=scripts/obs-docker.sh
-source "${script_dir}/scripts/obs-docker.sh"
-
-GO_ARCH=$(go env GOARCH)
-export GO_ARCH
-
-usage() {
- msg="${1:-}"
- exit_code=$"${2:-0}"
- cat <
-EOT
- exit "${exit_code}"
-}
-
-get_image() {
- pushd "${script_dir}/kata-containers-image/"
- local branch="${1:-}"
- if [ -z "${branch}" ]; then
- echo "branch not provided"
- return 1
- fi
- if [ ${BUILD_HEAD} = "false" ] && "${script_dir}/download_image.sh" "${branch}"; then
- echo "OK image downloaded"
- find . -name 'kata-containers-'"${branch}"'-*.tar.gz' || die "Failed to find downloaded image"
- return 0
- fi
- echo "Building image"
- "${script_dir}/../obs-packaging/kata-containers-image/build_image.sh" -v "${branch}"
- find . -name 'kata-containers-'"${branch}"'-*.tar.gz' || die "built image not found"
- popd
-}
-
-main() {
- local branch="${1:-}"
- [ -n "${branch}" ] || usage "missing branch" "1"
- #Build all kata packages
- make -f "${script_dir}/Makefile" clean
- get_image "${branch}"
- docker_run "${packaging_repo_dir}/obs-packaging/build_all.sh ${branch}"
-}
-
-main "$@"
diff --git a/tools/packaging/obs-packaging/create-repo-branch.sh b/tools/packaging/obs-packaging/create-repo-branch.sh
deleted file mode 100755
index 1e2ce426aa..0000000000
--- a/tools/packaging/obs-packaging/create-repo-branch.sh
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-script_dir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
-script_name="$(basename "${BASH_SOURCE[0]}")"
-
-# shellcheck source=./../scripts/lib.sh
-source "${script_dir}/../scripts/lib.sh"
-
-# shellcheck source=scripts/obs-docker.sh
-source "${script_dir}/scripts/obs-docker.sh"
-
-readonly home_project="home:katacontainers"
-readonly template_pkg="kata-pkg-template"
-arch_target=${ARCH:-$(uname -m)}
-
-# shellcheck source=scripts/obs-docker.sh
-source "${script_dir}/scripts/obs-pkgs.sh"
-
-pkg_exist() {
- local project="$1"
- local pkg="$2"
-
- docker_run osc list "${project}" | grep "${pkg}" || return 1
- return 0
-
-}
-
-# Array of repositories.
-#
-# Each element is comprised of multiple parts in the form:
-#
-# name::project::repository
-#
-typeset -a repos
-read_repos(){
- while read -r p; do
- [[ "$p" != "#"* ]] || continue
- repos+=("${p}")
- echo "Adding distro: ${p}"
- done < "${script_dir}/distros_${arch_target}"
-}
-
-# Array of maintainers
-#
-# Each element is comprised of multiple parts in the form:
-#
-# userid::role
-#
-typeset -a maintainers
-
-read_maintainers(){
- while read -r p; do
- [[ "$p" != "#"* ]] || continue
- maintainers+=("${p}::maintainer")
- echo "Adding maintainer: ${p}"
- done < "${script_dir}/maintainers"
-}
-
-create_repos_xml_nodes() {
- for entry in "${repos[@]}"; do
- [ -z "$entry" ] && die "found empty entry"
-
- local name
- local project
- local repositories
- name=$(echo "$entry" | awk -F"::" '{print $1;}')
- project=$(echo "$entry" | awk -F"::" '{print $2;}')
- repositories=$(echo "$entry" | awk -F"::" '{print $3;}')
-
- [ -z "$name" ] && die "no name for entry '$entry'"
- [ -z "$project" ] && die "no project for entry '$entry'"
- [ -z "$repositories" ] && die "no repository for entry '$entry'"
-
- echo " "
-
- echo "${repositories}"| tr ',' '\n' | while read -r repository; do
- echo " "
- done
-
- arch_target_obs=${arch_target}
- if [ "$arch_target" == "ppc64" ]; then
- arch_target_obs="ppc64le"
- fi
- echo " ${arch_target_obs}"
- echo " "
- done
-}
-
-create_maintainers_xml_nodes() {
- for entry in "${maintainers[@]}"; do
- [ -z "$entry" ] && die "found empty entry"
- local userid=$(echo "$entry" | awk -F"::" '{print $1;}')
- local role=$(echo "$entry" | awk -F"::" '{print $2;}')
- [ -z "$userid" ] && die "no userid for entry '$entry'"
- [ -z "$role" ] && die "no role for entry '$entry'"
- echo " "
- done
-}
-
-create_publish_xml_node() {
- # publishing is enabled by default, so only update the config
- # when we want to disable publishing
- if [ "${publish_repo:-true}" == "false" ];then
- echo " "
- echo " "
- echo " "
- fi
-}
-
-create_meta_xml() {
- project="${1:-}"
- branch="${2:-}"
- publish_repo="${3:-true}"
- [ -n "${project}" ] || die "project is empty"
- [ -n "${branch}" ] || die "branch is empty"
-
- read_maintainers
- read_repos
- cat >meta_project.xml <
- Branch project for Kata Containers branch ${branch}
- This project is the Kata Containers branch ${branch}
-$(create_publish_xml_node)
-$(create_maintainers_xml_nodes)
-$(create_repos_xml_nodes)
-
-EOT
-}
-
-usage() {
- msg="${1:-}"
- exit_code=$"${2:-0}"
- cat <
-EOT
- exit "${exit_code}"
-}
-
-main() {
- case "${1:-}" in
- "-h"|"--help")
- usage Help
- ;;
- --ci)
- create_ci_subproject=true
- publish_repo=false
- shift
- ;;
- -*)
- die "Invalid option: ${1:-}"
- ;;
- esac
- local branch="${1:-}"
- [ -n "${branch}" ] || usage "missing branch" "1"
- if [ "${create_ci_subproject:-false}" == "true" ];then
- release_type="ci"
- elif [ "$arch_target" == "ppc64le" ]; then
- release_type="alpha"
- else
- release_type="releases"
- fi
-
- project_branch="${home_project}:${release_type}:${arch_target}:${branch}"
- create_meta_xml "${project_branch}" "${branch}" "${publish_repo}"
- info "Creating/Updating project with name ${project_branch}"
- # Update /Create project metadata.
- docker_run osc meta prj "${project_branch}" -F meta_project.xml
- docker_run osc meta prjconf "${project_branch}" -F projectconfig
- for pkg in "${OBS_PKGS_PROJECTS[@]}"; do
- if ! pkg_exist "${project_branch}" "${pkg}"; then
- echo "Package ${pkg} does not exit in ${project_branch}, creating ..."
- docker_run osc branch "${home_project}" "${template_pkg}" "${project_branch}" "${pkg}"
- fi
- pkg_dir="${project_branch}/${pkg}"
- [ -d "${pkg_dir}/.osc" ] || docker_run osc co "${pkg_dir}"
- done
-}
-
-main $@
diff --git a/tools/packaging/obs-packaging/distros_ppc64le b/tools/packaging/obs-packaging/distros_ppc64le
deleted file mode 100644
index f8e58d6191..0000000000
--- a/tools/packaging/obs-packaging/distros_ppc64le
+++ /dev/null
@@ -1,12 +0,0 @@
-# Repositories.
-#
-# Each element is comprised of multiple parts in the form:
-#
-# name::project::repository
-#
-CentOS_7::CentOS:CentOS-7::standard
-Fedora_30::Fedora:30::standard
-SLE_12_SP3::SUSE:SLE-12-SP3:GA::standard
-openSUSE_Leap_15.0::openSUSE:Leap:15.0:Ports::ports
-xUbuntu_16.04::Ubuntu:16.04:Ports::universe,update
-xUbuntu_18.04::Ubuntu:18.04:Ports::universe
diff --git a/tools/packaging/obs-packaging/distros_x86_64 b/tools/packaging/obs-packaging/distros_x86_64
deleted file mode 100644
index 4e274d204b..0000000000
--- a/tools/packaging/obs-packaging/distros_x86_64
+++ /dev/null
@@ -1,20 +0,0 @@
-# Repositories.
-#
-# Each element is comprised of multiple parts in the form:
-#
-# name::project::repository
-#
-CentOS_7::CentOS:CentOS-7::standard
-CentOS_8::CentOS:CentOS-8::standard
-Debian_9::Debian:9.0::standard
-# Qemu vanilla is broken see https://github.com/kata-containers/packaging/issues/1051
-#Debian_10::Debian:10::standard
-Fedora_30::Fedora:30::standard
-# FIXME: https://github.com/kata-containers/packaging/issues/510
-#RHEL_7::RedHat:RHEL-7::standard
-SLE_15_SP1::SUSE:SLE-15-SP1:GA::standard
-openSUSE_Leap_15.1::openSUSE:Leap:15.1::standard
-openSUSE_Tumbleweed::openSUSE:Factory::snapshot
-xUbuntu_16.04::Ubuntu:16.04::universe,universe-update,update
-xUbuntu_18.04::Ubuntu:18.04::universe
-xUbuntu_20.04::Ubuntu:20.04::universe
diff --git a/tools/packaging/obs-packaging/download_image.sh b/tools/packaging/obs-packaging/download_image.sh
deleted file mode 100755
index 48f4243a1a..0000000000
--- a/tools/packaging/obs-packaging/download_image.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2019 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-set -o errexit
-set -o nounset
-set -o pipefail
-set -o errtrace
-
-script_dir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
-source "${script_dir}/scripts/obs-docker.sh"
-source "${script_dir}/scripts/pkglib.sh"
-
-handle_error() {
- local exit_code="${?}"
- local line_number="${1:-}"
- echo "Failed at $line_number: ${BASH_COMMAND}"
- exit "${exit_code}"
-}
-trap 'handle_error $LINENO' ERR
-
-die() {
- echo >&2 "ERROR: $*"
- exit 1
-}
-
-BRANCH=${1:-master}
-agent_repository="https://github.com/kata-containers/agent.git"
-kata_version_url="https://raw.githubusercontent.com/kata-containers/runtime/${BRANCH}/VERSION"
-
-echo "Download kata image from branch ${BRANCH}"
-
-if ! version=$(curl -s --fail -L "${kata_version_url}"); then
- die "failed to get version from branch ${BRANCH}"
-fi
-
-if ! out=$(git ls-remote "${agent_repository}"); then
- die "failed to query agent git repo"
-fi
-
-if ! tag_info=$(echo "$out" | grep "${version}^{}"); then
- die "failed to find version info $version: ${out}"
-fi
-
-commit=$(echo "$tag_info" | awk '{print $1}')
-echo "$commit"
-
-agent_repository="github.com/kata-containers/agent"
-tarball_name="kata-containers-${version}-${commit:0:${short_commit_length}}-$(uname -m).tar.gz"
-image_url="https://${agent_repository}/releases/download/${version}/${tarball_name}"
-#curl -OL "${image_url}"
-#tar xvf "${tarball_name}"
diff --git a/tools/packaging/obs-packaging/gen_versions_txt.sh b/tools/packaging/obs-packaging/gen_versions_txt.sh
deleted file mode 100755
index 027a3fe9e3..0000000000
--- a/tools/packaging/obs-packaging/gen_versions_txt.sh
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-[ -z "${DEBUG}" ] || set -x
-set -e
-set -o errexit
-set -o nounset
-set -o pipefail
-
-readonly script_name="$(basename "${BASH_SOURCE[0]}")"
-readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-readonly versions_txt="versions.txt"
-project="kata-containers"
-
-source "${script_dir}/../scripts/lib.sh"
-
-ARCH=${ARCH:-$(arch_to_golang "$(uname -m)")}
-
-get_kata_version() {
- cat "${script_dir}/../../../VERSION"
-}
-
-gen_version_file() {
- local branch="$1"
- local kata_version="$2"
- local ref="refs/heads/${branch}"
-
- if [ "${kata_version}" == "HEAD" ]; then
- kata_version="${branch}"
- ref="refs/heads/${branch}"
- else
- ref="refs/tags/${kata_version}^{}"
- fi
-
- qemu_vanilla_branch=$(get_from_kata_deps "assets.hypervisor.qemu.version" "${kata_version}")
- # Check if qemu.version can be used to get the version and hash, otherwise use qemu.tag
- qemu_vanilla_ref="refs/heads/${qemu_vanilla_branch}"
- if ! (git ls-remote --heads "https://github.com/qemu/qemu.git" | grep -q "refs/heads/${qemu_vanilla_branch}"); then
- qemu_vanilla_branch=$(get_from_kata_deps "assets.hypervisor.qemu.tag" "${kata_version}")
- qemu_vanilla_ref="refs/tags/${qemu_vanilla_branch}^{}"
- fi
- qemu_vanilla_version=$(curl -s -L "https://raw.githubusercontent.com/qemu/qemu/${qemu_vanilla_branch}/VERSION")
- qemu_vanilla_hash=$(git ls-remote https://github.com/qemu/qemu.git | grep "${qemu_vanilla_ref}" | awk '{print $1}')
-
- kernel_version=$(get_from_kata_deps "assets.kernel.version" "${kata_version}")
- #Remove extra 'v'
- kernel_version=${kernel_version#v}
-
- golang_version=$(get_from_kata_deps "languages.golang.meta.newest-version" "${kata_version}")
-
- # - is not a valid char for rpmbuild
- # see https://github.com/semver/semver/issues/145
- kata_version=$(get_kata_version)
- kata_version=${kata_version/-/\~}
- cat > "$versions_txt" <
-
-Generate a ${versions_txt} file, containing version numbers and commit hashes
-of all the kata components under the git branch .
-
-Options:
-
--h, --help Print this help.
---compare Only compare the kata version at branch with the
- one in ${versions_txt} and leave the file untouched.
---head Use 's head to generate the versions file.
-EOT
- exit "${exit_code}"
-}
-
-main() {
- local compareOnly=
- local use_head=
- local use_tag=
-
- case "${1:-}" in
- "-h"|"--help")
- usage
- ;;
- --compare)
- compareOnly=1
- shift
- ;;
- --head)
- use_head=1
- shift
- ;;
- --tag)
- use_tag=1
- shift
- ;;
- -*)
- die "Invalid option: ${1:-}" "1"
- shift
- ;;
- esac
-
- local kata_version=
- if [ -n "$use_tag" ]; then
- if [ -n "${use_head}" ]; then
- die "tag and head options are mutually exclusive"
- fi
-
- # We are generating versions based on the provided tag
- local tag="${1:-}"
- [ -n "${tag}" ] || die "No tag specified" "1"
-
- # use the runtime's repository to determine branch information
- local repo="github.com/kata-containers/kata-containers"
- local repo_dir="kata-containers"
- git clone --quiet "https://${repo}.git" "${repo_dir}"
- pushd "${repo_dir}" >> /dev/null
- local branch=$(git branch -r -q --contains "${tag}" | grep -E "master|stable|2.0-dev" | grep -v HEAD)
-
- popd >> /dev/null
- rm -rf ${repo_dir}
-
- [ -n "${branch}" ] || die "branch for tag ${tag} not found"
-
- # in the event this is on master as well as stable, or multiple stables, just pick the first branch
- # (ie, 1.8.0-alpha0 may live on stable-1.8 as well as master: we'd just use master in this case)
- branch=$(echo ${branch} | awk -F" " '{print $1}')
-
- # format will be origin/ - let's drop origin:
- branch=$(echo ${branch} | awk -F"/" '{print $2}')
-
- echo "generating versions for tag ${tag} which is on branch ${branch}"
- kata_version=${tag}
- else
- local branch="${1:-}"
- [ -n "${branch}" ] || die "No branch specified" "1"
-
- if [ -n "${use_head}" ]; then
- kata_version="HEAD"
- else
- kata_version=$(get_kata_version)
- fi
- fi
-
- if [ -n "$compareOnly" ]; then
- source "./${versions_txt}" || exit 1
- kata_version=${kata_version/\~/-}
- [ -n "${kata_version}" ] || die "${version_file} does not contain a valid kata_version variable"
- # Replacing ~ with -, as - is not a valid char for rpmbuild
- # see https://github.com/semver/semver/issues/145
- [ "$(get_kata_version)" = "${kata_version/\~/-}" ] && compare_result="matches" || compare_result="is different from"
- echo "${kata_version} in ${versions_txt} ${compare_result} the version at branch ${branch}"
- return
- fi
-
- gen_version_file "${branch}" "${kata_version}"
-}
-
-main $@
diff --git a/tools/packaging/obs-packaging/kata-containers-image/LICENSE b/tools/packaging/obs-packaging/kata-containers-image/LICENSE
deleted file mode 100644
index fad5df1720..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/LICENSE
+++ /dev/null
@@ -1,2079 +0,0 @@
-NOTE:
- This license has been obsoleted by the change to the BSD-style copyright.
- You may continue to use this license if you wish, but you are under no
- obligation to do so.
-
-(*
-This document is freely plagiarised from the 'Artistic Licence',
-distributed as part of the Perl v4.0 kit by Larry Wall, which is
-available from most major archive sites. I stole it from CrackLib.
-
- $Id$
-*)
-
-This documents purpose is to state the conditions under which this
-Package (See definition below) viz: "Shadow", the Shadow Password Suite
-which is held by Julianne Frances Haugh, may be copied, such that the
-copyright holder maintains some semblance of artistic control over the
-development of the package, while giving the users of the package the
-right to use and distribute the Package in a more-or-less customary
-fashion, plus the right to make reasonable modifications.
-
-So there.
-
-***************************************************************************
-
-Definitions:
-
-
-A "Package" refers to the collection of files distributed by the
-Copyright Holder, and derivatives of that collection of files created
-through textual modification, or segments thereof.
-
-"Standard Version" refers to such a Package if it has not been modified,
-or has been modified in accordance with the wishes of the Copyright
-Holder.
-
-"Copyright Holder" is whoever is named in the copyright or copyrights
-for the package.
-
-"You" is you, if you're thinking about copying or distributing this
-Package.
-
-"Reasonable copying fee" is whatever you can justify on the basis of
-media cost, duplication charges, time of people involved, and so on.
-(You will not be required to justify it to the Copyright Holder, but
-only to the computing community at large as a market that must bear the
-fee.)
-
-"Freely Available" means that no fee is charged for the item itself,
-though there may be fees involved in handling the item. It also means
-that recipients of the item may redistribute it under the same
-conditions they received it.
-
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated
-disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications
-derived from the Public Domain or from the Copyright Holder. A Package
-modified in such a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way,
-provided that you insert a prominent notice in each changed file stating
-how and when AND WHY you changed that file, and provided that you do at
-least ONE of the following:
-
-a) place your modifications in the Public Domain or otherwise make them
-Freely Available, such as by posting said modifications to Usenet or an
-equivalent medium, or placing the modifications on a major archive site
-such as uunet.uu.net, or by allowing the Copyright Holder to include
-your modifications in the Standard Version of the Package.
-
-b) use the modified Package only within your corporation or organization.
-
-c) rename any non-standard executables so the names do not conflict with
-standard executables, which must also be provided, and provide separate
-documentation for each non-standard executable that clearly documents
-how it differs from the Standard Version.
-
-d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or
-executable form, provided that you do at least ONE of the following:
-
-a) distribute a Standard Version of the executables and library files,
-together with instructions (in the manual page or equivalent) on where
-to get the Standard Version.
-
-b) accompany the distribution with the machine-readable source of the
-Package with your modifications.
-
-c) accompany any non-standard executables with their corresponding
-Standard Version executables, giving the non-standard executables
-non-standard names, and clearly documenting the differences in manual
-pages (or equivalent), together with instructions on where to get the
-Standard Version.
-
-d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this Package.
-YOU MAY NOT CHARGE A FEE FOR THIS PACKAGE ITSELF. However, you may
-distribute this Package in aggregate with other (possibly commercial)
-programs as part of a larger (possibly commercial) software distribution
-provided that YOU DO NOT ADVERTISE this package as a product of your
-own.
-
-6. The name of the Copyright Holder may not be used to endorse or
-promote products derived from this software without specific prior
-written permission.
-
-7. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- The End
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- , 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
-EXT2ED is hereby placed under the terms of the GNU General Public License.
-Follows the GNU license.
-
-Gadi Oxman, August 1995
-
----------------------------------------------------------------------------
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C) 19yy
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-This is the Debian GNU/Linux prepackaged version of the EXT2 file
-system utilities (e2fsck, mke2fs, etc.). The EXT2 utilities were
-written by Theodore Ts'o and Remy Card .
-
-Sources were obtained from http://sourceforge.net/projects/e2fsprogs
-
-Packaging is Copyright (c) 2003-2007 Theodore Ts'o
- Copyright (c) 1997-2003 Yann Dirson
- Copyright (c) 2001 Alcove
- Copyright (c) 1997 Klee Dienes
- Copyright (c) 1995-1996 Michael Nonweiler
-
-Upstream Author: Theodore Ts'o
-
-Copyright notice:
-
-This package, the EXT2 filesystem utilities, are made available under
-the GNU General Public License version 2, with the exception of the
-lib/ext2fs and lib/e2p libraries, which are made available under the
-GNU Library General Public License Version 2, the lib/uuid library
-which is made available under a BSD-style license and the lib/et and
-lib/ss libraries which are made available under an MIT-style license.
-
- Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Theodore Ts'o
-
-On Debian GNU systems, the complete text of the GNU General Public
-License can be found in `/usr/share/common-licenses/GPL-2'. The
-complete text of the GNU Library General Public License can be found
-in '/usr/share/common-licenses/LGPL-2'.
-
-
-The license used for lib/et and lib/ss libraries is:
-
- Copyright 1987 by the Student Information Processing Board
- of the Massachusetts Institute of Technology
-
- Permission to use, copy, modify, and distribute this software and
- its documentation for any purpose is hereby granted, provided that
- the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
- advertising or publicity pertaining to distribution of the software
- without specific, written prior permission. M.I.T. and the
- M.I.T. S.I.P.B. make no representations about the suitability of
- this software for any purpose. It is provided "as is" without
- express or implied warranty.
-
-The license used for lib/uuid is:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, and the entire permission notice in its entirety,
- including the disclaimer of warranties.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
- WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
- OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
- DAMAGE.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, and the entire permission notice in its entirety,
- including the disclaimer of warranties.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
-WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
-OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
diff --git a/tools/packaging/obs-packaging/kata-containers-image/build_image.sh b/tools/packaging/obs-packaging/kata-containers-image/build_image.sh
deleted file mode 100755
index fdd16f6021..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/build_image.sh
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-[ -z "${DEBUG}" ] || set -x
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-readonly script_name="$(basename "${BASH_SOURCE[0]}")"
-readonly script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-readonly tmp_dir=$(mktemp -d -t build-image-tmp.XXXXXXXXXX)
-export GOPATH="${tmp_dir}/go"
-
-export GOPATH=${GOPATH:-${HOME}/go}
-source "${script_dir}/../../scripts/lib.sh"
-source "${script_dir}/../scripts/pkglib.sh"
-
-exit_handler() {
- [ -d "${tmp_dir}" ] && sudo rm -rf "$tmp_dir"
-}
-trap exit_handler EXIT
-
-arch_target="$(uname -m)"
-
-source "${script_dir}/../versions.txt"
-
-readonly destdir="${PWD}"
-
-build_initrd() {
- sudo -E PATH="$PATH" make initrd \
- DISTRO="$initrd_distro" \
- DEBUG="${DEBUG:-}" \
- OS_VERSION="${initrd_os_version}" \
- ROOTFS_BUILD_DEST="${tmp_dir}/initrd-image" \
- USE_DOCKER=1 \
- AGENT_INIT="yes"
-
-}
-
-build_image() {
- sudo -E PATH="${PATH}" make image \
- DISTRO="${img_distro}" \
- DEBUG="${DEBUG:-}" \
- USE_DOCKER="1" \
- IMG_OS_VERSION="${img_os_version}" \
- ROOTFS_BUILD_DEST="${tmp_dir}/rootfs-image"
-}
-
-create_tarball() {
- agent_sha=$(get_repo_hash "${script_dir}")
- #reduce sha size for short names
- agent_sha=${agent_sha:0:${short_commit_length}}
- tarball_name="kata-containers-${kata_version}-${agent_sha}-${arch_target}.tar.gz"
- image_name="kata-containers-image_${img_distro}_${kata_version}_agent_${agent_sha}.img"
- initrd_name="kata-containers-initrd_${initrd_distro}_${kata_version}_agent_${agent_sha}.initrd"
-
- mv "${script_dir}/../../../osbuilder/kata-containers.img" "${image_name}"
- mv "${script_dir}/../../../osbuilder/kata-containers-initrd.img" "${initrd_name}"
- sudo tar cfzv "${tarball_name}" "${initrd_name}" "${image_name}"
-}
-
-usage() {
- return_code=${1:-0}
- cat < : Kata version to build images. Use kata release for
- for agent and osbuilder.
-
-EOT
-
- exit "${return_code}"
-}
-
-main() {
- while getopts "v:h" opt; do
- case "$opt" in
- h) usage 0 ;;
- v) kata_version="${OPTARG}" ;;
- *)
- echo "Invalid option $opt"
- usage 1
- ;;
- esac
- done
-
- install_yq
-
- #image information
- img_distro=$(get_from_kata_deps "assets.image.architecture.${arch_target}.name" "${kata_version}")
- #In old branches this is not defined, use a default
- img_distro=${img_distro:-clearlinux}
- img_os_version=$(get_from_kata_deps "assets.image.architecture.${arch_target}.version" "${kata_version}")
-
- #initrd information
- initrd_distro=$(get_from_kata_deps "assets.initrd.architecture.${arch_target}.name" "${kata_version}")
- #In old branches this is not defined, use a default
- initrd_distro=${initrd_distro:-alpine}
- initrd_os_version=$(get_from_kata_deps "assets.image.architecture.${arch_target}.version" "${kata_version}")
-
- shift "$((OPTIND - 1))"
- pushd "${script_dir}/../../../osbuilder/"
- build_initrd
- build_image
- create_tarball
- cp "${tarball_name}" "${destdir}"
- popd
-}
-
-main $*
diff --git a/tools/packaging/obs-packaging/kata-containers-image/debian.compat b/tools/packaging/obs-packaging/kata-containers-image/debian.compat
deleted file mode 100644
index ec635144f6..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/debian.compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/tools/packaging/obs-packaging/kata-containers-image/debian.control-template b/tools/packaging/obs-packaging/kata-containers-image/debian.control-template
deleted file mode 100644
index fa2dd838df..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/debian.control-template
+++ /dev/null
@@ -1,12 +0,0 @@
-Source: kata-containers-image
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-Build-Depends: debhelper (>= 9), flex, bison
-
-Package: kata-containers-image
-Architecture: @deb_arch@
-Description: Kata containers image
-
diff --git a/tools/packaging/obs-packaging/kata-containers-image/debian.dirs b/tools/packaging/obs-packaging/kata-containers-image/debian.dirs
deleted file mode 100644
index 04732809d8..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/debian.dirs
+++ /dev/null
@@ -1 +0,0 @@
-usr/share/kata-containers
diff --git a/tools/packaging/obs-packaging/kata-containers-image/debian.rules-template b/tools/packaging/obs-packaging/kata-containers-image/debian.rules-template
deleted file mode 100755
index cb842c86c1..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/debian.rules-template
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/bin/make -f
-
-%:
- dh $@
-override_dh_auto_build:
-
-override_dh_auto_install:
- mkdir -p debian/kata-containers-image ; \
- tar xzf /usr/src/packages/SOURCES/kata-containers.tar.gz -C /usr/src/packages/SOURCES/ ; \
- image=$$(find /usr/src/packages/SOURCES/ -type f -name '*.img') ; \
- initrd=$$(find /usr/src/packages/SOURCES/ -type f -name '*.initrd') ; \
- install -m 0400 -D $${image} ./debian/kata-containers-image/usr/share/kata-containers/ ; \
- install -m 0400 -D $${initrd} ./debian/kata-containers-image/usr/share/kata-containers/ ; \
- ln -s /usr/share/kata-containers/$$(basename $${image}) \
- ./debian/kata-containers-image/usr/share/kata-containers/kata-containers.img ; \
- ln -s /usr/share/kata-containers/$$(basename $${initrd}) \
- ./debian/kata-containers-image/usr/share/kata-containers/kata-containers-initrd.img ;
diff --git a/tools/packaging/obs-packaging/kata-containers-image/kata-containers-image.dsc-template b/tools/packaging/obs-packaging/kata-containers-image/kata-containers-image.dsc-template
deleted file mode 100644
index e1b6fec38a..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/kata-containers-image.dsc-template
+++ /dev/null
@@ -1,14 +0,0 @@
-Format: 3.0 (quilt)
-Source: kata-containers-image
-Version: @VERSION@-@RELEASE@
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Build-Depends: debhelper (>= 9), flex, bison
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-Debtransform-Tar: kata-containers.tar.gz
-
-Package: kata-containers-image
-Architecture: @deb_arch@
-Description: Kata containers image
diff --git a/tools/packaging/obs-packaging/kata-containers-image/kata-containers-image.spec-template b/tools/packaging/obs-packaging/kata-containers-image/kata-containers-image.spec-template
deleted file mode 100644
index 16a1f83fc3..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/kata-containers-image.spec-template
+++ /dev/null
@@ -1,43 +0,0 @@
-Name: kata-containers-image
-Version: @VERSION@
-Release: @RELEASE@
-License: Artistic-1.0 and BSD-3-Clause and BSD-4-Clause-UC and GFDL-1.3 and GPL-2.0 and GPL-2.0+ and GPL-3.0 and GPL-3.0+ and LGPL-2.0 and LGPL-2.0+ and LGPL-2.1 and LGPL-3.0+ and MIT and MPL-2.0
-Summary: Kata Containers Image
-Url: https://github.com/kata-containers/osbuilder
-Group: image
-Source0: kata-containers.tar.gz
-Source1: LICENSE
-
-%global debug_package %{nil}
-
-@RPM_PATCH_LIST@
-
-%description
-Kata Containers rootfs image
-
-%prep
-# Patches
-@RPM_APPLY_PATCHES@
-
-%install
-ImageDir=%{buildroot}/usr/share/kata-containers
-mkdir -p ${ImageDir}
-
-pushd %{_sourcedir}
-tar xfz kata-containers.tar.gz
-image=$(find ${PWD} -type f -name '*.img')
-initrd=$(find ${PWD} -type f -name '*.initrd')
-popd
-install -m 0400 -p "${image}" ${ImageDir}/
-install -m 0400 -p "${initrd}" ${ImageDir}/
-ln -s /usr/share/kata-containers/$(basename "${image}") ${ImageDir}/kata-containers.img
-ln -s /usr/share/kata-containers/$(basename "${initrd}") ${ImageDir}/kata-containers-initrd.img
-
-%files
-%if 0%{?suse_version}
-%dir /usr/share/kata-containers
-%endif
-/usr/share/kata-containers/kata-containers-image*.img
-/usr/share/kata-containers/kata-containers.img
-/usr/share/kata-containers/kata-containers-initrd*.initrd
-/usr/share/kata-containers/kata-containers-initrd.img
diff --git a/tools/packaging/obs-packaging/kata-containers-image/update.sh b/tools/packaging/obs-packaging/kata-containers-image/update.sh
deleted file mode 100755
index 3bec565986..0000000000
--- a/tools/packaging/obs-packaging/kata-containers-image/update.sh
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-
-# Automation script to create specs to build kata-containers-image
-# Default image to build is the one specified in file versions.txt
-# located at the root of the repository.
-
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-source ../versions.txt
-source ../scripts/pkglib.sh
-
-SCRIPT_NAME=$0
-SCRIPT_DIR=$(dirname $0)
-PKG_NAME="kata-containers-image"
-VERSION=$kata_osbuilder_version
-
-GENERATED_FILES=(kata-containers-image.spec kata-containers-image.dsc debian.rules debian.control)
-STATIC_FILES=(LICENSE debian.compat debian.dirs kata-containers.tar.gz)
-
-# Parse arguments
-cli "$@"
-
-[ "$VERBOSE" == "true" ] && set -x
-PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/kata-containers-image}
-RELEASE=$(get_obs_pkg_release "${PROJECT_REPO}")
-((RELEASE++))
-
-function check_image() {
- [ ! -f "${SCRIPT_DIR}/kata-containers.tar.gz" ] && die "No kata-containers.tar.gz found!\nUse the build_image.sh script" || echo "Image: OK"
-}
-
-replace_list=(
- "VERSION=$VERSION"
- "RELEASE=$RELEASE"
-)
-
-verify
-rm -rf kata-containers.tar.gz
-image_tarball=$(find . -name 'kata-containers-'"${VERSION/\~/-}"'-'"${kata_agent_hash:0:${short_commit_length}}"'*-*.tar.gz')
-[ -f "${image_tarball}" ] || die "image not found"
-cp "${image_tarball}" kata-containers.tar.gz
-
-check_image
-echo "Verify succeed."
-get_git_info
-#TODO delete me: used by changelog_update
-hash_tag="nocommit"
-changelog_update $VERSION
-generate_files "$SCRIPT_DIR" "${replace_list[@]}"
-build_pkg "${PROJECT_REPO}"
diff --git a/tools/packaging/obs-packaging/linux-container/Makefile.dist.install b/tools/packaging/obs-packaging/linux-container/Makefile.dist.install
deleted file mode 100644
index 21231c7a96..0000000000
--- a/tools/packaging/obs-packaging/linux-container/Makefile.dist.install
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-# Installation variables
-DESTDIR :=
-DEFAULTSDIR := /usr/share/
-PROJECT_DIR := Kata-containers
-VMLINUX := @VMLINUX@
-VMLINUZ := @VMLINUZ@
-
-DESTSYSCONFDIR := $(abspath $(DESTDIR)/$(DEFAULTSDIR)/$(PROJECT_DIR))
-
-
-VMLINUX_DEST := $(abspath $(DESTSYSCONFDIR)/$(VMLINUX))
-VMLINUZ_DEST := $(abspath $(DESTSYSCONFDIR)/$(VMLINUZ))
-
-
-install:
- install -D --owner root --group root --mode 0644 $(VMLINUX) $(VMLINUX_DEST)
- install -D --owner root --group root --mode 0644 $(VMLINUZ) $(VMLINUZ_DEST)
- ln -sf $(VMLINUX_DEST) $(DESTSYSCONFDIR)/vmlinuz.container
- ln -sf $(VMLINUZ_DEST) $(DESTSYSCONFDIR)/vmlinux.container
diff --git a/tools/packaging/obs-packaging/linux-container/_service-template b/tools/packaging/obs-packaging/linux-container/_service-template
deleted file mode 100644
index 8e392891dc..0000000000
--- a/tools/packaging/obs-packaging/linux-container/_service-template
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- https
- cdn.kernel.org
- /pub/linux/kernel/v5.x/linux-@VERSION@.tar.xz
-
-
- _service:download_url:linux-@VERSION@.tar.xz
- sha256
- @KERNEL_SHA256@
-
-
diff --git a/tools/packaging/obs-packaging/linux-container/debian.compat b/tools/packaging/obs-packaging/linux-container/debian.compat
deleted file mode 100644
index ec635144f6..0000000000
--- a/tools/packaging/obs-packaging/linux-container/debian.compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/tools/packaging/obs-packaging/linux-container/debian.control-template b/tools/packaging/obs-packaging/linux-container/debian.control-template
deleted file mode 100644
index eca9471740..0000000000
--- a/tools/packaging/obs-packaging/linux-container/debian.control-template
+++ /dev/null
@@ -1,18 +0,0 @@
-Source: kata-linux-container
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Build-Depends: debhelper (>= 9), cpio, libelf-dev, libnewt-dev, libiberty-dev, rsync, libdw-dev, libpci-dev, pkg-config, flex, bison, libunwind8-dev, openssl, libaudit-dev, bc, python-dev, gawk, autoconf, automake, libtool, libssl-dev
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-
-Package: kata-linux-container
-Architecture: @deb_arch@
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends},
-Description: linux kernel optimised for container-like workloads.
- Linux kernel optimised for container-like workloads
-
-Package: kata-linux-container-debug
-Architecture: @deb_arch@
-Description: Debug components for the kata-linux-container package.
- This package includes the kernel config and the kernel map.
diff --git a/tools/packaging/obs-packaging/linux-container/debian.copyright b/tools/packaging/obs-packaging/linux-container/debian.copyright
deleted file mode 100644
index 6372a6fc96..0000000000
--- a/tools/packaging/obs-packaging/linux-container/debian.copyright
+++ /dev/null
@@ -1,30 +0,0 @@
-This is the Kata containers prepackaged version of the Linux kernel.
-Linux was written by Linus Torvalds
-and others.
-
-This package was put together by the Kata containers team, from
-sources retrieved from upstream linux git.
-The sources may be found at most Linux download websites, including
-https://www.kernel.org/pub/linux/kernel/
-
-This package is currently maintained by the
-Kata containers team /dev/null
- make -s CONFIG_DEBUG_SECTION_MISMATCH=y ARCH=$(KERNEL_ARCH)
-
-override_dh_auto_install:
-
-override_dh_auto_clean:
-
-override_dh_install:
- dh_install
- mkdir -p $(DebugDir)
- mkdir -p $(KernelDir)
- install -m 644 .config $(DebugDir)/config-$(KernelVer)
- install -m 644 System.map $(DebugDir)/System.map-$(KernelVer)
- if [ -n "$(KERNEL_IMAGE)" ]; then \
- cp $$(realpath $(KERNEL_IMAGE)) $(KernelDir)/vmlinuz-$(KernelVer); \
- chmod 755 $(KernelDir)/vmlinuz-$(KernelVer); \
- ln -sf vmlinuz-$(KernelVer) $(KernelDir)/vmlinuz.container; \
- fi
- cp vmlinux $(KernelDir)/vmlinux-$(KernelVer)
- chmod 755 $(KernelDir)/vmlinux-$(KernelVer)
- ln -sf vmlinux-$(KernelVer) $(KernelDir)/vmlinux.container
-
-override_dh_strip:
-
-override_dh_shlibdeps:
diff --git a/tools/packaging/obs-packaging/linux-container/kata-linux-container.dsc-template b/tools/packaging/obs-packaging/linux-container/kata-linux-container.dsc-template
deleted file mode 100644
index 72ec11b312..0000000000
--- a/tools/packaging/obs-packaging/linux-container/kata-linux-container.dsc-template
+++ /dev/null
@@ -1,20 +0,0 @@
-Format: 3.0 (quilt)
-Source: kata-linux-container
-Version: @VERSION@.@CONFIG_VERSION@-@RELEASE@
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Build-Depends: debhelper (>= 9), cpio, libelf-dev, libnewt-dev, libiberty-dev, rsync, libdw-dev, libpci-dev, pkg-config, flex, bison, libunwind8-dev, openssl, libaudit-dev, bc, python-dev, gawk, autoconf, automake, libtool, libssl-dev
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-Debtransform-Tar: linux-@VERSION@.tar.xz
-
-Package: kata-linux-container
-Architecture: @deb_arch@
-Description: linux kernel optimised for container-like workloads.
- Linux kernel optimised for container-like workloads
-
-Package: kata-linux-container-debug
-Architecture: @deb_arch@
-Description: Debug components for the kata-linux-container package.
- This package includes the kernel config and the kernel map.
diff --git a/tools/packaging/obs-packaging/linux-container/kata-linux-container.spec-template b/tools/packaging/obs-packaging/linux-container/kata-linux-container.spec-template
deleted file mode 100644
index 0d0c062df1..0000000000
--- a/tools/packaging/obs-packaging/linux-container/kata-linux-container.spec-template
+++ /dev/null
@@ -1,165 +0,0 @@
-#
-# This is a special configuration of the Linux kernel, aimed exclusively
-# for running inside a container
-# This specialization allows us to optimize memory footprint and boot time.
-#
-
-Name: kata-linux-container
-Version: @VERSION@.@CONFIG_VERSION@
-Release: @RELEASE@
-License: GPL-2.0
-Summary: The Linux kernel optimized for running inside a container
-Group: System/Kernel
-Url: http://www.kernel.org/
-Source0: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-@VERSION@.tar.xz
-Source1: kata-kernel-configs.tar.gz
-Source2: kata-multiarch.sh
-
-%define kversion %{version}-%{release}.container
-
-BuildRequires: bash >= 2.03
-BuildRequires: bc
-BuildRequires: binutils-devel
-
-%if 0%{?rhel_version}
-BuildRequires: elfutils-devel
-%endif
-
-%if 0%{?suse_version}
-BuildRequires: libelf-devel
-BuildRequires: fdupes
-%endif
-
-%if 0%{?fedora} || 0%{?centos} <= 7
-BuildRequires: pkgconfig(libelf)
-%endif
-
-%if 0%{?centos} >= 8
-BuildRequires: elfutils-libelf-devel
-%endif
-
-BuildRequires: make >= 3.78
-BuildRequires: openssl-devel
-BuildRequires: flex
-BuildRequires: bison
-
-# don't strip .ko files!
-%global __os_install_post %{nil}
-%define debug_package %{nil}
-%define __strip /bin/true
-
-# Patches
-@RPM_PATCH_LIST@
-
-%description
-The Linux kernel.
-
-%package debug
-Summary: Debug components for the %{name} package
-Group: System/Kernel
-
-%description debug
-Debug components for the kata-linux-container package.
-This package includes the kernel config and the kernel map.
-
-%prep
-%setup -q -n linux-@VERSION@
-%setup -q -T -D -n linux-@VERSION@ -a 1
-cp %{SOURCE2} .
-chmod +x $(basename %{SOURCE2})
-
-# Patches
-@RPM_APPLY_PATCHES@
-
-%build
-
-BuildKernel() {
- local kernelArch=$(./kata-multiarch.sh -a %{_arch})
- ExtraVer="-%{release}.container"
-
- perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = ${ExtraVer}/" Makefile
-
- make -s mrproper
-
- # Runtime .config selection based on kernelArch
- rm -f .config
- find kata-kernel-configs -name "${kernelArch}_kata_kvm_*" -exec cp {} .config \;
- if [ ! -f .config ]; then
- # Use fragments to generate the .config
- frag_dir="kata-kernel-configs/fragments"
- KCONFIG_CONFIG=.config ARCH=${kernelArch} scripts/kconfig/merge_config.sh -r -n ${frag_dir}/common/*.conf ${frag_dir}/${kernelArch}/*
- fi
- [ -f .config ] || (echo "ERROR: cannot find the kernel config file for the ${kernelArch} architecture"; exit 1)
-
- %if 0%{?rhel_version} || 0%{?suse_version}
- # RHEL in OBS has updated gcc.
- # https://github.com/kata-containers/packaging/pull/370#issuecomment-469620154
- sed -i -e 's/CONFIG_RETPOLINE=y/CONFIG_RETPOLINE=n/g' .config
- %endif
-
- %if 0%{?fedora}
- #Fedora uses gcc 8, build is failing due to warnings.
- export CFLAGS="-Wno-error=restrict"
- export EXTRA_CFLAGS="-Wno-format-truncation -Wno-cast-function-type -Wno-error=restrict -Wno-error"
- %endif
- # https://github.com/kata-containers/packaging/issues/394 enable reproducible builds:
- export KBUILD_BUILD_USER=katabuilduser
- export KBUILD_BUILD_HOST=katabuildhost
- # Default to zero seconds after midnight 1970-01-01 (the epoch)
- export KBUILD_BUILD_TIMESTAMP="$(LANG=C date -u -d "@${SOURCE_DATE_EPOCH:-0}")"
-
- make -s ARCH=$kernelArch oldconfig > /dev/null
- make -s CONFIG_DEBUG_SECTION_MISMATCH=y %{?_smp_mflags} ARCH=$kernelArch %{?sparse_mflags} || exit 1
-}
-
-BuildKernel
-
-%install
-
-InstallKernel() {
- compressedImage=$(./kata-multiarch.sh -i %{_arch})
- rawImage="vmlinux"
- KernelVer=%{kversion}
- KernelDir=%{buildroot}/usr/share/kata-containers
-
- mkdir -p ${KernelDir}
-
- if [ -n "$compressedImage" ]; then
- cp "$compressedImage" ${KernelDir}/vmlinuz-$KernelVer
- chmod 755 ${KernelDir}/vmlinuz-$KernelVer
- ln -sf vmlinuz-$KernelVer ${KernelDir}/vmlinuz.container
- fi
-
- cp $rawImage ${KernelDir}/vmlinux-$KernelVer
- chmod 755 ${KernelDir}/vmlinux-$KernelVer
- ln -sf vmlinux-$KernelVer ${KernelDir}/vmlinux.container
-
- cp .config "${KernelDir}/config-${KernelVer}"
- cp System.map "${KernelDir}/System.map-${KernelVer}"
-
- rm -f %{buildroot}/usr/lib/modules/$KernelVer/build
- rm -f %{buildroot}/usr/lib/modules/$KernelVer/source
-}
-
-InstallKernel
-
-rm -rf %{buildroot}/usr/lib/firmware
-
-%if 0%{?suse_version}
-%fdupes -s %{buildroot}
-%endif
-
-%files
-%dir /usr/share/kata-containers
-/usr/share/kata-containers/vmlinux-%{kversion}
-/usr/share/kata-containers/vmlinux.container
-
-%ifnarch ppc64le
-/usr/share/kata-containers/vmlinuz-%{kversion}
-/usr/share/kata-containers/vmlinuz.container
-%endif
-
-%files debug
-%defattr(-,root,root,-)
-/usr/share/kata-containers/config-%{kversion}
-/usr/share/kata-containers/System.map-%{kversion}
diff --git a/tools/packaging/obs-packaging/linux-container/kata-multiarch.sh b/tools/packaging/obs-packaging/linux-container/kata-multiarch.sh
deleted file mode 100644
index 1a81e6caf0..0000000000
--- a/tools/packaging/obs-packaging/linux-container/kata-multiarch.sh
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-# Convert architecture to the name used by the Linux kernel build system
-arch_to_kernel() {
- local -r arch="$1"
-
- case "${arch}" in
- aarch64) echo "arm64";;
- ppc64le) echo "powerpc";;
- s390|s390x) echo "s390";;
- x86_64) echo "${arch}";;
- *) echo "unsupported architecture: ${arch}" >&2; exit 1;;
- esac
-}
-
-# Convert architecture to the location of the compressed linux image
-arch_to_image() {
- local -r arch="$1"
- case "${arch}" in
- aarch64)
- echo "arch/arm64/boot/Image"
- ;;
- ppc64le)
- # No compressed image
- ;;
- s390|s390x)
- echo "arch/s390/boot/image"
- ;;
- *)
- echo "arch/${arch}/boot/bzImage"
- ;;
- esac
-}
-
-usage() {
- echo "$(basename $0) FLAG ARCHITECTURE"
- echo "Allowed flags:"
- echo " -a : Print kernel architecture"
- echo " -i : Print kernel compressed image location (may be empty)"
-}
-
-if [ "$#" != "2" ]; then
- echo -e "Invalid options\n\n$(usage)" >&2
- exit 1
-fi
-
-case "$1" in
- -a)
- arch_to_kernel $2
- ;;
- -i)
- arch_to_image $2
- ;;
- *)
- echo -e "Invalid options\n\n$(usage)" >&2
- exit 1
- ;;
-esac
diff --git a/tools/packaging/obs-packaging/linux-container/update.sh b/tools/packaging/obs-packaging/linux-container/update.sh
deleted file mode 100755
index 874a039a76..0000000000
--- a/tools/packaging/obs-packaging/linux-container/update.sh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-
-# Automation script to create specs to build Kata containers kernel
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-source ../versions.txt
-source ../scripts/pkglib.sh
-
-SCRIPT_NAME=$0
-SCRIPT_DIR=$(dirname $0)
-
-PKG_NAME="kata-linux-container"
-VERSION=$kernel_version
-KATA_CONFIG_VERSION=$(cat "${SCRIPT_DIR}/../../kernel/kata_config_version")
-
-KR_SERIES="$(echo $VERSION | cut -d "." -f 1).x"
-KR_LTS=$(echo $VERSION | cut -d "." -f 1,2)
-ln -sfT "${SCRIPT_DIR}/../../kernel/patches/${KR_LTS}.x" "${SCRIPT_DIR}/patches"
-
-KR_PATCHES=$(eval find "${SCRIPT_DIR}/patches" -type f -name "*.patch")
-
-KR_REL=https://www.kernel.org/releases.json
-KR_SHA=https://cdn.kernel.org/pub/linux/kernel/v"${KR_SERIES}"/sha256sums.asc
-
-KR_CONFIGS="kata-kernel-configs"
-
-GENERATED_FILES=(kata-linux-container.dsc kata-linux-container.spec _service debian.control ${KR_CONFIGS}.tar.gz)
-STATIC_FILES=(debian.dirs debian.rules debian.compat debian.copyright kata-multiarch.sh)
-#STATIC_FILES+=($KR_PATCHES)
-
-# Parse arguments
-cli "$@"
-
-[ "$VERBOSE" == "true" ] && set -x
-PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/linux-container}
-RELEASE=$(get_obs_pkg_release "${PROJECT_REPO}")
-((RELEASE++))
-
-kernel_sha256=$(curl -L -s -f ${KR_SHA} | awk '/linux-'${VERSION}'.tar.xz/ {print $1}')
-
-# Copy the kernel config files and fragments for all architecture
-mkdir -p configs
-readonly configs_dir="kernel/configs"
-find "${SCRIPT_DIR}/../../${configs_dir}" \( -name "*_kata_kvm_${KR_LTS}.x" -o -name fragments \) -exec tar --transform="s,${configs_dir},${KR_CONFIGS}," -czf ${KR_CONFIGS}.tar.gz {} +
-
-replace_list=(
- "VERSION=${VERSION}"
- "CONFIG_VERSION=${KATA_CONFIG_VERSION}"
- "RELEASE=$RELEASE"
- "KERNEL_SHA256=$kernel_sha256"
-)
-
-verify
-echo "Verify succeed."
-get_git_info
-#TODO delete me: used by changelog_update
-hash_tag="nocommit"
-changelog_update "${VERSION}-${KATA_CONFIG_VERSION}"
-generate_files "$SCRIPT_DIR" "${replace_list[@]}"
-build_pkg "${PROJECT_REPO}"
diff --git a/tools/packaging/obs-packaging/maintainers b/tools/packaging/obs-packaging/maintainers
deleted file mode 100644
index 8def7b51e8..0000000000
--- a/tools/packaging/obs-packaging/maintainers
+++ /dev/null
@@ -1,3 +0,0 @@
-egernst
-jcvenega
-nitkon
diff --git a/tools/packaging/obs-packaging/projectconfig b/tools/packaging/obs-packaging/projectconfig
deleted file mode 100644
index 0663c1b53f..0000000000
--- a/tools/packaging/obs-packaging/projectconfig
+++ /dev/null
@@ -1 +0,0 @@
-ExpandFlags: module:python36-3.6
diff --git a/tools/packaging/obs-packaging/qemu-aarch64/patches/0001-qemu-gather-and-modification-of-the-whole-Eric-Auger.patch b/tools/packaging/obs-packaging/qemu-aarch64/patches/0001-qemu-gather-and-modification-of-the-whole-Eric-Auger.patch
deleted file mode 100644
index 3d54eda4f6..0000000000
--- a/tools/packaging/obs-packaging/qemu-aarch64/patches/0001-qemu-gather-and-modification-of-the-whole-Eric-Auger.patch
+++ /dev/null
@@ -1,1145 +0,0 @@
-From 555d66904a7670f673c74aff5834ef20167786fb Mon Sep 17 00:00:00 2001
-From: anonymous
-Date: Wed, 28 Nov 2018 17:23:15 +0800
-Subject: [PATCH] qemu: gather and modification of the whole Eric Auger's
- PCDIMMM/NVDIMM patch set
-
-This patch set is mainly based on Eric Auger's PCDIMMM/NVDIMM patch set,which
-is located here(https://patchwork.kernel.org/cover/10647305/). In order to rebase
-Eric Auger's patch set on tag/v3.1.0-rc3, we had to do some minor modification,
-including KVM_CAP_ARM_VM_IPA_SIZE inconsistent with linux kernel, etc.
----
- accel/kvm/kvm-all.c | 2 +-
- default-configs/aarch64-softmmu.mak | 2 +
- default-configs/arm-softmmu.mak | 2 +
- hw/acpi/aml-build.c | 50 +++++
- hw/acpi/nvdimm.c | 28 ++-
- hw/arm/boot.c | 120 +++++++++--
- hw/arm/virt-acpi-build.c | 10 +
- hw/arm/virt.c | 300 +++++++++++++++++++++++++---
- hw/i386/pc_piix.c | 8 +-
- hw/i386/pc_q35.c | 8 +-
- hw/ppc/mac_newworld.c | 3 +-
- hw/ppc/mac_oldworld.c | 2 +-
- hw/ppc/spapr.c | 2 +-
- include/hw/acpi/aml-build.h | 3 +
- include/hw/arm/virt.h | 5 +
- include/hw/boards.h | 2 +-
- include/hw/mem/nvdimm.h | 12 ++
- linux-headers/linux/kvm.h | 11 +
- target/arm/kvm.c | 8 +
- target/arm/kvm_arm.h | 16 ++
- vl.c | 6 +-
- 21 files changed, 529 insertions(+), 71 deletions(-)
-
-diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
-index 4880a05399..320a3ece22 100644
---- a/accel/kvm/kvm-all.c
-+++ b/accel/kvm/kvm-all.c
-@@ -1590,7 +1590,7 @@ static int kvm_init(MachineState *ms)
-
- kvm_type = qemu_opt_get(qemu_get_machine_opts(), "kvm-type");
- if (mc->kvm_type) {
-- type = mc->kvm_type(kvm_type);
-+ type = mc->kvm_type(ms, kvm_type);
- } else if (kvm_type) {
- ret = -EINVAL;
- fprintf(stderr, "Invalid argument kvm-type=%s\n", kvm_type);
-diff --git a/default-configs/aarch64-softmmu.mak b/default-configs/aarch64-softmmu.mak
-index 4ea9add003..e43fe23b4b 100644
---- a/default-configs/aarch64-softmmu.mak
-+++ b/default-configs/aarch64-softmmu.mak
-@@ -10,3 +10,5 @@ CONFIG_XLNX_ZYNQMP=y
- CONFIG_XLNX_ZYNQMP_ARM=y
- CONFIG_XLNX_VERSAL=y
- CONFIG_ARM_SMMUV3=y
-+CONFIG_MEM_DEVICE=y
-+CONFIG_DIMM=y
-diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
-index 2420491aac..2f9e57ca41 100644
---- a/default-configs/arm-softmmu.mak
-+++ b/default-configs/arm-softmmu.mak
-@@ -159,3 +159,5 @@ CONFIG_PCI_DESIGNWARE=y
- CONFIG_STRONGARM=y
- CONFIG_HIGHBANK=y
- CONFIG_MUSICPAL=y
-+CONFIG_NVDIMM=y
-+CONFIG_ACPI_NVDIMM=y
-diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
-index 1e43cd736d..62e982b76a 100644
---- a/hw/acpi/aml-build.c
-+++ b/hw/acpi/aml-build.c
-@@ -22,6 +22,7 @@
- #include "qemu/osdep.h"
- #include
- #include "hw/acpi/aml-build.h"
-+#include "hw/mem/memory-device.h"
- #include "qemu/bswap.h"
- #include "qemu/bitops.h"
- #include "sysemu/numa.h"
-@@ -1802,3 +1803,52 @@ build_hdr:
- build_header(linker, tbl, (void *)(tbl->data + fadt_start),
- "FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
- }
-+
-+void build_srat_hotpluggable_memory(GArray *table_data, uint64_t base,
-+ uint64_t len, int default_node)
-+{
-+ MemoryDeviceInfoList *info_list = qmp_memory_device_list();
-+ MemoryDeviceInfoList *info;
-+ MemoryDeviceInfo *mi;
-+ PCDIMMDeviceInfo *di;
-+ uint64_t end = base + len, cur, size;
-+ bool is_nvdimm;
-+ AcpiSratMemoryAffinity *numamem;
-+ MemoryAffinityFlags flags;
-+
-+ for (cur = base, info = info_list;
-+ cur < end;
-+ cur += size, info = info->next) {
-+ numamem = acpi_data_push(table_data, sizeof *numamem);
-+
-+ if (!info) {
-+ build_srat_memory(numamem, cur, end - cur, default_node,
-+ MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED);
-+ break;
-+ }
-+
-+ mi = info->value;
-+ is_nvdimm = (mi->type == MEMORY_DEVICE_INFO_KIND_NVDIMM);
-+ di = !is_nvdimm ? mi->u.dimm.data : mi->u.nvdimm.data;
-+
-+ if (cur < di->addr) {
-+ build_srat_memory(numamem, cur, di->addr - cur, default_node,
-+ MEM_AFFINITY_HOTPLUGGABLE | MEM_AFFINITY_ENABLED);
-+ numamem = acpi_data_push(table_data, sizeof *numamem);
-+ }
-+
-+ size = di->size;
-+
-+ flags = MEM_AFFINITY_ENABLED;
-+ if (di->hotpluggable) {
-+ flags |= MEM_AFFINITY_HOTPLUGGABLE;
-+ }
-+ if (is_nvdimm) {
-+ flags |= MEM_AFFINITY_NON_VOLATILE;
-+ }
-+
-+ build_srat_memory(numamem, di->addr, size, di->node, flags);
-+ }
-+
-+ qapi_free_MemoryDeviceInfoList(info_list);
-+}
-diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
-index e53b2cb681..da68de5535 100644
---- a/hw/acpi/nvdimm.c
-+++ b/hw/acpi/nvdimm.c
-@@ -929,8 +929,8 @@ void nvdimm_init_acpi_state(AcpiNVDIMMState *state, MemoryRegion *io,
- FWCfgState *fw_cfg, Object *owner)
- {
- memory_region_init_io(&state->io_mr, owner, &nvdimm_dsm_ops, state,
-- "nvdimm-acpi-io", NVDIMM_ACPI_IO_LEN);
-- memory_region_add_subregion(io, NVDIMM_ACPI_IO_BASE, &state->io_mr);
-+ "nvdimm-acpi-io", state->dsm_io.len);
-+ memory_region_add_subregion(io, state->dsm_io.base, &state->io_mr);
-
- state->dsm_mem = g_array_new(false, true /* clear */, 1);
- acpi_data_push(state->dsm_mem, sizeof(NvdimmDsmIn));
-@@ -959,12 +959,14 @@ void nvdimm_init_acpi_state(AcpiNVDIMMState *state, MemoryRegion *io,
-
- #define NVDIMM_QEMU_RSVD_UUID "648B9CF2-CDA1-4312-8AD9-49C4AF32BD62"
-
--static void nvdimm_build_common_dsm(Aml *dev)
-+static void nvdimm_build_common_dsm(Aml *dev,
-+ AcpiNVDIMMState *acpi_nvdimm_state)
- {
- Aml *method, *ifctx, *function, *handle, *uuid, *dsm_mem, *elsectx2;
- Aml *elsectx, *unsupport, *unpatched, *expected_uuid, *uuid_invalid;
- Aml *pckg, *pckg_index, *pckg_buf, *field, *dsm_out_buf, *dsm_out_buf_size;
- uint8_t byte_list[1];
-+ AmlRegionSpace rs;
-
- method = aml_method(NVDIMM_COMMON_DSM, 5, AML_SERIALIZED);
- uuid = aml_arg(0);
-@@ -975,9 +977,16 @@ static void nvdimm_build_common_dsm(Aml *dev)
-
- aml_append(method, aml_store(aml_name(NVDIMM_ACPI_MEM_ADDR), dsm_mem));
-
-+ if (acpi_nvdimm_state->dsm_io.type == NVDIMM_ACPI_IO_PORT) {
-+ rs = AML_SYSTEM_IO;
-+ } else {
-+ rs = AML_SYSTEM_MEMORY;
-+ }
-+
- /* map DSM memory and IO into ACPI namespace. */
-- aml_append(method, aml_operation_region(NVDIMM_DSM_IOPORT, AML_SYSTEM_IO,
-- aml_int(NVDIMM_ACPI_IO_BASE), NVDIMM_ACPI_IO_LEN));
-+ aml_append(method, aml_operation_region(NVDIMM_DSM_IOPORT, rs,
-+ aml_int(acpi_nvdimm_state->dsm_io.base),
-+ acpi_nvdimm_state->dsm_io.len));
- aml_append(method, aml_operation_region(NVDIMM_DSM_MEMORY,
- AML_SYSTEM_MEMORY, dsm_mem, sizeof(NvdimmDsmIn)));
-
-@@ -1260,7 +1269,8 @@ static void nvdimm_build_nvdimm_devices(Aml *root_dev, uint32_t ram_slots)
- }
-
- static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data,
-- BIOSLinker *linker, GArray *dsm_dma_arrea,
-+ BIOSLinker *linker,
-+ AcpiNVDIMMState *acpi_nvdimm_state,
- uint32_t ram_slots)
- {
- Aml *ssdt, *sb_scope, *dev;
-@@ -1288,7 +1298,7 @@ static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data,
- */
- aml_append(dev, aml_name_decl("_HID", aml_string("ACPI0012")));
-
-- nvdimm_build_common_dsm(dev);
-+ nvdimm_build_common_dsm(dev, acpi_nvdimm_state);
-
- /* 0 is reserved for root device. */
- nvdimm_build_device_dsm(dev, 0);
-@@ -1307,7 +1317,7 @@ static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data,
- NVDIMM_ACPI_MEM_ADDR);
-
- bios_linker_loader_alloc(linker,
-- NVDIMM_DSM_MEM_FILE, dsm_dma_arrea,
-+ NVDIMM_DSM_MEM_FILE, acpi_nvdimm_state->dsm_mem,
- sizeof(NvdimmDsmIn), false /* high memory */);
- bios_linker_loader_add_pointer(linker,
- ACPI_BUILD_TABLE_FILE, mem_addr_offset, sizeof(uint32_t),
-@@ -1329,7 +1339,7 @@ void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data,
- return;
- }
-
-- nvdimm_build_ssdt(table_offsets, table_data, linker, state->dsm_mem,
-+ nvdimm_build_ssdt(table_offsets, table_data, linker, state,
- ram_slots);
-
- device_list = nvdimm_get_device_list();
-diff --git a/hw/arm/boot.c b/hw/arm/boot.c
-index 586baa9b64..78de9e16b5 100644
---- a/hw/arm/boot.c
-+++ b/hw/arm/boot.c
-@@ -19,6 +19,7 @@
- #include "sysemu/numa.h"
- #include "hw/boards.h"
- #include "hw/loader.h"
-+#include "hw/mem/memory-device.h"
- #include "elf.h"
- #include "sysemu/device_tree.h"
- #include "qemu/config-file.h"
-@@ -418,6 +419,66 @@ static void set_kernel_args_old(const struct arm_boot_info *info,
- }
- }
-
-+static int fdt_add_memory_node(void *fdt, uint32_t acells, hwaddr mem_base,
-+ uint32_t scells, hwaddr mem_len,
-+ int numa_node_id)
-+{
-+ char *nodename = NULL;
-+ int ret;
-+
-+ nodename = g_strdup_printf("/memory@%" PRIx64, mem_base);
-+ qemu_fdt_add_subnode(fdt, nodename);
-+ qemu_fdt_setprop_string(fdt, nodename, "device_type", "memory");
-+ ret = qemu_fdt_setprop_sized_cells(fdt, nodename, "reg", acells, mem_base,
-+ scells, mem_len);
-+ if (ret < 0) {
-+ fprintf(stderr, "couldn't set %s/reg\n", nodename);
-+ goto out;
-+ }
-+ if (numa_node_id < 0) {
-+ goto out;
-+ }
-+
-+ ret = qemu_fdt_setprop_cell(fdt, nodename, "numa-node-id", numa_node_id);
-+ if (ret < 0) {
-+ fprintf(stderr, "couldn't set %s/numa-node-id\n", nodename);
-+ }
-+
-+out:
-+ g_free(nodename);
-+ return ret;
-+}
-+
-+static int fdt_add_pmem_node(void *fdt, uint32_t acells, hwaddr mem_base,
-+ uint32_t scells, hwaddr mem_len,
-+ int numa_node_id)
-+{
-+ char *nodename = NULL;
-+ int ret;
-+
-+ nodename = g_strdup_printf("/pmem@%" PRIx64, mem_base);
-+ qemu_fdt_add_subnode(fdt, nodename);
-+ qemu_fdt_setprop_string(fdt, nodename, "compatible", "pmem-region");
-+ ret = qemu_fdt_setprop_sized_cells(fdt, nodename, "reg", acells, mem_base,
-+ scells, mem_len);
-+ if (ret < 0) {
-+ fprintf(stderr, "couldn't set %s/reg\n", nodename);
-+ goto out;
-+ }
-+ if (numa_node_id < 0) {
-+ goto out;
-+ }
-+
-+ ret = qemu_fdt_setprop_cell(fdt, nodename, "numa-node-id", numa_node_id);
-+ if (ret < 0) {
-+ fprintf(stderr, "couldn't set %s/numa-node-id\n", nodename);
-+ }
-+
-+out:
-+ g_free(nodename);
-+ return ret;
-+}
-+
- static void fdt_add_psci_node(void *fdt)
- {
- uint32_t cpu_suspend_fn;
-@@ -491,13 +552,41 @@ static void fdt_add_psci_node(void *fdt)
- qemu_fdt_setprop_cell(fdt, "/psci", "migrate", migrate_fn);
- }
-
-+static int fdt_add_hotpluggable_memory_nodes(void *fdt,
-+ uint32_t acells, uint32_t scells) {
-+ MemoryDeviceInfoList *info, *info_list = qmp_memory_device_list();
-+ MemoryDeviceInfo *mi;
-+ PCDIMMDeviceInfo *di;
-+ bool is_nvdimm;
-+ int ret = 0;
-+
-+ for (info = info_list; info != NULL; info = info->next) {
-+ mi = info->value;
-+ is_nvdimm = (mi->type == MEMORY_DEVICE_INFO_KIND_NVDIMM);
-+ di = !is_nvdimm ? mi->u.dimm.data : mi->u.nvdimm.data;
-+
-+ if (is_nvdimm) {
-+ ret = fdt_add_pmem_node(fdt, acells, di->addr,
-+ scells, di->size, di->node);
-+ } else {
-+ ret = fdt_add_memory_node(fdt, acells, di->addr,
-+ scells, di->size, di->node);
-+ }
-+ if (ret < 0) {
-+ goto out;
-+ }
-+ }
-+out:
-+ qapi_free_MemoryDeviceInfoList(info_list);
-+ return ret;
-+}
-+
- int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
- hwaddr addr_limit, AddressSpace *as)
- {
- void *fdt = NULL;
- int size, rc, n = 0;
- uint32_t acells, scells;
-- char *nodename;
- unsigned int i;
- hwaddr mem_base, mem_len;
- char **node_path;
-@@ -571,35 +660,26 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
- mem_base = binfo->loader_start;
- for (i = 0; i < nb_numa_nodes; i++) {
- mem_len = numa_info[i].node_mem;
-- nodename = g_strdup_printf("/memory@%" PRIx64, mem_base);
-- qemu_fdt_add_subnode(fdt, nodename);
-- qemu_fdt_setprop_string(fdt, nodename, "device_type", "memory");
-- rc = qemu_fdt_setprop_sized_cells(fdt, nodename, "reg",
-- acells, mem_base,
-- scells, mem_len);
-+ rc = fdt_add_memory_node(fdt, acells, mem_base,
-+ scells, mem_len, i);
- if (rc < 0) {
-- fprintf(stderr, "couldn't set %s/reg for node %d\n", nodename,
-- i);
- goto fail;
- }
-
-- qemu_fdt_setprop_cell(fdt, nodename, "numa-node-id", i);
- mem_base += mem_len;
-- g_free(nodename);
- }
- } else {
-- nodename = g_strdup_printf("/memory@%" PRIx64, binfo->loader_start);
-- qemu_fdt_add_subnode(fdt, nodename);
-- qemu_fdt_setprop_string(fdt, nodename, "device_type", "memory");
--
-- rc = qemu_fdt_setprop_sized_cells(fdt, nodename, "reg",
-- acells, binfo->loader_start,
-- scells, binfo->ram_size);
-+ rc = fdt_add_memory_node(fdt, acells, binfo->loader_start,
-+ scells, binfo->ram_size, -1);
- if (rc < 0) {
-- fprintf(stderr, "couldn't set %s reg\n", nodename);
- goto fail;
- }
-- g_free(nodename);
-+ }
-+
-+ rc = fdt_add_hotpluggable_memory_nodes(fdt, acells, scells);
-+ if (rc < 0) {
-+ fprintf(stderr, "couldn't add hotpluggable memory nodes\n");
-+ goto fail;
- }
-
- rc = fdt_path_offset(fdt, "/chosen");
-diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
-index 5785fb697c..dc100dd4c0 100644
---- a/hw/arm/virt-acpi-build.c
-+++ b/hw/arm/virt-acpi-build.c
-@@ -545,6 +545,7 @@ build_srat(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
- int i, srat_start;
- uint64_t mem_base;
- MachineClass *mc = MACHINE_GET_CLASS(vms);
-+ MachineState *ms = MACHINE(vms);
- const CPUArchIdList *cpu_list = mc->possible_cpu_arch_ids(MACHINE(vms));
-
- srat_start = table_data->len;
-@@ -570,6 +571,9 @@ build_srat(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
- }
- }
-
-+ build_srat_hotpluggable_memory(table_data, ms->device_memory->base,
-+ ms->device_memory->mr.size, 0);
-+
- build_header(linker, table_data, (void *)(table_data->data + srat_start),
- "SRAT", table_data->len - srat_start, 3, NULL, NULL);
- }
-@@ -804,6 +808,7 @@ static
- void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
- {
- VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
-+ MachineState *ms = MACHINE(vms);
- GArray *table_offsets;
- unsigned dsdt, xsdt;
- GArray *tables_blob = tables->table_data;
-@@ -844,6 +849,11 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
- }
- }
-
-+ if (vms->acpi_nvdimm_state.is_enabled) {
-+ nvdimm_build_acpi(table_offsets, tables_blob, tables->linker,
-+ &vms->acpi_nvdimm_state, ms->ram_slots);
-+ }
-+
- if (its_class_name() && !vmc->no_its) {
- acpi_add_table(table_offsets, tables_blob);
- build_iort(tables_blob, tables->linker, vms);
-diff --git a/hw/arm/virt.c b/hw/arm/virt.c
-index a2b8d8f7c2..f83fce1089 100644
---- a/hw/arm/virt.c
-+++ b/hw/arm/virt.c
-@@ -59,6 +59,9 @@
- #include "qapi/visitor.h"
- #include "standard-headers/linux/input.h"
- #include "hw/arm/smmuv3.h"
-+#include "hw/acpi/acpi.h"
-+#include "hw/mem/pc-dimm.h"
-+#include "hw/mem/nvdimm.h"
-
- #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \
- static void virt_##major##_##minor##_class_init(ObjectClass *oc, \
-@@ -94,34 +97,29 @@
-
- #define PLATFORM_BUS_NUM_IRQS 64
-
--/* RAM limit in GB. Since VIRT_MEM starts at the 1GB mark, this means
-- * RAM can go up to the 256GB mark, leaving 256GB of the physical
-- * address space unallocated and free for future use between 256G and 512G.
-- * If we need to provide more RAM to VMs in the future then we need to:
-- * * allocate a second bank of RAM starting at 2TB and working up
-- * * fix the DT and ACPI table generation code in QEMU to correctly
-- * report two split lumps of RAM to the guest
-- * * fix KVM in the host kernel to allow guests with >40 bit address spaces
-- * (We don't want to fill all the way up to 512GB with RAM because
-- * we might want it for non-RAM purposes later. Conversely it seems
-- * reasonable to assume that anybody configuring a VM with a quarter
-- * of a terabyte of RAM will be doing it on a host with more than a
-- * terabyte of physical address space.)
-- */
--#define RAMLIMIT_GB 255
--#define RAMLIMIT_BYTES (RAMLIMIT_GB * 1024ULL * 1024 * 1024)
-+#define SZ_1G (1024ULL * 1024 * 1024)
-+#define SZ_64K 0x10000
-+
-+/* device memory starts at 2TB */
-+#define DEVICE_MEM_BASE (2048 * SZ_1G)
-+#define DEVICE_MEM_SIZE (4096 * SZ_1G)
-
- /* Addresses and sizes of our components.
-- * 0..128MB is space for a flash device so we can run bootrom code such as UEFI.
-- * 128MB..256MB is used for miscellaneous device I/O.
-- * 256MB..1GB is reserved for possible future PCI support (ie where the
-- * PCI memory window will go if we add a PCI host controller).
-- * 1GB and up is RAM (which may happily spill over into the
-- * high memory region beyond 4GB).
-- * This represents a compromise between how much RAM can be given to
-- * a 32 bit VM and leaving space for expansion and in particular for PCI.
-- * Note that devices should generally be placed at multiples of 0x10000,
-+ * 0..128MB is space for a flash device so we can run bootrom code such as UEFI,
-+ * 128MB..256MB is used for miscellaneous device I/O,
-+ * 256MB..1GB is used for PCI host controller,
-+ * 1GB..256GB is RAM (not hotpluggable),
-+ * 256GB..512GB: is left for device I/O (non RAM purpose),
-+ * 512GB..1TB: high mem PCI MMIO region,
-+ * 2TB..6TB is used for device memory (assumes dynamic IPA setting on kernel).
-+ *
-+ * Note that IO devices should generally be placed at multiples of 0x10000,
- * to accommodate guests using 64K pages.
-+ *
-+ * Conversely it seems reasonable to assume that anybody configuring a VM
-+ * with a quarter of a terabyte of RAM will be doing it on a host with more
-+ * than a terabyte of physical address space.)
-+ *
- */
- static const MemMapEntry a15memmap[] = {
- /* Space up to 0x8000000 is reserved for a boot ROM */
-@@ -143,6 +141,7 @@ static const MemMapEntry a15memmap[] = {
- [VIRT_GPIO] = { 0x09030000, 0x00001000 },
- [VIRT_SECURE_UART] = { 0x09040000, 0x00001000 },
- [VIRT_SMMU] = { 0x09050000, 0x00020000 },
-+ [VIRT_ACPI_IO] = { 0x09070000, 0x00010000 },
- [VIRT_MMIO] = { 0x0a000000, 0x00000200 },
- /* ...repeating for a total of NUM_VIRTIO_TRANSPORTS, each of that size */
- [VIRT_PLATFORM_BUS] = { 0x0c000000, 0x02000000 },
-@@ -150,12 +149,14 @@ static const MemMapEntry a15memmap[] = {
- [VIRT_PCIE_MMIO] = { 0x10000000, 0x2eff0000 },
- [VIRT_PCIE_PIO] = { 0x3eff0000, 0x00010000 },
- [VIRT_PCIE_ECAM] = { 0x3f000000, 0x01000000 },
-- [VIRT_MEM] = { 0x40000000, RAMLIMIT_BYTES },
-+ [VIRT_MEM] = { SZ_1G , 255 * SZ_1G },
- /* Additional 64 MB redist region (can contain up to 512 redistributors) */
- [VIRT_GIC_REDIST2] = { 0x4000000000ULL, 0x4000000 },
- [VIRT_PCIE_ECAM_HIGH] = { 0x4010000000ULL, 0x10000000 },
- /* Second PCIe window, 512GB wide at the 512GB boundary */
-- [VIRT_PCIE_MMIO_HIGH] = { 0x8000000000ULL, 0x8000000000ULL },
-+ [VIRT_PCIE_MMIO_HIGH] = { 512 * SZ_1G, 512 * SZ_1G },
-+ /* device memory beyond 2TB */
-+ [VIRT_DEVICE_MEM] = { DEVICE_MEM_BASE, DEVICE_MEM_SIZE },
- };
-
- static const int a15irqmap[] = {
-@@ -1261,6 +1262,51 @@ static void create_secure_ram(VirtMachineState *vms,
- g_free(nodename);
- }
-
-+static void create_device_memory(VirtMachineState *vms, MemoryRegion *sysmem)
-+{
-+ VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
-+ MachineClass *mc = MACHINE_GET_CLASS(vms);
-+ MachineState *ms = MACHINE(vms);
-+ uint64_t device_memory_size = ms->maxram_size - ms->ram_size;
-+ uint64_t align = SZ_64K;
-+
-+ if (!device_memory_size) {
-+ return;
-+ }
-+
-+ if (vmc->no_device_memory) {
-+ error_report("Machine %s does not support device memory: "
-+ "maxmem option not supported", mc->name);
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ if (ms->ram_slots > ACPI_MAX_RAM_SLOTS) {
-+ error_report("unsupported number of memory slots: %"PRIu64,
-+ ms->ram_slots);
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ if (QEMU_ALIGN_UP(ms->maxram_size, align) != ms->maxram_size) {
-+ error_report("maximum memory size must be aligned to multiple of 0x%"
-+ PRIx64, align);
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ if (device_memory_size > vms->memmap[VIRT_DEVICE_MEM].size) {
-+ error_report("unsupported amount of maximum memory: " RAM_ADDR_FMT,
-+ ms->maxram_size);
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ ms->device_memory = g_malloc0(sizeof(*ms->device_memory));
-+ ms->device_memory->base = vms->memmap[VIRT_DEVICE_MEM].base;
-+
-+ memory_region_init(&ms->device_memory->mr, OBJECT(vms),
-+ "device-memory", device_memory_size);
-+ memory_region_add_subregion(sysmem, ms->device_memory->base,
-+ &ms->device_memory->mr);
-+}
-+
- static void *machvirt_dtb(const struct arm_boot_info *binfo, int *fdt_size)
- {
- const VirtMachineState *board = container_of(binfo, VirtMachineState,
-@@ -1434,7 +1480,8 @@ static void machvirt_init(MachineState *machine)
- vms->smp_cpus = smp_cpus;
-
- if (machine->ram_size > vms->memmap[VIRT_MEM].size) {
-- error_report("mach-virt: cannot model more than %dGB RAM", RAMLIMIT_GB);
-+ error_report("mach-virt: cannot model more than %dGB RAM",
-+ (int)(vms->memmap[VIRT_MEM].size / SZ_1G));
- exit(1);
- }
-
-@@ -1529,6 +1576,8 @@ static void machvirt_init(MachineState *machine)
- machine->ram_size);
- memory_region_add_subregion(sysmem, vms->memmap[VIRT_MEM].base, ram);
-
-+ create_device_memory(vms, sysmem);
-+
- create_flash(vms, sysmem, secure_sysmem ? secure_sysmem : sysmem);
-
- create_gic(vms, pic);
-@@ -1561,6 +1610,18 @@ static void machvirt_init(MachineState *machine)
-
- create_platform_bus(vms, pic);
-
-+ if (vms->acpi_nvdimm_state.is_enabled) {
-+ AcpiNVDIMMState *acpi_nvdimm_state = &vms->acpi_nvdimm_state;
-+
-+ acpi_nvdimm_state->dsm_io.type = NVDIMM_ACPI_IO_MEMORY;
-+ acpi_nvdimm_state->dsm_io.base =
-+ vms->memmap[VIRT_ACPI_IO].base + NVDIMM_ACPI_IO_BASE;
-+ acpi_nvdimm_state->dsm_io.len = NVDIMM_ACPI_IO_LEN;
-+
-+ nvdimm_init_acpi_state(acpi_nvdimm_state, sysmem,
-+ vms->fw_cfg, OBJECT(vms));
-+ }
-+
- vms->bootinfo.ram_size = machine->ram_size;
- vms->bootinfo.kernel_filename = machine->kernel_filename;
- vms->bootinfo.kernel_cmdline = machine->kernel_cmdline;
-@@ -1687,6 +1748,47 @@ static void virt_set_iommu(Object *obj, const char *value, Error **errp)
- }
- }
-
-+static bool virt_get_nvdimm(Object *obj, Error **errp)
-+{
-+ VirtMachineState *vms = VIRT_MACHINE(obj);
-+
-+ return vms->acpi_nvdimm_state.is_enabled;
-+}
-+
-+static void virt_set_nvdimm(Object *obj, bool value, Error **errp)
-+{
-+ VirtMachineState *vms = VIRT_MACHINE(obj);
-+
-+ vms->acpi_nvdimm_state.is_enabled = value;
-+}
-+
-+static char *virt_get_nvdimm_persistence(Object *obj, Error **errp)
-+{
-+ VirtMachineState *vms = VIRT_MACHINE(obj);
-+
-+ return g_strdup(vms->acpi_nvdimm_state.persistence_string);
-+}
-+
-+static void virt_set_nvdimm_persistence(Object *obj, const char *value,
-+ Error **errp)
-+{
-+ VirtMachineState *vms = VIRT_MACHINE(obj);
-+ AcpiNVDIMMState *nvdimm_state = &vms->acpi_nvdimm_state;
-+
-+ if (strcmp(value, "cpu") == 0)
-+ nvdimm_state->persistence = 3;
-+ else if (strcmp(value, "mem-ctrl") == 0)
-+ nvdimm_state->persistence = 2;
-+ else {
-+ error_report("-machine nvdimm-persistence=%s: unsupported option",
-+ value);
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ g_free(nvdimm_state->persistence_string);
-+ nvdimm_state->persistence_string = g_strdup(value);
-+}
-+
- static CpuInstanceProperties
- virt_cpu_index_to_props(MachineState *ms, unsigned cpu_index)
- {
-@@ -1725,6 +1827,59 @@ static const CPUArchIdList *virt_possible_cpu_arch_ids(MachineState *ms)
- return ms->possible_cpus;
- }
-
-+static void virt_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev,
-+ Error **errp)
-+{
-+ const bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM);
-+ VirtMachineState *vms = VIRT_MACHINE(hotplug_dev);
-+
-+ if (dev->hotplugged) {
-+ error_setg(errp, "memory hotplug is not supported");
-+ }
-+
-+ if (is_nvdimm && !vms->acpi_nvdimm_state.is_enabled) {
-+ error_setg(errp, "nvdimm is not enabled: missing 'nvdimm' in '-M'");
-+ return;
-+ }
-+
-+ pc_dimm_pre_plug(PC_DIMM(dev), MACHINE(hotplug_dev), NULL, errp);
-+}
-+
-+static void virt_memory_plug(HotplugHandler *hotplug_dev,
-+ DeviceState *dev, Error **errp)
-+{
-+ VirtMachineState *vms = VIRT_MACHINE(hotplug_dev);
-+ bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM);
-+ Error *local_err = NULL;
-+
-+ pc_dimm_plug(PC_DIMM(dev), MACHINE(vms), &local_err);
-+ if (local_err) {
-+ goto out;
-+ }
-+
-+ if (is_nvdimm) {
-+ nvdimm_plug(&vms->acpi_nvdimm_state);
-+ }
-+
-+out:
-+ error_propagate(errp, local_err);
-+}
-+
-+static void virt_memory_unplug(HotplugHandler *hotplug_dev,
-+ DeviceState *dev, Error **errp)
-+{
-+ pc_dimm_unplug(PC_DIMM(dev), MACHINE(hotplug_dev));
-+ object_unparent(OBJECT(dev));
-+}
-+
-+static void virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
-+ DeviceState *dev, Error **errp)
-+{
-+ if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
-+ virt_memory_pre_plug(hotplug_dev, dev, errp);
-+ }
-+}
-+
- static void virt_machine_device_plug_cb(HotplugHandler *hotplug_dev,
- DeviceState *dev, Error **errp)
- {
-@@ -1736,18 +1891,65 @@ static void virt_machine_device_plug_cb(HotplugHandler *hotplug_dev,
- SYS_BUS_DEVICE(dev));
- }
- }
-+ if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
-+ virt_memory_plug(hotplug_dev, dev, errp);
-+ }
-+}
-+
-+static void virt_machine_device_unplug_cb(HotplugHandler *hotplug_dev,
-+ DeviceState *dev, Error **errp)
-+{
-+ if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) {
-+ virt_memory_unplug(hotplug_dev, dev, errp);
-+ } else {
-+ error_setg(errp, "device unplug request for unsupported device"
-+ " type: %s", object_get_typename(OBJECT(dev)));
-+ }
- }
-
- static HotplugHandler *virt_machine_get_hotplug_handler(MachineState *machine,
- DeviceState *dev)
- {
-- if (object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE)) {
-+ if (object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE) ||
-+ (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM))) {
- return HOTPLUG_HANDLER(machine);
- }
-
- return NULL;
- }
-
-+/*
-+ * for arm64 kvm_type [7-0] encodes the IPA size shift
-+ */
-+static inline int virt_kvm_type(MachineState *ms, const char *type_str)
-+{
-+ int max_vm_phys_shift = kvm_arm_get_max_vm_phys_shift(ms);
-+ ram_addr_t device_mem_size = ms->maxram_size - ms->ram_size;
-+ uint8_t requested_vm_phys_shift;
-+
-+ if (!device_mem_size) {
-+ return 0; /* default 40b IPA */
-+ }
-+
-+ /* we need at least 42b IPA to fit device memory at 2TB*/
-+ if (max_vm_phys_shift < 42) {
-+ error_report("This host does not support 42b IPA: "
-+ "maxram/slots options not usable");
-+ exit(1);
-+ }
-+
-+ requested_vm_phys_shift = 64 - clz64(DEVICE_MEM_BASE + device_mem_size);
-+
-+ if (requested_vm_phys_shift > max_vm_phys_shift) {
-+ error_report("maxmem option value too large. Max supported value "
-+ "for this host is 0x%"PRIx64,
-+ (ram_addr_t)((1ULL << max_vm_phys_shift) - DEVICE_MEM_BASE));
-+ exit(1);
-+ }
-+
-+ return requested_vm_phys_shift;
-+}
-+
- static void virt_machine_class_init(ObjectClass *oc, void *data)
- {
- MachineClass *mc = MACHINE_CLASS(oc);
-@@ -1772,9 +1974,12 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
- mc->cpu_index_to_instance_props = virt_cpu_index_to_props;
- mc->default_cpu_type = ARM_CPU_TYPE_NAME("cortex-a15");
- mc->get_default_cpu_node_id = virt_get_default_cpu_node_id;
-+ mc->kvm_type = virt_kvm_type;
- assert(!mc->get_hotplug_handler);
- mc->get_hotplug_handler = virt_machine_get_hotplug_handler;
-+ hc->pre_plug = virt_machine_device_pre_plug_cb;
- hc->plug = virt_machine_device_plug_cb;
-+ hc->unplug = virt_machine_device_unplug_cb;
- }
-
- static const TypeInfo virt_machine_info = {
-@@ -1796,7 +2001,7 @@ static void machvirt_machine_init(void)
- }
- type_init(machvirt_machine_init);
-
--static void virt_3_1_instance_init(Object *obj)
-+static void virt_3_2_instance_init(Object *obj)
- {
- VirtMachineState *vms = VIRT_MACHINE(obj);
- VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
-@@ -1862,14 +2067,47 @@ static void virt_3_1_instance_init(Object *obj)
- "Valid values are none and smmuv3",
- NULL);
-
-+ object_property_add_bool(obj, "nvdimm",
-+ virt_get_nvdimm, virt_set_nvdimm, NULL);
-+ object_property_set_description(obj, "nvdimm",
-+ "Set on/off to enable/disable NVDIMM "
-+ "instantiation", NULL);
-+
-+ object_property_add_str(obj, "nvdimm-persistence",
-+ virt_get_nvdimm_persistence,
-+ virt_set_nvdimm_persistence, NULL);
-+ object_property_set_description(obj, "nvdimm-persistence",
-+ "Set NVDIMM persistence"
-+ "Valid values are cpu and mem-ctrl", NULL);
-+
- vms->memmap = a15memmap;
- vms->irqmap = a15irqmap;
- }
-
-+static void virt_machine_3_2_options(MachineClass *mc)
-+{
-+}
-+DEFINE_VIRT_MACHINE_AS_LATEST(3, 2)
-+
-+static void virt_3_1_instance_init(Object *obj)
-+{
-+ virt_3_2_instance_init(obj);
-+}
-+
- static void virt_machine_3_1_options(MachineClass *mc)
- {
-+ VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
-+
-+ virt_machine_3_2_options(mc);
-+
-+ /*
-+ * Device memory and capability to set the max IPA address shift
-+ * are enabled from 3.2 onwards
-+ */
-+ vmc->no_device_memory = true;
-+ mc->kvm_type = NULL;
- }
--DEFINE_VIRT_MACHINE_AS_LATEST(3, 1)
-+DEFINE_VIRT_MACHINE(3, 1)
-
- #define VIRT_COMPAT_3_0 \
- HW_COMPAT_3_0
-diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
-index 7092d6d13f..23fb635eeb 100644
---- a/hw/i386/pc_piix.c
-+++ b/hw/i386/pc_piix.c
-@@ -297,7 +297,13 @@ static void pc_init1(MachineState *machine,
- }
-
- if (pcms->acpi_nvdimm_state.is_enabled) {
-- nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
-+ AcpiNVDIMMState *acpi_nvdimm_state = &pcms->acpi_nvdimm_state;
-+
-+ acpi_nvdimm_state->dsm_io.type = NVDIMM_ACPI_IO_PORT;
-+ acpi_nvdimm_state->dsm_io.base = NVDIMM_ACPI_IO_BASE;
-+ acpi_nvdimm_state->dsm_io.len = NVDIMM_ACPI_IO_LEN;
-+
-+ nvdimm_init_acpi_state(acpi_nvdimm_state, system_io,
- pcms->fw_cfg, OBJECT(pcms));
- }
- }
-diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
-index 4702bb13c4..5046d4d386 100644
---- a/hw/i386/pc_q35.c
-+++ b/hw/i386/pc_q35.c
-@@ -277,7 +277,13 @@ static void pc_q35_init(MachineState *machine)
- pc_nic_init(pcmc, isa_bus, host_bus);
-
- if (pcms->acpi_nvdimm_state.is_enabled) {
-- nvdimm_init_acpi_state(&pcms->acpi_nvdimm_state, system_io,
-+ AcpiNVDIMMState *acpi_nvdimm_state = &pcms->acpi_nvdimm_state;
-+
-+ acpi_nvdimm_state->dsm_io.type = NVDIMM_ACPI_IO_PORT;
-+ acpi_nvdimm_state->dsm_io.base = NVDIMM_ACPI_IO_BASE;
-+ acpi_nvdimm_state->dsm_io.len = NVDIMM_ACPI_IO_LEN;
-+
-+ nvdimm_init_acpi_state(acpi_nvdimm_state, system_io,
- pcms->fw_cfg, OBJECT(pcms));
- }
- }
-diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
-index 14273a123e..65daa94330 100644
---- a/hw/ppc/mac_newworld.c
-+++ b/hw/ppc/mac_newworld.c
-@@ -570,8 +570,7 @@ static char *core99_fw_dev_path(FWPathProvider *p, BusState *bus,
-
- return NULL;
- }
--
--static int core99_kvm_type(const char *arg)
-+static int core99_kvm_type(MachineState *ms, const char *arg)
- {
- /* Always force PR KVM */
- return 2;
-diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
-index 9891c325a9..67cbd06b0f 100644
---- a/hw/ppc/mac_oldworld.c
-+++ b/hw/ppc/mac_oldworld.c
-@@ -422,7 +422,7 @@ static char *heathrow_fw_dev_path(FWPathProvider *p, BusState *bus,
- return NULL;
- }
-
--static int heathrow_kvm_type(const char *arg)
-+static int heathrow_kvm_type(MachineState *ms, const char *arg)
- {
- /* Always force PR KVM */
- return 2;
-diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
-index 7afd1a175b..e78959f233 100644
---- a/hw/ppc/spapr.c
-+++ b/hw/ppc/spapr.c
-@@ -2845,7 +2845,7 @@ static void spapr_machine_init(MachineState *machine)
- }
- }
-
--static int spapr_kvm_type(const char *vm_type)
-+static int spapr_kvm_type(MachineState *ms, const char *vm_type)
- {
- if (!vm_type) {
- return 0;
-diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
-index 6c36903c0a..4c2ca134ee 100644
---- a/include/hw/acpi/aml-build.h
-+++ b/include/hw/acpi/aml-build.h
-@@ -416,4 +416,7 @@ void build_slit(GArray *table_data, BIOSLinker *linker);
-
- void build_fadt(GArray *tbl, BIOSLinker *linker, const AcpiFadtData *f,
- const char *oem_id, const char *oem_table_id);
-+
-+void build_srat_hotpluggable_memory(GArray *table_data, uint64_t base,
-+ uint64_t len, int default_node);
- #endif
-diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
-index 4cc57a7ef6..974a110a38 100644
---- a/include/hw/arm/virt.h
-+++ b/include/hw/arm/virt.h
-@@ -37,6 +37,7 @@
- #include "hw/arm/arm.h"
- #include "sysemu/kvm.h"
- #include "hw/intc/arm_gicv3_common.h"
-+#include "hw/mem/nvdimm.h"
-
- #define NUM_GICV2M_SPIS 64
- #define NUM_VIRTIO_TRANSPORTS 32
-@@ -80,6 +81,8 @@ enum {
- VIRT_GPIO,
- VIRT_SECURE_UART,
- VIRT_SECURE_MEM,
-+ VIRT_DEVICE_MEM,
-+ VIRT_ACPI_IO,
- };
-
- typedef enum VirtIOMMUType {
-@@ -101,6 +104,7 @@ typedef struct {
- bool claim_edge_triggered_timers;
- bool smbios_old_sys_ver;
- bool no_highmem_ecam;
-+ bool no_device_memory;
- } VirtMachineClass;
-
- typedef struct {
-@@ -126,6 +130,7 @@ typedef struct {
- uint32_t msi_phandle;
- uint32_t iommu_phandle;
- int psci_conduit;
-+ AcpiNVDIMMState acpi_nvdimm_state;
- } VirtMachineState;
-
- #define VIRT_ECAM_ID(high) (high ? VIRT_PCIE_ECAM_HIGH : VIRT_PCIE_ECAM)
-diff --git a/include/hw/boards.h b/include/hw/boards.h
-index f82f28468b..8bc015fb7c 100644
---- a/include/hw/boards.h
-+++ b/include/hw/boards.h
-@@ -172,7 +172,7 @@ struct MachineClass {
- void (*init)(MachineState *state);
- void (*reset)(void);
- void (*hot_add_cpu)(const int64_t id, Error **errp);
-- int (*kvm_type)(const char *arg);
-+ int (*kvm_type)(MachineState *ms, const char *arg);
-
- BlockInterfaceType block_default_type;
- int units_per_default_bus;
-diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h
-index c5c9b3c7f8..af8a5fd034 100644
---- a/include/hw/mem/nvdimm.h
-+++ b/include/hw/mem/nvdimm.h
-@@ -123,6 +123,17 @@ struct NvdimmFitBuffer {
- };
- typedef struct NvdimmFitBuffer NvdimmFitBuffer;
-
-+typedef enum {
-+ NVDIMM_ACPI_IO_PORT,
-+ NVDIMM_ACPI_IO_MEMORY,
-+} AcpiNVDIMMIOType;
-+
-+typedef struct AcpiNVDIMMIOEntry {
-+ AcpiNVDIMMIOType type;
-+ hwaddr base;
-+ hwaddr len;
-+} AcpiNVDIMMIOEntry;
-+
- struct AcpiNVDIMMState {
- /* detect if NVDIMM support is enabled. */
- bool is_enabled;
-@@ -140,6 +151,7 @@ struct AcpiNVDIMMState {
- */
- int32_t persistence;
- char *persistence_string;
-+ AcpiNVDIMMIOEntry dsm_io;
- };
- typedef struct AcpiNVDIMMState AcpiNVDIMMState;
-
-diff --git a/linux-headers/linux/kvm.h b/linux-headers/linux/kvm.h
-index f11a7eb49c..f9ad70c296 100644
---- a/linux-headers/linux/kvm.h
-+++ b/linux-headers/linux/kvm.h
-@@ -757,6 +757,16 @@ struct kvm_ppc_resize_hpt {
-
- #define KVM_S390_SIE_PAGE_OFFSET 1
-
-+/*
-+ * On arm64, machine type can be used to request the physical
-+ * address size for the VM. Bits[7-0] are reserved for the guest
-+ * PA size shift (i.e, log2(PA_Size)). For backward compatibility,
-+ * value 0 implies the default IPA size, 40bits.
-+ */
-+#define KVM_VM_TYPE_ARM_IPA_SIZE_MASK 0xffULL
-+#define KVM_VM_TYPE_ARM_IPA_SIZE(x) \
-+ ((x) & KVM_VM_TYPE_ARM_IPA_SIZE_MASK)
-+
- /*
- * ioctls for /dev/kvm fds:
- */
-@@ -965,6 +975,7 @@ struct kvm_ppc_resize_hpt {
- #define KVM_CAP_COALESCED_PIO 162
- #define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163
- #define KVM_CAP_EXCEPTION_PAYLOAD 164
-+#define KVM_CAP_ARM_VM_IPA_SIZE 165 /* returns maximum IPA bits for a VM */
-
- #ifdef KVM_CAP_IRQ_ROUTING
-
-diff --git a/target/arm/kvm.c b/target/arm/kvm.c
-index 44dd0ce6ce..1efa5c96bc 100644
---- a/target/arm/kvm.c
-+++ b/target/arm/kvm.c
-@@ -18,6 +18,7 @@
- #include "qemu/error-report.h"
- #include "sysemu/sysemu.h"
- #include "sysemu/kvm.h"
-+#include "sysemu/kvm_int.h"
- #include "kvm_arm.h"
- #include "cpu.h"
- #include "trace.h"
-@@ -162,6 +163,13 @@ void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu)
- env->features = arm_host_cpu_features.features;
- }
-
-+int kvm_arm_get_max_vm_phys_shift(MachineState *ms)
-+{
-+ KVMState *s = KVM_STATE(ms->accelerator);
-+
-+ return kvm_check_extension(s, KVM_CAP_ARM_VM_IPA_SIZE);
-+}
-+
- int kvm_arch_init(MachineState *ms, KVMState *s)
- {
- /* For ARM interrupt delivery is always asynchronous,
-diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h
-index 6393455b1d..5969c41f83 100644
---- a/target/arm/kvm_arm.h
-+++ b/target/arm/kvm_arm.h
-@@ -207,6 +207,17 @@ bool kvm_arm_get_host_cpu_features(ARMHostCPUFeatures *ahcf);
- */
- void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu);
-
-+/**
-+ * kvm_arm_get_max_vm_phys_shift - Returns log2 of the max IPA size
-+ * supported by KVM
-+ *
-+ * @ms: Machine state handle
-+ *
-+ * Return the max number of IPA bits or a negative value if
-+ * the host kernel does not expose this value.
-+ */
-+int kvm_arm_get_max_vm_phys_shift(MachineState *ms);
-+
- /**
- * kvm_arm_sync_mpstate_to_kvm
- * @cpu: ARMCPU
-@@ -239,6 +250,11 @@ static inline void kvm_arm_set_cpu_features_from_host(ARMCPU *cpu)
- cpu->host_cpu_probe_failed = true;
- }
-
-+static inline int kvm_arm_get_max_vm_phys_shift(MachineState *ms)
-+{
-+ return -ENOENT;
-+}
-+
- static inline int kvm_arm_vgic_probe(void)
- {
- return 0;
-diff --git a/vl.c b/vl.c
-index fa25d1ae2d..b52192318f 100644
---- a/vl.c
-+++ b/vl.c
-@@ -4303,6 +4303,9 @@ int main(int argc, char **argv, char **envp)
- qemu_opt_foreach(machine_opts, machine_set_property, current_machine,
- &error_fatal);
-
-+ current_machine->ram_size = ram_size;
-+ current_machine->maxram_size = maxram_size;
-+ current_machine->ram_slots = ram_slots;
- configure_accelerator(current_machine);
-
- if (!qtest_enabled() && machine_class->deprecation_reason) {
-@@ -4499,9 +4502,6 @@ int main(int argc, char **argv, char **envp)
- replay_checkpoint(CHECKPOINT_INIT);
- qdev_machine_init();
-
-- current_machine->ram_size = ram_size;
-- current_machine->maxram_size = maxram_size;
-- current_machine->ram_slots = ram_slots;
- current_machine->boot_order = boot_order;
-
- /* parse features once if machine provides default cpu_type */
---
-2.17.1
-
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/_service-template b/tools/packaging/obs-packaging/qemu-vanilla/_service-template
deleted file mode 100644
index d2547c0a47..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/_service-template
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- git
- https://github.com/qemu/qemu.git
- .git
- qemu-vanilla
-
- @VERSION@+git.%h
- @QEMU_VANILLA_HASH@
-
-
- *.tar*
- gz
-
-
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/debian.compat b/tools/packaging/obs-packaging/qemu-vanilla/debian.compat
deleted file mode 100644
index ec635144f6..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/debian.compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/debian.control-template b/tools/packaging/obs-packaging/qemu-vanilla/debian.control-template
deleted file mode 100644
index 5a4d30d0fb..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/debian.control-template
+++ /dev/null
@@ -1,13 +0,0 @@
-Source: qemu-vanilla
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Build-Depends: debhelper (>= 9), cpio, libelf-dev, rsync, libdw-dev, pkg-config, flex, bison, libaudit-dev, bc, python3-dev, gawk, autoconf, automake, libtool, libltdl-dev, libglib2.0-dev, libglib2.0-0, libcap-dev, libcap-ng-dev, libattr1-dev, m4, libnuma-dev, zlib1g-dev, libpixman-1-0, libpixman-1-dev, libselinux1-dev, libffi-dev, libmount-dev, libblkid-dev
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-
-Package: qemu-vanilla
-Architecture: @deb_arch@
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends},
-Description: linux kernel optimised for container-like workloads.
- Linux kernel optimised for container-like workloads
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/debian.rules-template b/tools/packaging/obs-packaging/qemu-vanilla/debian.rules-template
deleted file mode 100644
index ed162ba222..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/debian.rules-template
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/make -f
-include /usr/share/dpkg/default.mk
-export LANG=C
-%:
- dh $@
-
-override_dh_auto_configure:
- chmod a+x "../SOURCES/configure-hypervisor.sh"
- eval "../SOURCES/configure-hypervisor.sh" "qemu-vanilla" | sed -e 's/--enable-libpmem//g' | xargs ./configure --prefix=/usr
-override_dh_auto_build:
- make
-
-override_dh_auto_install:
- dh_auto_install
- for file in $(CURDIR)/debian/qemu-vanilla/usr/bin/* ; do \
- dir=$$(dirname $$file) ;\
- bin=$$(basename $$file) ;\
- new=$$(echo $$bin | sed -e 's/qemu-/qemu-vanilla-/g' -e 's/ivshmem-/ivshmem-vanilla-/g' -e 's/virtfs-/virtfs-vanilla-/g') ;\
- mv $$file "$$dir"/"$$new" ; \
- done
-
-override_dh_auto_test:
- echo "Skip auto test"
-
-override_dh_auto_clean:
- echo "Skip auto clean"
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla-rpmlintrc b/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla-rpmlintrc
deleted file mode 100644
index 9c3c26fb58..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla-rpmlintrc
+++ /dev/null
@@ -1 +0,0 @@
-setBadness('arch-dependent-file-in-usr-share', 0)
\ No newline at end of file
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla.dsc-template b/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla.dsc-template
deleted file mode 100644
index b5261bb2e2..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla.dsc-template
+++ /dev/null
@@ -1,16 +0,0 @@
-Format: 3.0 (quilt)
-Source: qemu-vanilla
-Version: @VERSION@+git.@QEMU_VANILLA_HASH@-@RELEASE@
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Build-Depends: debhelper (>= 9), cpio, libelf-dev, rsync, libdw-dev, pkg-config, flex, bison, libaudit-dev, bc, python3-dev, gawk, autoconf, automake, libtool, libltdl-dev, libglib2.0-dev, libglib2.0-0, libcap-dev, libcap-ng-dev, libattr1-dev, m4, libnuma-dev, zlib1g-dev, libpixman-1-0, libpixman-1-dev, librbd-dev, libselinux1-dev, libffi-dev, libmount-dev, libblkid-dev
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-Debtransform-Tar: qemu-vanilla-@VERSION@+git.@QEMU_VANILLA_HASH@.tar.gz
-
-Package: qemu-vanilla
-Architecture: @deb_arch@
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends},
-Description: QEMU is a generic and open source machine & userspace emulator and
-virtualizer.
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template b/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template
deleted file mode 100644
index 84fa6f33ed..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/qemu-vanilla.spec-template
+++ /dev/null
@@ -1,135 +0,0 @@
-%global qemu_vanilla_hash @QEMU_VANILLA_HASH@
-Name: qemu-vanilla
-Version: @VERSION@+git.%{qemu_vanilla_hash}
-Release: @RELEASE@
-Source0: %{name}-%{version}.tar.gz
-Source1: qemu-vanilla-rpmlintrc
-Source2: configure-hypervisor.sh
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}
-
-Summary : OpenBIOS development utilities
-Group : Development/Tools
-License : BSD-2-Clause and BSD-3-Clause and GPL-2.0 and GPL-2.0+ and LGPL-2.0+ and LGPL-2.1
-
-Requires: qemu-vanilla-bin
-Requires: qemu-vanilla-data
-BuildRequires : automake
-BuildRequires : bc
-BuildRequires : bison
-BuildRequires : flex
-BuildRequires : gcc-c++
-BuildRequires : glib2-devel
-BuildRequires : libattr-devel
-BuildRequires : libcap-devel
-BuildRequires : libcap-ng-devel
-BuildRequires : libtool
-BuildRequires : libtool-ltdl-devel
-BuildRequires : libtool
-BuildRequires : m4
-BuildRequires : findutils
-
-%if 0%{?centos_version}
-BuildRequires : librbd1-devel
-BuildRequires : libmount
-%else
-
-%if ! 0%{?rhel_version}
-BuildRequires : librbd-devel
-%endif
-
-BuildRequires : libselinux-devel
-BuildRequires : libffi-devel
-BuildRequires : libmount-devel
-BuildRequires : libblkid-devel
-
-%endif
-
-%if 0%{?suse_version}
-BuildRequires : libnuma-devel
-%else
-BuildRequires : numactl-devel
-%endif
-
-BuildRequires : python3
-BuildRequires : python3-devel
-BuildRequires : zlib-devel
-BuildRequires : pkgconfig(pixman-1)
-BuildRequires : libpmem-devel
-
-# Patches
-@RPM_PATCH_LIST@
-
-%description
-===========
-QEMU is a generic and open source machine & userspace emulator and
-virtualizer.
-
-%package bin
-Summary: Bin components for the qemu-vanilla package
-Group: Binaries
-Requires: qemu-vanilla-data
-
-%description bin
-bin components for the qemu-vanilla package.
-
-
-%package data
-Summary: Data components for the qemu-vanilla package
-Group: Data
-
-%description data
-data components for the qemu-vanilla package.
-
-%global debug_package %{nil}
-
-%prep
-chmod +x %{_sourcedir}/configure-hypervisor.sh
-
-%setup -q
-# Patches
-@RPM_APPLY_PATCHES@
-
-%build
-export LANG=C
-
-# RHEL in OBS does not provide librados.
-# Remove it: See https://github.com/kata-containers/packaging/issues/36
-"%{_sourcedir}/configure-hypervisor.sh" "qemu-vanilla" \
-%if 0%{?rhel_version}
- | sed -e 's/--enable-rbd//g' \
-%endif
- | xargs ./configure --prefix=/usr
-
-make V=1 %{?_smp_mflags}
-
-%install
-rm -rf %{buildroot}
-#%make_install
-make install DESTDIR=%{buildroot}
-## make_install_append content
-for file in %{buildroot}/usr/bin/*
-do
- dir=$(dirname "$file")
- bin=$(basename "$file")
- new=$(echo "$bin"|sed -e 's/qemu-/qemu-vanilla-/g' -e 's/ivshmem-/ivshmem-vanilla-/g' -e 's/virtfs-/virtfs-vanilla-/g')
- mv "$file" "$dir/$new"
-done
-## make_install_append end
-
-%files
-%defattr(-,root,root,-)
-
-%files bin
-%defattr(-,root,root,-)
-%exclude /usr/bin/qemu-vanilla-ga
-%exclude /usr/bin/qemu-vanilla-pr-helper
-/usr/bin/qemu-vanilla-system-*
-%exclude /usr/bin/virtfs-vanilla-proxy-helper
-%exclude %dir /usr/libexec
-%exclude %dir /usr/libexec/qemu-vanilla
-%exclude /usr/libexec/qemu-vanilla/qemu-bridge-helper
-
-%files data
-%defattr(-,root,root,-)
-%dir /usr/share/qemu-vanilla
-/usr/share/qemu-vanilla/*
diff --git a/tools/packaging/obs-packaging/qemu-vanilla/update.sh b/tools/packaging/obs-packaging/qemu-vanilla/update.sh
deleted file mode 100755
index 542f1503df..0000000000
--- a/tools/packaging/obs-packaging/qemu-vanilla/update.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-
-# Automation script to create specs to build kata containers kernel
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-source ../versions.txt
-source ../scripts/pkglib.sh
-
-SCRIPT_NAME=$0
-SCRIPT_DIR=$(dirname $0)
-PKG_NAME="qemu-vanilla"
-VERSION=$qemu_vanilla_version
-
-PATCHES_VERSION="$(echo $VERSION | cut -d "." -f 1,2).x"
-ln -sfT "${SCRIPT_DIR}/../../qemu/patches/${PATCHES_VERSION}" "${SCRIPT_DIR}/patches"
-
-GENERATED_FILES=(qemu-vanilla.dsc qemu-vanilla.spec debian.rules _service debian.control)
-STATIC_FILES=(debian.compat "${SCRIPT_DIR}/../../scripts/configure-hypervisor.sh" qemu-vanilla-rpmlintrc)
-
-# Parse arguments
-cli "$@"
-
-[ "$VERBOSE" == "true" ] && set -x
-PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/qemu-vanilla}
-RELEASE=$(get_obs_pkg_release "${PROJECT_REPO}")
-((RELEASE++))
-
-set_versions "${qemu_vanilla_hash}"
-
-replace_list=(
- "VERSION=$VERSION"
- "RELEASE=$RELEASE"
- "QEMU_VANILLA_HASH=${qemu_vanilla_hash:0:${short_commit_length}}"
-)
-
-verify
-echo "Verify succeed."
-get_git_info
-changelog_update $VERSION
-generate_files "$SCRIPT_DIR" "${replace_list[@]}"
-build_pkg "${PROJECT_REPO}"
diff --git a/tools/packaging/obs-packaging/runtime/_service-template b/tools/packaging/obs-packaging/runtime/_service-template
deleted file mode 100644
index c4bbd5af4c..0000000000
--- a/tools/packaging/obs-packaging/runtime/_service-template
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- git
- https://github.com/kata-containers/kata-containers.git
- kata-runtime
-
- @VERSION@
- @HASH@
-
-
- *.tar*
- gz
-
-
- https
- storage.googleapis.com
- golang/go@GO_VERSION@.linux-@GO_ARCH@.tar.gz
-
-
- _service:download_url:go@GO_VERSION@.linux-@GO_ARCH@.tar.gz
- sha256
- @GO_CHECKSUM@
-
-
diff --git a/tools/packaging/obs-packaging/runtime/debian.compat b/tools/packaging/obs-packaging/runtime/debian.compat
deleted file mode 100644
index ec635144f6..0000000000
--- a/tools/packaging/obs-packaging/runtime/debian.compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/tools/packaging/obs-packaging/runtime/debian.control-template b/tools/packaging/obs-packaging/runtime/debian.control-template
deleted file mode 100644
index 8a7024577b..0000000000
--- a/tools/packaging/obs-packaging/runtime/debian.control-template
+++ /dev/null
@@ -1,17 +0,0 @@
-Source: kata-runtime
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Standards-Version: 3.9.6
-Homepage: https://katacontainers.io
-Build-Depends: dh-make, git, ca-certificates, execstack, devscripts, debhelper,
- build-essential, dh-autoreconf, make
-
-Package: kata-runtime
-Architecture: @deb_arch@
-Depends: kata-containers-image (= @kata_osbuilder_version_release@),
- kata-linux-container (= @linux_container_version_release@),
- qemu-vanilla(= @qemu_vanilla_version_release@)
-Description:
- An Open Containers Initiative (OCI) "runtime" that launches an Intel VT-x
- secured Kata Containers hypervisor, rather than a standard Linux container.
diff --git a/tools/packaging/obs-packaging/runtime/debian.rules-template b/tools/packaging/obs-packaging/runtime/debian.rules-template
deleted file mode 100644
index df49ff6e3d..0000000000
--- a/tools/packaging/obs-packaging/runtime/debian.rules-template
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/make -f
-export DH_VERBOSE = 1
-export PKG_NAME=kata-runtime
-export DOMAIN=github.com
-export ORG=kata-containers
-export PROJECT=runtime
-export IMPORTNAME=$(DOMAIN)/$(ORG)/$(PROJECT)
-export DH_GOPKG:=$(IMPORTNAME)
-export DEB_BUILD_OPTIONS=nocheck
-export PATH:=/usr/src/packages/BUILD/local/go/bin:$(PATH)
-export GOPATH=/usr/src/packages/BUILD/go
-export GOROOT=/usr/src/packages/BUILD/local/go
-export DH_OPTIONS
-
-export DEFAULT_QEMU=qemu-vanilla-system-x86_64
-
-GO_VERSION=@GO_VERSION@
-
-%:
- dh $@
-
-override_dh_auto_clean:
-
-override_dh_auto_build:
- mkdir -p /usr/src/packages/BUILD/local/
- mkdir -p /usr/src/packages/BUILD/go/src/$(DOMAIN)/$(ORG)/
- tar xzf /usr/src/packages/SOURCES/go$(GO_VERSION).linux-@GO_ARCH@.tar.gz -C /usr/src/packages/BUILD/local
- ln -s /usr/src/packages/BUILD /usr/src/packages/BUILD/go/src/$(IMPORTNAME)
- cd $(GOPATH)/src/$(IMPORTNAME)/; \
- make \
- QEMUCMD=$(DEFAULT_QEMU) \
- COMMIT=@HASH@ \
- SKIP_GO_VERSION_CHECK=1
-
-override_dh_auto_install:
- mkdir -p debian/$(PKG_NAME)
-
- cd $(GOPATH)/src/$(IMPORTNAME)/; \
- make install \
- DESTDIR=$(shell pwd)/debian/$(PKG_NAME)/ \
- PREFIX=/usr \
- COMMIT=@HASH@ \
- QEMUCMD=$(DEFAULT_QEMU) \
- SKIP_GO_VERSION_CHECK=1
-
- sed -i -e '/^initrd =/d' $(shell pwd)/debian/$(PKG_NAME)/usr/share/defaults/kata-containers/configuration.toml
diff --git a/tools/packaging/obs-packaging/runtime/kata-runtime.dsc-template b/tools/packaging/obs-packaging/runtime/kata-runtime.dsc-template
deleted file mode 100644
index cf749ee84b..0000000000
--- a/tools/packaging/obs-packaging/runtime/kata-runtime.dsc-template
+++ /dev/null
@@ -1,22 +0,0 @@
-Format: 3.0 (quilt)
-Source: kata-runtime
-# Version is expected to be started with a digit following by an alphanumeric string
-# e.g. 1.0.0+git.1234567-1
-Version: @VERSION@-@RELEASE@
-Section: devel
-Priority: optional
-Maintainer: Kata containers team
-Standards-Version: 3.9.6
-Build-Depends: dh-make, git, ca-certificates, execstack, fakeroot, devscripts, debhelper,
- build-essential, dh-autoreconf, make
-Homepage: https://katacontainers.io
-Debtransform-Tar: kata-runtime-@VERSION@.tar.gz
-
-Package: kata-runtime
-Architecture: @deb_arch@
-Depends: kata-containers-image (= @kata_osbuilder_version_release@),
- kata-linux-container (= @linux_container_version_release@),
- qemu-vanilla(= @qemu_vanilla_version_release@)
-Description:
- An Open Containers Initiative (OCI) "runtime" that launches an Intel VT-x
- secured Kata Containers hypervisor, rather than a standard Linux container.
diff --git a/tools/packaging/obs-packaging/runtime/kata-runtime.spec-template b/tools/packaging/obs-packaging/runtime/kata-runtime.spec-template
deleted file mode 100644
index 7600b6ffde..0000000000
--- a/tools/packaging/obs-packaging/runtime/kata-runtime.spec-template
+++ /dev/null
@@ -1,97 +0,0 @@
-%global DOMAIN github.com
-%global ORG kata-containers
-%global PROJECT runtime
-%global IMPORTNAME %{DOMAIN}/%{ORG}/%{PROJECT}
-%global GO_VERSION @GO_VERSION@
-
-%global DEFAULT_QEMU qemu-vanilla-system-x86_64
-
-%define LIBEXECDIR /usr/libexec
-
-%undefine _missing_build_ids_terminate_build
-%define debug_package %{nil}
-
-Name: kata-runtime
-# Version is expected to be started with a digit following by an alphanumeric string
-# e.g. 1.0.0+git.1234567
-Version: @VERSION@
-Release: @RELEASE@
-Source0: %{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-Summary : No detailed summary available
-Group : Development/Tools
-License : Apache-2.0
-
-BuildRequires: git
-
-Requires: kata-containers-image = @kata_osbuilder_version@
-Requires: kata-linux-container = @linux_container_version@
-Requires: qemu-vanilla = @qemu_vanilla_version@
-
-# Patches
-@RPM_PATCH_LIST@
-
-%description
-.. contents::
-.. sectnum::
-``kata-runtime``
-===================
-Overview
---------
-
-%prep
-mkdir local
-tar -C local -xzf ../SOURCES/go%{GO_VERSION}.linux-@GO_ARCH@.tar.gz
-%autosetup -N -S git
-# Patches
-@RPM_APPLY_PATCHES@
-
-
-%build
-export GOROOT=$HOME/rpmbuild/BUILD/local/go
-export PATH=$PATH:$HOME/rpmbuild/BUILD/local/go/bin
-export GOPATH=$HOME/rpmbuild/BUILD/go/
-
-mkdir -p $HOME/rpmbuild/BUILD/go/src/%{DOMAIN}/%{ORG}
-ln -s $HOME/rpmbuild/BUILD/kata-runtime-%{version} $HOME/rpmbuild/BUILD/go/src/%{IMPORTNAME}
-cd $HOME/rpmbuild/BUILD/go/src/%{IMPORTNAME}
-make \
- QEMUCMD=%{DEFAULT_QEMU} \
- COMMIT=@HASH@ \
- SKIP_GO_VERSION_CHECK=1
-
-%check
-export http_proxy=http://127.0.0.1:9/
-export https_proxy=http://127.0.0.1:9/
-export no_proxy=localhost
-
-%install
-
-export GOROOT=$HOME/rpmbuild/BUILD/local/go
-export PATH=$PATH:$HOME/rpmbuild/BUILD/local/go/bin
-export GOPATH=$HOME/rpmbuild/BUILD/go/
-
-cd $HOME/rpmbuild/BUILD/go/src/%{IMPORTNAME}
-make \
- DESTDIR=%{buildroot} \
- PREFIX=/usr \
- QEMUCMD=%{DEFAULT_QEMU} \
- COMMIT=@HASH@ \
- SKIP_GO_VERSION_CHECK=1 \
- install
-sed -i -e '/^initrd =/d' %{buildroot}/usr/share/defaults/kata-containers/configuration.toml
-
-%files
-%defattr(-,root,root,-)
-/usr/bin/kata-runtime
-/usr/bin/containerd-shim-kata-v2
-%{LIBEXECDIR}
-%{LIBEXECDIR}/kata-containers
-%{LIBEXECDIR}/kata-containers/kata-netmon
-/usr/bin/kata-collect-data.sh
-/usr/share/defaults/
-/usr/share/defaults/kata-containers/
-/usr/share/defaults/kata-containers/configuration*.toml
-/usr/share/bash-completion
-/usr/share/bash-completion/completions
-/usr/share/bash-completion/completions/kata-runtime
diff --git a/tools/packaging/obs-packaging/runtime/update.sh b/tools/packaging/obs-packaging/runtime/update.sh
deleted file mode 100755
index 08718993f6..0000000000
--- a/tools/packaging/obs-packaging/runtime/update.sh
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
-#
-# Automation script to create specs to build kata-runtime
-# Default: Build is the one specified in file configure.ac
-# located at the root of the repository.
-[ -z "${DEBUG}" ] || set -o xtrace
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-source ../versions.txt
-source ../scripts/pkglib.sh
-
-SCRIPT_NAME=$0
-SCRIPT_DIR=$(dirname "$0")
-replace_list=()
-
-# Package information
-# Used by pkglib.sh
-export PKG_NAME="kata-runtime"
-VERSION=$kata_runtime_version
-
-# Used by pkglib
-export GENERATED_FILES=(kata-runtime.spec kata-runtime.dsc debian.control debian.rules _service)
-# Used by pkglib
-export STATIC_FILES=(debian.compat)
-
-#cli flags
-LOCAL_BUILD=false
-OBS_PUSH=false
-VERBOSE=false
-
-#
-# Given the name of a package returns the full package version to be used for
-# DEB and RPM dependency constraints as follows, composed of:
-# - a version,
-# - an optional hash (only for select packages),
-# - a release number (only for "deb" packages)
-#
-pkg_required_ver() {
- local pkg="$1"
- local versionVar="${pkg}_version"
- local hashVar="${pkg}_hash"
- local version=$(echo ${!versionVar})
- local gitHash=
-
- # Make pkg match the package name on OBS
- pkg="${pkg#kata_}"
- pkg="${pkg//_/-}"
- pkg="${pkg//osbuilder/kata-containers-image}"
- pkg="${pkg//kernel/linux-container}"
-
- if [ -n "${PROJECT_REPO:-}" ]; then
- local proj="${PROJECT_REPO%/runtime}"
- else
- local proj="home:${OBS_PROJECT}:${OBS_SUBPROJECT}"
- fi
- local release="$(get_obs_pkg_release "${proj}/${pkg//_/-}")"
-
- case "$pkg" in
- linux-container)
- version="${version}.$(cat "${SCRIPT_DIR}/../../kernel/kata_config_version")"
- ;;
- qemu-*)
- gitHash=$(echo ${!hashVar}})
- ;;
- esac
-
- local debVer=$(pkg_version "$version" "$release" "$gitHash")
- local rpmVer=$(pkg_version "$version" "" "$gitHash")
-
- echo "${debVer}" "${rpmVer}"
-}
-
-
-# Parse arguments
-cli "$@"
-
-[ "$VERBOSE" == "true" ] && set -x
-
-declare -a pkgVersions
-# Package depedencies
-info "Requires:"
-declare -A KERNEL_REQUIRED_VERSION
-pkgVersions=($(pkg_required_ver "kernel"))
-KERNEL_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
-KERNEL_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
-info "kata-linux-container ${KERNEL_REQUIRED_VERSION[@]}"
-
-declare -A KATA_IMAGE_REQUIRED_VERSION
-pkgVersions=($(pkg_required_ver "kata_osbuilder"))
-KATA_IMAGE_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
-KATA_IMAGE_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
-info "image ${KATA_IMAGE_REQUIRED_VERSION[@]}"
-
-declare -A KATA_QEMU_VANILLA_REQUIRED_VERSION
-pkgVersions=($(pkg_required_ver "qemu_vanilla"))
-KATA_QEMU_VANILLA_REQUIRED_VERSION["deb"]=${pkgVersions[0]}
-KATA_QEMU_VANILLA_REQUIRED_VERSION["rpm"]=${pkgVersions[1]}
-info "qemu-vanilla ${KATA_QEMU_VANILLA_REQUIRED_VERSION[@]}"
-
-PROJECT_REPO=${PROJECT_REPO:-home:${OBS_PROJECT}:${OBS_SUBPROJECT}/runtime}
-RELEASE=$(get_obs_pkg_release "${PROJECT_REPO}")
-((RELEASE++))
-
-set_versions "$kata_runtime_hash"
-
-replace_list+=(
- "GO_CHECKSUM=$go_checksum"
- "GO_VERSION=$go_version"
- "GO_ARCH=$GO_ARCH"
- "HASH=$short_hashtag"
- "RELEASE=$RELEASE"
- "VERSION=$VERSION"
- "linux_container_version=${KERNEL_REQUIRED_VERSION["rpm"]}"
- "linux_container_version_release=${KERNEL_REQUIRED_VERSION["deb"]}"
- "qemu_vanilla_version=${KATA_QEMU_VANILLA_REQUIRED_VERSION["rpm"]}"
- "qemu_vanilla_version_release=${KATA_QEMU_VANILLA_REQUIRED_VERSION["deb"]}"
-)
-
-verify
-echo "Verify succeed."
-get_git_info
-changelog_update $VERSION
-generate_files "$SCRIPT_DIR" "${replace_list[@]}"
-build_pkg "${PROJECT_REPO}"
diff --git a/tools/packaging/obs-packaging/scripts/obs-docker.sh b/tools/packaging/obs-packaging/scripts/obs-docker.sh
deleted file mode 100755
index 0ad2b30f0e..0000000000
--- a/tools/packaging/obs-packaging/scripts/obs-docker.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-_obs_docker_packaging_repo_dir=$(cd $(dirname "${BASH_SOURCE[0]}") && cd ../.. && pwd)
-GO_ARCH=$(go env GOARCH)
-
-setup_oscrc() {
- # oscrc exists at different places on different distros
- [ -f "${HOME}/.config/osc/oscrc" ] && OSCRC="${HOME}/.config/osc/oscrc"
- OSCRC=${OSCRC:-"${HOME}/.oscrc"}
- (
- # do not log OBS credentials even in debug mode
- set +x
- OBS_API="https://api.opensuse.org"
-
- if [ -n "${OBS_USER:-}" ] && [ -n "${OBS_PASS:-}" ] && [ ! -e "${OSCRC}" ]; then
- echo "Creating ${OSCRC} with user $OBS_USER"
- mkdir -p $(dirname $OSCRC)
- cat <"${OSCRC}"
-[general]
-apiurl = ${OBS_API}
-[${OBS_API}]
-user = ${OBS_USER}
-pass = ${OBS_PASS}
-eom
- fi
- ) >>/dev/null
- if [ ! -e "${OSCRC}" ]; then
- echo "${OSCRC}, please do 'export OBS_USER=your_user ; export OBS_PASS=your_pass' to configure osc for first time."
- exit 1
- fi
- echo "OK - osc configured"
-}
-
-docker_run() {
- local cmd="$*"
- local obs_image="obs-kata"
- #where results will be stored
- local host_datadir="${PWD}/pkgs"
- local cache_dir=${PWD}/obs-cache
- setup_oscrc
-
- sudo docker build \
- --build-arg http_proxy="${http_proxy:-}" \
- --build-arg https_proxy="${https_proxy:-}" \
- -t $obs_image "${_obs_docker_packaging_repo_dir}/obs-packaging"
-
- sudo docker run \
- --rm \
- --env http_proxy="${http_proxy:-}" \
- --env https_proxy="${https_proxy:-}" \
- --env no_proxy="${no_proxy:-}" \
- --env GO_ARCH="${GO_ARCH}" \
- --env PUSH="${PUSH:-}" \
- --env DEBUG="${DEBUG:-}" \
- --env OBS_PROJECT="${OBS_PROJECT:-}" \
- --env OBS_SUBPROJECT="${OBS_SUBPROJECT:-}" \
- -v "${cache_dir}":/var/tmp/osbuild-packagecache/ \
- -v "${_obs_docker_packaging_repo_dir}":"${_obs_docker_packaging_repo_dir}" \
- -v "${host_datadir}":/var/packaging \
- -v "${OSCRC}":/root/.oscrc \
- -v "${PWD}":"${PWD}" \
- -w "${PWD}" \
- -ti "${obs_image}" bash -c "${cmd}"
-}
diff --git a/tools/packaging/obs-packaging/scripts/obs-pkgs.sh b/tools/packaging/obs-packaging/scripts/obs-pkgs.sh
deleted file mode 100755
index cb6d52d6d4..0000000000
--- a/tools/packaging/obs-packaging/scripts/obs-pkgs.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2018 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-#NOTES:
-# - update qemu and the kernel first, they take longer to build
-# - runtime is always built at the end, as it depends on all the other listed
-# packages, and we need to get the full version of all those.
-
-typeset -a OBS_PKGS_PROJECTS
-
-OBS_PKGS_PROJECTS+=(
- qemu-vanilla
- linux-container
- kata-containers-image
- runtime
-)
diff --git a/tools/packaging/obs-packaging/scripts/pkglib.sh b/tools/packaging/obs-packaging/scripts/pkglib.sh
deleted file mode 100644
index 2d72c0622f..0000000000
--- a/tools/packaging/obs-packaging/scripts/pkglib.sh
+++ /dev/null
@@ -1,389 +0,0 @@
-#!/bin/bash
-
-# This is a helper library for the setup scripts of each package
-# in this repository.
-
-source_dir_pkg_lib=$(dirname "${BASH_SOURCE[0]}")
-source_dir_pkg_lib=$(realpath "${source_dir_pkg_lib}")
-source "${source_dir_pkg_lib}/../../scripts/lib.sh"
-
-# Verify that versions.txt exists
-version_file="${source_dir_pkg_lib}/../versions.txt"
-if [ -f "${version_file}" ]; then
- source "${version_file}"
-else
- die "${version_file} does not exist, you need to run first the gen_versions_txt.sh"
-fi
-
-PACKAGING_DIR=/var/packaging
-LOG_DIR=${PACKAGING_DIR}/build_logs
-
-# OBS Project info
-OBS_PROJECT="${OBS_PROJECT:-katacontainers}"
-OBS_SUBPROJECT="${OBS_SUBPROJECT:-alpha}"
-
-# BUILD OPTIONS
-BUILD_DISTROS=${BUILD_DISTROS:-Fedora_27 xUbuntu_16.04 CentOS_7}
-BUILD_ARCH="$(uname -m)"
-
-COMMIT=false
-BRANCH=false
-LOCAL_BUILD=false
-OBS_PUSH=false
-VERBOSE=false
-
-arch_to_golang()
-{
- local -r arch="$1"
-
- case "$arch" in
- aarch64) echo "arm64";;
- ppc64le) echo "$arch";;
- x86_64) echo "amd64";;
- s390x) echo "s390x";;
- *) die "unsupported architecture: $arch";;
- esac
-}
-# Used for debian.control files
-# Architecture: The architecture specifies which type of hardware this
-# package was compiled for.
-
-short_commit_length=10
-
-arch=$(uname -m)
-DEB_ARCH=$(arch_to_golang "$arch")
-if [[ $DEB_ARCH == "ppc64le" ]]; then
- DEB_ARCH="ppc64el"
-fi
-
-GO_ARCH=$(arch_to_golang "$arch")
-export GO_ARCH
-
-function display_help() {
- cat <<-EOL
- $SCRIPT_NAME
-
- This script is intended to create Kata Containers packages for the OBS
- (Open Build Service) platform.
-
- Usage:
- $SCRIPT_NAME [options]
-
- Options:
-
- -l --local-build Build the runtime locally
- -b --branch Build with a given branch name
- -p --push Push changes to OBS
- -a --api-url Especify an OBS API (e.g. custom private OBS)
- -r --obs-repository An OBS repository to push the changes.
- -w --workdir Directory of a working copy of the OBS runtime repo
- -v --verbose Set the -x flag for verbosity
- -C --clean Clean the repository
- -V --verify Verify the environment
- -h --help Display this help message
-
- Usage examples:
-
- $SCRIPT_NAME --local-build --branch staging
- $SCRIPT_NAME --push --api-url http://127.0.0.1
- $SCRIPT_NAME --push --obs-repository home:userx/repository
- $SCRIPT_NAME --push
-
- EOL
- exit 1
-}
-
-die() {
- msg="$*"
- echo >&2 "ERROR: $msg"
- exit 1
-}
-
-info() {
- msg="$*"
- echo "INFO: $msg"
-}
-
-function verify() {
- # This function perform some checks in order to make sure
- # the script will run flawlessly.
-
- # Make sure this script is called from ./
- [ "$SCRIPT_DIR" != "." ] && die "The script must be called from its base dir."
-
- # Verify if osc is installed, exit otherwise.
- [ ! -x "$(command -v osc)" ] && die "osc is not installed."
-
- info "OK"
-}
-
-function clean() {
- # This function clean generated files
- for file in "$@"; do
- [ -e $file ] && rm -v $file
- done
- [ -e ./debian.changelog ] && git checkout ./debian.changelog
- [ -e ./release ] && git checkout ./release
- echo "Clean done."
-}
-
-function get_git_info() {
- AUTHOR=${AUTHOR:-$(git config user.name)}
- AUTHOR_EMAIL=${AUTHOR_EMAIL:-$(git config user.email)}
-}
-
-function set_versions() {
- local commit_hash="$1"
- hash_tag="$commit_hash"
- short_hashtag="${hash_tag:0:7}"
-}
-
-function changelog_update() {
- d=$(date -R)
- cat <<<"$PKG_NAME ($VERSION) stable; urgency=medium
-
- * Update $PKG_NAME $VERSION ${hash_tag:0:7}
-
- -- $AUTHOR <$AUTHOR_EMAIL> $d
-" >debian.changelog
- # Append, so it can be copied to the OBS repository
- GENERATED_FILES+=('debian.changelog')
-}
-
-function local_build() {
- [ ! -e $PACKAGING_DIR ] && mkdir $PACKAGING_DIR
- [ ! -e $LOG_DIR ] && mkdir $LOG_DIR
-
- pushd "${obs_repo_dir}"
-
- BUILD_ARGS=('--local-package' '--no-verify' '--noservice' '--trust-all-projects' '--keep-pkgs=/var/packaging/results')
- [ "$OFFLINE" == "true" ] && BUILD_ARGS+=('--offline')
-
- osc service run
- for distro in ${BUILD_DISTROS[@]}; do
- # If more distros are supported, add here the relevant validations.
- if [[ $distro =~ ^Fedora.* ]] || [[ $distro =~ ^CentOS.* ]]; then
- echo "Perform a local build for ${distro}"
- osc build ${BUILD_ARGS[@]} \
- ${distro} $BUILD_ARCH *.spec | tee ${LOG_DIR}/${distro}_${PKG_NAME}_build.log
-
- elif [[ $distro =~ ^xUbuntu.* ]]; then
- echo "Perform a local build for ${distro}"
- osc build ${BUILD_ARGS[@]} \
- ${distro} $BUILD_ARCH *.dsc | tee ${LOG_DIR}/${distro}_${PKG_NAME}_build.log
- fi
- done
- popd
-
-}
-
-function checkout_repo() {
- local repo="${1}"
- export obs_repo_dir="${repo}"
-
- mkdir -p "${obs_repo_dir}"
- osc co "${repo}" -o "${obs_repo_dir}"
- find "${obs_repo_dir}" -maxdepth 1 -mindepth 1 ! -name '.osc' -prune -exec echo remove {} \; -exec rm -rf {} \;
-
- mv "${GENERATED_FILES[@]}" "${obs_repo_dir}"
- cp "${STATIC_FILES[@]}" "$obs_repo_dir"
-}
-
-function obs_push() {
- pushd "${obs_repo_dir}"
- osc addremove
- osc commit -m "Update ${PKG_NAME} $VERSION: ${hash_tag:0:7}"
- popd
-}
-
-function cli() {
- OPTS=$(getopt -o abclprwvCVh: --long api-url,branch,commit-id,local-build,push,obs-repository,workdir,verbose,clean,verify,help -- "$@")
- while true; do
- case "${1}" in
- -b | --branch)
- BRANCH="true"
- OBS_REVISION="$2"
- shift 2
- ;;
- -l | --local-build)
- LOCAL_BUILD="true"
- shift
- ;;
- -p | --push)
- OBS_PUSH="true"
- shift
- ;;
- -r | --obs-repository)
- PROJECT_REPO="$2"
- shift 2
- ;;
- -v | --verbose)
- VERBOSE="true"
- shift
- ;;
- -o | --offline)
- OFFLINE="true"
- shift
- ;;
- -C | --clean)
- clean ${GENERATED_FILES[@]}
- exit $?
- ;;
- -V | --verify)
- verify
- exit $?
- ;;
- -h | --help)
- display_help
- exit $?
- ;;
- --)
- shift
- break
- ;;
- *) break ;;
- esac
- done
-
-}
-
-function build_pkg() {
-
- obs_repository="${1}"
-
- [ -z "${obs_repository}" ] && die "${FUNCNAME}: obs repository not provided"
-
- checkout_repo "${obs_repository}"
-
- if [ "$LOCAL_BUILD" == "true" ]; then
- info "Local build"
- local_build
- fi
-
- if [ "$OBS_PUSH" == "true" ]; then
- info "Push build to OBS"
- obs_push
- fi
-
-}
-
-function generate_files() {
-
- directory=$1
- replace_list=$2
- template_files=$(find $directory -type f -name "*-template")
-
- replace_list+=("deb_arch=$DEB_ARCH")
-
- #find_patches sets $RPM_PATCH_LIST and $RPM_PATCH_LIST
- # It also creates debian.series file
- find_patches
- replace_list+=("RPM_PATCH_LIST=$RPM_PATCH_LIST")
- replace_list+=("RPM_APPLY_PATCHES=$RPM_APPLY_PATCHES")
-
- # check replace list
- # key=val
- for replace in "${replace_list[@]}"; do
- [[ $replace == *"="* ]] || die "invalid replace $replace"
- local key="${replace%%=*}"
- local value="${replace##*=}"
- [ -n "$key" ] || die "${replace} key is empty"
- [ -n "$value" ] || die "${replace} val is empty"
- grep -q "@$key@" $template_files || die "@$key@ not found in any template file"
- done
-
- for f in ${template_files}; do
- genfile="${f%-template}"
- cp "$f" "${genfile}"
- info "Generate file ${genfile}"
- for replace in "${replace_list[@]}"; do
- [[ $replace == *"="* ]] || die "invalid replace $replace"
- local key="${replace%%=*}"
- local value="${replace##*=}"
- export k="@${key}@"
- export v="$value"
- perl -p -e 's/$ENV{k}/$ENV{v}/g' "${genfile}" >"${genfile}.out"
- mv "${genfile}.out" ${genfile}
- done
- done
-
-}
-
-function pkg_version() {
- local project_version="$1"
- # Used for
- # Release: in spec file
- # DebianRevisionNumber in dsc files
- local pkg_release="$2"
- local commit_id="$3"
- [ -n "${project_version}" ] || die "${FUNCNAME}: need version"
-
- pkg_version="${project_version}"
-
- if [ -n "$commit_id" ]; then
- pkg_version+="+git.${commit_id:0:${short_commit_length}}"
- fi
- if [ -n "$pkg_release" ]; then
- pkg_version+="-${pkg_release}"
- fi
- echo "$pkg_version"
-}
-
-function get_obs_pkg_release() {
- local obs_pkg_name="$1"
- local pkg
- local repo_dir
- local release=""
-
- pkg=$(basename "${obs_pkg_name}")
- repo_dir=$(mktemp -d -u -t "${pkg}.XXXXXXXXXXX")
-
- out=$(osc -v co "${obs_pkg_name}" -o "${repo_dir}") || die "failed to checkout:$out"
-
- spec_file=$(find "${repo_dir}" -maxdepth 1 -type f -name '*.spec' | head -1)
- # Find in specfile in Release: XX field.
- [ ! -f "${spec_file}" ] || release=$(grep -oP 'Release:\s+[0-9]+' "${spec_file}" | grep -oP '[0-9]+')
-
- if [ -z "${release}" ] && [ -f "${spec_file}" ] ; then
- # Not release number found find in "%define release XX"
- release=$(grep -oP '%define\s+release\s+[0-9]+' "${spec_file}" | grep -oP '[0-9]+')
- fi
-
- release_file=$(find "${repo_dir}" -maxdepth 1 -type f -name 'pkg-release')
- if [ -z "${release}" ] && [ -f "${release_file}" ]; then
- # Release still not found check pkg-release file
- release=$(grep -oP '[0-9]+' "${release_file}")
- fi
- if [ -z "${release}" ]; then
- # Not release number found, this is a new repository.
- release=1
- fi
-
- rm -r "${repo_dir}"
- echo "${release}"
-}
-
-#find_patches find patches in 'patches' directory.
-# sets $RPM_PATCH_LIST and $RPM_PATCH_LIST
-# RPM_PATCH_LIST fomat:
-# Patch: patch.file
-# RPM_APPLY_PATCHES fomat:
-# %Patch -p1
-# It also creates debian.series file
-function find_patches() {
- export RPM_PATCH_LIST="#Patches"$'\n'
- export RPM_APPLY_PATCHES="#Apply patches"$'\n'
- [ ! -d patches ] && info "No patches found" && return
- local patches
- patches=$(find patches/ -type f -name '*.patch' -exec basename {} \; | sort -t- -k1,1n)
- n="1"
- rm -f debian.series
- for p in ${patches}; do
- STATIC_FILES+=("patches/$p")
- RPM_PATCH_LIST+="Patch00${n}: $p"$'\n'
- RPM_APPLY_PATCHES+="%patch00${n} -p1"$'\n'
- echo "$p" >>debian.series
- ((n++))
- done
- GENERATED_FILES+=(debian.series)
-}
diff --git a/tools/packaging/obs-packaging/wait-obs.sh b/tools/packaging/obs-packaging/wait-obs.sh
deleted file mode 100755
index fe55e82649..0000000000
--- a/tools/packaging/obs-packaging/wait-obs.sh
+++ /dev/null
@@ -1,307 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2019 Intel Corporation
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-set -o errexit
-set -o nounset
-set -o pipefail
-set -o errtrace
-
-script_name="$(basename "${BASH_SOURCE[0]}")"
-
-OBS_PROJECT=${OBS_PROJECT:-"home:katacontainers:"}
-# Project to wait for
-project=""
-
-handle_error() {
- local exit_code="${?}"
- local line_number="${1:-}"
- echo "Failed at $line_number: ${BASH_COMMAND}"
- exit "${exit_code}"
-}
-trap 'handle_error $LINENO' ERR
-
-script_dir=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
-
-run_in_docker() {
- if [ -n "${USE_DOCKER:-}" ]; then
- # shellcheck source=scripts/obs-docker.sh
- source "${script_dir}/scripts/obs-docker.sh"
- packaging_repo_dir=$(cd "${script_dir}/.." && pwd)
- docker_run "${packaging_repo_dir}/obs-packaging/wait-obs.sh" $@
- exit 0
- fi
-}
-
-# project information
-project=""
-
-# repo information
-repo=""
-repo_state=""
-repo_code=""
-
-# package information
-package=""
-package_code=""
-package_details=""
-
-# packages still building
-packages_building=0
-
-fail=0
-return=0
-continue=0
-
-result_handler() {
- # reset project information
- project=""
-
- # reset repo information
- repo=""
- repo_state=""
- repo_code=""
-
- local IFS=' '
- for i in $1; do
- case $(echo $i | cut -d= -f1) in
- project)
- project=$(echo $i | cut -d= -f2 | tr -d '"')
- ;;
-
- repository)
- repo=$(echo $i | cut -d= -f2 | tr -d '"')
- ;;
-
- code)
- repo_code=$(echo $i | cut -d= -f2 | tr -d '"')
- ;;
-
- state)
- repo_state=$(echo $i | cut -d= -f2 | tr -d '"')
- ;;
- esac
- done
-
- case "${repo_code}" in
- blocked)
- continue=1
- ;;
-
- unresolvable)
- fail=1
- ;;
-
- excluded)
- return=1
- ;;
- esac
-}
-
-status_handler() {
- # reset package information
- package=""
- package_code=""
- package_details=""
-
- local IFS=' '
- for i in $1; do
- case $(echo $i | cut -d= -f1) in
- package)
- package=$(echo $i | cut -d= -f2 | tr -d '"')
- ;;
-
- code)
- package_code=$(echo $i | cut -d= -f2 | tr -d '"')
- ;;
- esac
- done
-
- case "${package_code}" in
- blocked)
- continue=1
- ;;
-
- unresolvable)
- fail=1
- ;;
-
- excluded)
- return=1
- ;;
- esac
-}
-
-details_handler() {
- # reset package details
- package_details="$(echo $1 | cut -d\> -f2 | cut -d\< -f1)"
-
- if [ "$package_details" == "failed" ]; then
- fail=1
- osc pr
- return
- fi
-
- if [ "$package_details" == "broken" ]; then
- fail=1
- return
- fi
-
- if [ "${package_details}" != "succeeded" ] || [ "${package_code}" != "finished" ]; then
- packages_building=$((packages_building+1))
- fi
-}
-
-check_repo() {
- if [ -z "${repo}" ]; then
- return
- fi
-}
-
-dump_info() {
- echo "package: $package, code: $package_code, details: $package_details"
- echo "repository: $repo, state: $repo_state, code: $repo_code"
- echo "For more information go to https://build.opensuse.org/package/live_build_log/${project}/${package}/${repo}/$(uname -m)"
-}
-
-# Check all project has finshed the build
-wait_finish_building() {
- local out
- while true; do
- sleep 30
- out=$(osc api "/build/${project}/_result")
- continue=0
- packages_building=0
-
- local IFS=$'\n'
- for i in ${out[*]}; do
- i="$(echo $i | sed -e 's/^[[:space:]]*//' -e 's/^/' -e 's/>$//')"
- if echo "$i" | egrep -q "^result"; then
- result_handler "$i"
- elif echo "$i" | egrep -q "^status"; then
- status_handler "$i"
- elif echo "$i" | egrep -q "^details"; then
- details_handler "$i"
- fi
-
- if [ $fail -eq 1 ]; then
- echo -n "FAILED: "
- dump_info
- exit 1
- elif [ $return -eq 1 ]; then
- return
- elif [ $packages_building -gt 0 ]; then
- break
- fi
- done
-
- if [ $continue -eq 1 ]; then
- continue
- fi
-
- if [ $packages_building -gt 0 ]; then
- echo -n "BULDING: "
- dump_info
- else
- echo "FINISHED: SUCCEEDED!"
- break
- fi
- done
-}
-
-# obs distro final status is 'published'
-# Check all distros are published
-is_published() {
- columns=$(osc pr -q -c | head -1 | column -t -s\;)
- # print to show status
- for c in ${columns}; do
- if [ "${c}" == '_' ]; then
- continue
- fi
- if ! echo "${c}" | grep 'published'; then
- echo "waiting for : ${c}"
- return 1
- fi
- done
- return 0
-}
-
-# Wait that all repositories are published
-wait_published() {
- while ! is_published; do
- echo "Waitling for all repos are published"
- done
-}
-
-check_failed() {
- failed_query=$(osc pr -c -s F)
- if [[ ${failed_query} =~ failed ]]; then
- echo "ERROR: Build failed"
- osc pr -V -s 'F'
- exit 1
- fi
- echo "Nothing failed"
- osc pr -q -c | tail -n +2 | column -t -s\;
- return 0
-}
-
-usage() {
- msg="${1:-}"
- exit_code=$"${2:-0}"
- cat <