Browse Source

Add build tools

This includes Docker containers to perform the StarlingX build
and a set of scripts to maintain a local mirror of binary CentOS
and other packages required to populate the final ISO file.

Change-Id: I8140fd8fa2d00e7aa98c895a8e4962ab3748669d
changes/46/573846/1
Dean Troyer 4 years ago
parent
commit
62bd0253f0
  1. 3
      .gitignore
  2. 31
      Dockerfile.centos73
  3. 135
      Dockerfile.centos73.TC-builder
  4. 60
      Makefile
  5. 209
      README.md
  6. 84
      buildrc
  7. 21
      centos-mirror-tools/Dockerfile
  8. 64
      centos-mirror-tools/README.md
  9. 357
      centos-mirror-tools/StarlingX.repo
  10. 52
      centos-mirror-tools/dl_other_from_centos_repo.sh
  11. 152
      centos-mirror-tools/dl_rpms.sh
  12. 108
      centos-mirror-tools/download_mirror.sh
  13. 29
      centos-mirror-tools/other_downloads.lst
  14. 28
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-5
  15. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-6
  16. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-Debug-6
  17. 20
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-SIG-OpsTools
  18. 20
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-SIG-SCLo
  19. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-Security-6
  20. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-Testing-6
  21. 19
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-Cloud-SIG
  22. 31
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-EPEL-6
  23. 31
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-EPEL-7
  24. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-FC27
  25. 32
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-FC27-primary
  26. 55
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-FC27-second
  27. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-FC28
  28. 30
      centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-FC29
  29. 149
      centos-mirror-tools/rpms_from_3rd_parties.lst
  30. 1681
      centos-mirror-tools/rpms_from_centos_repo.lst
  31. 20
      centos-mirror-tools/show_imported_rpm_gpg_keys.sh
  32. 93
      tb.sh
  33. 3
      toCOPY/.inputrc
  34. 9
      toCOPY/WhatAreThese.md
  35. 8
      toCOPY/cgcs_overlay/Makefile
  36. 26
      toCOPY/cgcs_overlay/mount_wrappers/Makefile
  37. 4
      toCOPY/cgcs_overlay/mount_wrappers/README
  38. 18
      toCOPY/cgcs_overlay/mount_wrappers/mock_cache_umount.c
  39. 60
      toCOPY/cgcs_overlay/mount_wrappers/mock_cache_umount.sh
  40. 18
      toCOPY/cgcs_overlay/mount_wrappers/mock_cache_unlock.c
  41. 53
      toCOPY/cgcs_overlay/mount_wrappers/mock_cache_unlock.sh
  42. 18
      toCOPY/cgcs_overlay/mount_wrappers/mock_tmpfs_mount.c
  43. 77
      toCOPY/cgcs_overlay/mount_wrappers/mock_tmpfs_mount.sh
  44. 18
      toCOPY/cgcs_overlay/mount_wrappers/mock_tmpfs_umount.c
  45. 62
      toCOPY/cgcs_overlay/mount_wrappers/mock_tmpfs_umount.sh
  46. 19
      toCOPY/cgcs_overlay/mount_wrappers/overlay_mount.c
  47. 100
      toCOPY/cgcs_overlay/mount_wrappers/overlay_mount.sh
  48. 18
      toCOPY/cgcs_overlay/mount_wrappers/overlay_umount.c
  49. 70
      toCOPY/cgcs_overlay/mount_wrappers/overlay_umount.sh
  50. 55
      toCOPY/finishSetup.sh

3
.gitignore vendored

@ -1,2 +1,5 @@
*~
.makeenv
.tox
localrc
toCOPY/.gitconfig

31
Dockerfile.centos73

@ -0,0 +1,31 @@
# Basic software build CentOS 7.3
FROM centos:7.3.1611
RUN yum install -y epel-release && \
yum install -y lighttpd lighttpd-fastcgi lighttpd-mod_geoip \
sudo systemd \
anaconda anaconda-help anaconda-runtime bc python-psutil createrepo /usr/bin/yumdownloader \
/usr/bin/mkisofs git quilt pax perl-CPAN gcc expat-devel syslinux udisks2 rpm-build rpm-sign deltarpm \
python-deltarpm rpm-python cpanminus wget \
bind bind-utils squashfs-tools
# cpan modules, installing with cpanminus to avoid stupid questions since cpan is whack
RUN cpanm --notest Fatal && \
cpanm --notest XML::SAX && \
cpanm --notest XML::SAX::Expat && \
cpanm --notest XML::Parser && \
cpanm --notest XML::Simple
# don't know if these need to be after the cpan installs or not. putting here due to order in instructions
RUN yum install -y vim-enhanced openssl-devel gettext mongodb mongodb-server mariadb-devel python-testrepository \
python-tox python-pep8 python-pip postgresql postgresql-devel python-devel libxml2 libxml2-devel libxslt-devel \
libffi-devel sqlite-devel openldap-devel libvirt-devel python-subunit qemu-kvm
# pip installs
RUN pip install python-subunit junitxml --upgrade && \
pip install tox --upgrade
# Install repo tool
RUN curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo && \
chmod a+x /usr/local/bin/repo

135
Dockerfile.centos73.TC-builder

@ -0,0 +1,135 @@
# This file provides a TC build container
#
# Usage:
#
# $cp ~/.gitconfig toCOPY;
# $docker build --build-arg MYUID=`id -u` -t local/tc-builder:7.3 -f Dockerfile.centos73.TC-builder .
#
# container usage:
# docker run -it --rm --name centos-builder -v `pwd`/localdisk:/localdisk -v `pwd`/mirror:/import/mirrors -v ~/.ssh:/mySSH:ro -p 8088:8088 --net=host -v /sys/fs/cgroup:/sys/fs/cgroup:ro -e "container=docker" --privileged=true --security-opt seccomp=unconfined local/tc-builder:7.3
FROM local/dev-centos:7.3
MAINTAINER brian avery <brian.avery@intel.com>
ARG MYUID=1000
# username you will docker exec into the container as . it should NOT be your host username so you can easily tell
# if you are in our out of the container.
ARG MYUNAME=builder
ENV container=docker
# mock time
# forcing chroots since a couple of packages naughtily insist on network access and
# we dont have nspawn and networks happy together.
RUN groupadd -g 751 cgts && \
echo "mock:x:751:root" >> /etc/group && \
echo "mockbuild:x:9001:" >> /etc/group && \
yum install -y mock epel-release rpm-build && \
useradd -s /sbin/nologin -u 9001 -g 9001 mockbuild && \
rmdir /var/lib/mock && \
ln -s /localdisk/loadbuild/mock /var/lib/mock && \
rmdir /var/cache/mock && \
ln -s /localdisk/loadbuild/mock-cache /var/cache/mock && \
echo "config_opts['use_nspawn'] = False" >> /etc/mock/site-defaults.cfg && \
echo "config_opts['rpmbuild_networking'] = True" >> /etc/mock/site-defaults.cfg && \
echo >> /etc/mock/site-defaults.cfg
# Inherited tools for mock stuff
# we at least need the mock_cache_unlock tool
# they install into /usr/bin
COPY toCOPY/cgcs_overlay /opt/cgcs_overlay
RUN cd /opt/cgcs_overlay && \
make && \
make install
# ENV setup
RUN echo "# Load stx-builder configuration" >> /etc/profile.d/TC.sh && \
echo "if [[ -r \${HOME}/buildrc ]]; then" >> /etc/profile.d/TC.sh && \
echo " source \${HOME}/buildrc" >> /etc/profile.d/TC.sh && \
echo " export PROJECT SRC_BUILD_ENVIRONMENT MYPROJECTNAME MYUNAME" >> /etc/profile.d/TC.sh && \
echo " export MY_BUILD_CFG MY_BUILD_CFG_RT MY_BUILD_CFG_STD MY_BUILD_DIR MY_BUILD_ENVIRONMENT MY_BUILD_ENVIRONMENT_FILE MY_BUILD_ENVIRONMENT_FILE_RT MY_BUILD_ENVIRONMENT_FILE_STD MY_DEBUG_BUILD_CFG_RT MY_DEBUG_BUILD_CFG_STD MY_LOCAL_DISK MY_MOCK_ROOT MY_REPO MY_REPO_ROOT_DIR MY_SRC_RPM_BUILD_DIR MY_TC_RELEASE MY_WORKSPACE" >> /etc/profile.d/TC.sh && \
echo "fi" >> /etc/profile.d/TC.sh && \
echo "export FORMAL_BUILD=0" >> /etc/profile.d/TC.sh && \
echo "export PATH=\$MY_REPO/build-tools:\$PATH" >> /etc/profile.d/TC.sh
# centos locales are broken. this needs to be run after the last yum install/update
RUN localedef -i en_US -f UTF-8 en_US.UTF-8
# setup
RUN mkdir -p /www/run && \
mkdir -p /www/logs && \
mkdir -p /www/home && \
mkdir -p /www/root/htdocs/localdisk && \
chown -R $MYUID:cgts /www && \
ln -s /localdisk/loadbuild /www/root/htdocs/localdisk/loadbuild && \
ln -s /import/mirrors/CentOS /www/root/htdocs/CentOS && \
ln -s /import/mirrors/fedora /www/root/htdocs/fedora && \
ln -s /localdisk/designer /www/root/htdocs/localdisk/designer
# lighthttpd setup
# chmod for /var/log/lighttpd fixes a centos issue
# in place sed for server root since it's expanded soon thereafter
# echo "server.bind = \"localhost\"" >> /etc/lighttpd/lighttpd.conf && \
RUN echo "$MYUNAME ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \
mkdir -p /var/log/lighttpd && \
chmod a+rwx /var/log/lighttpd/ && \
sed -i 's%^var\.log_root.*$%var.log_root = "/www/logs"%g' /etc/lighttpd/lighttpd.conf && \
sed -i 's%^var\.server_root.*$%var.server_root = "/www/root"%g' /etc/lighttpd/lighttpd.conf && \
sed -i 's%^var\.home_dir.*$%var.home_dir = "/www/home"%g' /etc/lighttpd/lighttpd.conf && \
sed -i 's%^var\.state_dir.*$%var.state_dir = "/www/run"%g' /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.port/#server.port/g" /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.use-ipv6/#server.use-ipv6/g" /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.username/#server.username/g" /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.groupname/#server.groupname/g" /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.bind/#server.bind/g" /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.document-root/#server.document-root/g" /etc/lighttpd/lighttpd.conf && \
sed -i "s/server.dirlisting/#server.dirlisting/g" /etc/lighttpd/lighttpd.conf && \
echo "server.port = 8088" >> /etc/lighttpd/lighttpd.conf && \
echo "server.use-ipv6 = \"disable\"" >> /etc/lighttpd/lighttpd.conf && \
echo "server.username = \"$MYUNAME\"" >> /etc/lighttpd/lighttpd.conf && \
echo "server.groupname = \"cgts\"" >> /etc/lighttpd/lighttpd.conf && \
echo "server.bind = \"localhost\"" >> /etc/lighttpd/lighttpd.conf && \
echo "server.document-root = \"/www/root/htdocs\"" >> /etc/lighttpd/lighttpd.conf && \
sed -i "s/dir-listing.activate/#dir-listing.activate/g" /etc/lighttpd/conf.d/dirlisting.conf && \
echo "dir-listing.activate = \"enable\"" >> /etc/lighttpd/conf.d/dirlisting.conf
# Systemd Enablement
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*
# Without this, init won't start the enabled services and exec'ing and starting
# them reports "Failed to get D-Bus connection: Operation not permitted".
VOLUME /run /tmp
RUN useradd -r -u $MYUID -g cgts -m $MYUNAME && \
ln -s /home/$MYUNAME/.ssh /mySSH
COPY toCOPY/finishSetup.sh /usr/local/bin
COPY toCOPY/.inputrc /home/$MYUNAME/
COPY toCOPY/.gitconfig /home/$MYUNAME/
# now that we are doing systemd, make the startup script be in bashrc
# also we need to SHADOW the udev centric mkefiboot script with a sudo centric one
RUN echo "bash -C /usr/local/bin/finishSetup.sh" >> /home/$MYUNAME/.bashrc && \
echo "export PATH=/usr/local/bin:/localdisk/designer/$MYUNAME/bin:\$PATH" >> /home/$MYUNAME/.bashrc && \
chmod a+x /usr/local/bin/*
## old way
# USER $MYUID:cgts
#ENTRYPOINT ["/usr/bin/bash"]
# CMD bash -C '/localdisk/start.sh';'bash'
# Don't know if it's possible to run services without starting this
CMD /usr/sbin/init

60
Makefile

@ -0,0 +1,60 @@
# TC Build container
# Set defaults that may be overridden in the buidrc
MY_TC_RELEASE := tis-r5-pike
UID := $(shell id -u)
USER := $(shell id -un)
MYUNAME := builder
BASE_CONTAINER := centos73
BASE_CONTAINER_TAG := local/dev-centos:7.3
BASE_DOCKERFILE := Dockerfile.centos73
TC_CONTAINER_NAME := $(USER)-centos-builder
TC_CONTAINER_TAG := local/$(USER)-stx-builder:7.3
TC_DOCKERFILE := Dockerfile.centos73.TC-builder
# Import the build config
NULL := $(shell bash -c "source buildrc; set | sed -E '/^[[:alnum:]_]+/s/=/:=/' | sed 's/^//' > .makeenv")
include .makeenv
# Base CentOS container
base-build:
docker build \
--ulimit core=0 \
-t $(BASE_CONTAINER_TAG) \
-f $(BASE_DOCKERFILE) \
.
base-clean:
docker image rm $(BASE_CONTAINER_TAG)
# TC builder container
build:
docker build \
--build-arg MYUID=$(UID) \
--build-arg MYUNAME=$(MYUNAME) \
--ulimit core=0 \
-t $(TC_CONTAINER_TAG) \
-f $(TC_DOCKERFILE) \
.
clean:
docker rm $(TC_CONTAINER_NAME) || true
docker image rm $(TC_CONTAINER_TAG)
env:
@echo "TC_DOCKERFILE=$(TC_DOCKERFILE)"
@echo "TC_CONTAINER_NAME=$(TC_CONTAINER_NAME)"
@echo "TC_CONTAINER_TAG=$(TC_CONTAINER_TAG)"
@echo "SOURCE_REMOTE_NAME=$(SOURCE_REMOTE_NAME)"
@echo "SOURCE_REMOTE_URI=$(SOURCE_REMOTE_URI)"
@echo "HOST_MIRROR_DIR=$(HOST_MIRROR_DIR)"
@echo "MY_TC_RELEASE=$(MY_TC_RELEASE)"
@echo "LOCALDISK=${LOCALDISK}"
@echo "GUEST_LOCALDISK=${GUEST_LOCALDISK}"
.PHONY: base-build base-clean build clean env

209
README.md

@ -0,0 +1,209 @@
# stx-tools
StarlilngX Build Tools
The StarlingX build process is tightly tied to CentOS in a number of ways,
doing the build inside a Docker container makes this much easier on other
flavors of Linux.
## Container Build Preparation
We will use a copy of your existing `.gitconfig` in the container to pick up existing
configuration. The StarlingX build system also has some specific requirements that
do not need to be in your personal `.gitconfig`. Copy it into `toCOPY` to be picked
up in the container build.
```
cp ~/.gitconfig toCOPY
```
## Configuration
tbuilder uses a two-step configuration process that provides access to certain
configuration values both inside and outside the container. This is extremely
useful for path variables such as `MY_REPO` with have different values inside
and outside but can be set to point to the same place.
The `buildrc` file is a shell script that is used to set the default configuration
values. It is contained in the tbuilder repo and should not need to be modified by
users as it reads a `localrc` file that will not be overwritten by tbuilder updates.
This is where users should alter the default settings.
### Sample `localrc`
```
# tbuilder localrc
MYUNAME=stx-builder
PROJECT=stx-work
HOST_PREFIX=$HOME/work
```
## Makefile
tbuilder contains a Makefile that can be used to automate the build lifecycle
of a container. The commands below are handled by the Makefile and will read the
contents of the `buildrc` file.
The targets commonly used are:
* build - build the Docker images as required (This includes dev-centos, to build
just the base dev image use target `base-build`.)
* clean - remove the stx-builder image (The dev-centos image is not removed, use
`base-clean` to do that)
## Base Container Build
The container build has been split into two parts to simplify iterating on build development.
The basic CentOS image and the nearly 500 required development packages are pre-installed
into a base image (`local/dev-centos:7.3`) that is then used for the StarlingX builder-specific
bits.
```
make base-build
```
will run essentially the following manual build command:
```
docker build \
--ulimit core=0 \
-t local/dev-centos:7.3 \
-f Dockerfile.centos73 \
.
```
## STX Builder Container Build
StarlingX Builder container images are tied to your UID so image names should include your
username.
```
make build
```
#### NOTE:
* Do NOT change the UID to be different from the one you have on your host or things
will go poorly. i.e. do not change `--build-arg MYUID=$(id -u)`
* The Dockerfile needs MYUID and MYUNAME defined, the rest of the configuration is
copied in via buildrc/localrc.
## Use the Builder Container
The `tb.sh` script is used to manage the run/stop lifecycle of working containers.
Copy it to somewhere on your `PATH`, say `$HOME/bin` if you have one, or maybe
`/usr/local/bin`.
The basic workflow is to create a working directory for a particular build,
say a specific branch or whatever. Copy the `buildrc` file from the tbuilder repo
to your work directory and create a `localrc` if you need one. The current
working directory is assumed to be this work directory for all `tb.sh` commands.
You switch projects by switching directories.
By default `LOCALDISK` will be placed under the directory pointed to by `HOST_PREFIX`,
which defaults to `$HOME/starlingx`.
The `tb.sh` script uses sub-commands to select the operation:
* `run` - Runs the container in a shell. This does not return to a shell prompt while
the container is running, you will need another shell window to work inside the
container. This allows systemd and thus mock, to work from within the container.
It will also create `LOCALDISK` if it does not exist.
* `stop` - Kills the running shell.
* `exec` - Starts a shell inside the container.
You should name your running container with your username. tbuilder does this automatically
using the `USER` environment variable.
`tb.sh run` will create `LOCALDISK` if it does not already exist before starting the
container.
Set the mirror directory to the shared mirror pointed to by `HOST_MIRROR_DIR`. The mirror
is LARGE, if you are on a shared machine use the shared mirror. For example you could set
the default value for `HOST_MIRROR_DIR` to
`/home/starlingx/mirror` and share it.
### Running the Container
Start the builder container:
```
tb.sh run
```
or by hand:
```
docker run -it --rm \
--name ${TC_CONTAINER_NAME} \
-v ${LOCALDISK}:${GUEST_LOCALDISK} \
-v ${HOST_MIRROR_DIR}:/import/mirrors:ro \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v ~/.ssh:/mySSH:ro \
-e "container=docker" \
--security-opt seccomp=unconfined \
${TC_CONTAINER_TAG}
```
### Running a Shell Inside the Container
Since running the container does not return to a shell prompt the exec into the container
must be done from a different shell:
```
tb.sh exec
```
or by hand:
```
docker exec -it --user=${MYUNAME} ${USER}-centos-builder bash
```
#### Notes:
* The above will reusult in a running container in systemd mode. It will have NO login.
* I tend to use tmux to keep a group of shells related to the build container
* `--user=${USER}` is the default username, set `MYUNAME` in `buildrc` to change it.
### Stop the Container
```
tb.sh stop
```
or by hand:
```
docker kill ${USER}-centos-builder
```
## What to do to build from WITHIN the container
### To make git cloning less painful
```
$ eval $(ssh-agent)
$ ssh-add
```
### To start a fresh source tree
#### Instructions
# Initialize the source tree.
```
cd $MY_REPO_ROOT_DIR
repo init -u git@git.openstack.org:openstack/stx-manifest.git -m stx-manifest.xml
repo sync
```
### To build all packages:
```
$ cd $MY_REPO
$ build-pkgs or build-pkgs --clean <pkglist>; build-pkgs <pkglist>
```
### To make an iso:
```
$ build-iso
```
### First time build
The entire project builds as a bootable image which means that the resulting ISO needs the boot files (initrd, vmlinuz, etc) that are also built by this build system. The symptom of this issue is that even if the build is successful, the ISO will be unable to boot.
For more specific instructions on how to solve this issue, please the README on `installer` folder in `stx-beas` repository.
## WARNING HACK WARNING
* Due to a lack of full udev support in the current build container, you need to do the following:
```
$ cd $MY_REPO
$ rm build-tools/update-efiboot-image
$ ln -s /usr/local/bin/update-efiboot-image $MY_REPO/build-tools/update-efiboot-image
```
* if you see complaints about udisksctl not being able to setup the loop device or not being able to mount it, you need to make sure the build-tools/update-efiboot-image is linked to the one in /usr/local/bin
## Troubleshooting
* if you see:
```
Unit tmp.mount is bound to inactive unit dev-sdi2.device. Stopping, too.
```
* it's a docker bug. just kill the container and restart the it using a different name.
* I usually switch between <uname>-centos-builder and <uname>-centos-builder2. It's some kind of timeout (bind?) issue.

84
buildrc

@ -0,0 +1,84 @@
# Common configuration for TC tbuilder
[[ -z "$_BUILDRC" ]] || return 0
declare -r -g _BUILDRC=1
# Find the other rc files
BUILDRC_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
# Allow local overrides of env variables
if [[ -f $BUILDRC_DIR/localrc ]]; then
source $BUILDRC_DIR/localrc
fi
# Source repo base - Intel GitHub
SOURCE_HOST=${SOURCE_HOST:-git.openstack.org}
SOURCE_PORT=${SOURCE_PORT:-}
SOURCE_PROJECT=${SOURCE_PROJECT:-openstack}
SOURCE_REMOTE_URI=${SOURCE_REMOTE_URI:-git@${SOURCE_HOST}:${SOURCE_PROJECT}}
# Host-side prefix
if [[ -n $container && "$container" == "docker" ]]; then
# We are running inside a docker container, do not give HOST_PATH a value
HOST_PREFIX=
else
# Host-side path for user-local /localdisk assumes that all user workspaces are
# in the same directory structure. Override this in localrc if that is
# not the case.
HOST_PREFIX=${HOST_PREFIX:-${HOME}/starlingx}
fi
# Basic build environment configuration
# Real (outside the container) username
export USER=${USER:-$(id -un)}
# Local mirror location
HOST_MIRROR_DIR=${HOST_MIRROR_DIR:-/home/starlingx/mirror}
# The root of an individual build workspace
# GUEST_LOCALDISK is used for the docker run command mapping; don't change this
# until the WRS tooling is gone, it is hard-coded in many places
# We remove a leading '/' as having more than one breaks certain bits of the build
GUEST_LOCALDISK=${LOCALDISK:-localdisk}
GUEST_LOCALDISK=${GUEST_LOCALDISK%/}
# In the docker run command this will be correct for the host side of the mapping
LOCALDISK=${HOST_PREFIX}/${GUEST_LOCALDISK}
# TC vars
export MY_TC_RELEASE=${MY_TC_RELEASE:-tis-r5-pike}
# Default branch to build
export BRANCH=${BRANCH:-intel_r0}
# avoid calling your project 'build' it will break some SRPMs
export PROJECT=${PROJECT:-test}
# These are used in the Dockerfile, not sure where else
export MYUNAME=${MYUNAME:-builder}
export MYPROJECTNAME=${PROJECT:-frog1}
export SRC_BUILD_ENVIRONMENT=${SRC_BUILD_ENVIRONMENT:-$MY_TC_RELEASE}
# All of the below are dependent on variables defined earlier, right now
# we are not going to support directly setting them in localrc
export MY_BUILD_ENVIRONMENT=$MYUNAME-$PROJECT-$SRC_BUILD_ENVIRONMENT
export MY_BUILD_ENVIRONMENT_FILE=${MY_BUILD_ENVIRONMENT}.cfg
export MY_BUILD_ENVIRONMENT_FILE_STD=${MY_BUILD_ENVIRONMENT}-std.cfg
export MY_BUILD_ENVIRONMENT_FILE_RT=${MY_BUILD_ENVIRONMENT}-rt.cfg
export MY_BUILD_DIR=${LOCALDISK}/loadbuild/$MYUNAME/$PROJECT
export MY_WORKSPACE=$MY_BUILD_DIR
export MY_LOCAL_DISK=${LOCALDISK}/designer/$MYUNAME
export MY_REPO_ROOT_DIR=$MY_LOCAL_DISK/$PROJECT
export MY_REPO=$MY_REPO_ROOT_DIR/cgcs-root
export MY_SRC_RPM_BUILD_DIR=$MY_BUILD_DIR/rpmbuild
export MY_BUILD_CFG=$MY_WORKSPACE/$MY_BUILD_ENVIRONMENT_FILE
export MY_BUILD_CFG_STD=$MY_WORKSPACE/std/${MY_BUILD_ENVIRONMENT_FILE_STD}
export MY_BUILD_CFG_RT=${MY_WORKSPACE}/rt/${MY_BUILD_ENVIRONMENT_FILE_RT}
export MY_MOCK_ROOT=$MY_WORKSPACE/mock/root
export MY_DEBUG_BUILD_CFG_STD=${MY_WORKSPACE}/std/configs/${MY_BUILD_ENVIRONMENT}-std/${MY_BUILD_ENVIRONMENT}-std.b0.cfg
export MY_DEBUG_BUILD_CFG_RT=${MY_WORKSPACE}/std/configs/${MY_BUILD_ENVIRONMENT}-std/${MY_BUILD_ENVIRONMENT}-rt.b0.cfg

21
centos-mirror-tools/Dockerfile

@ -0,0 +1,21 @@
## mirror download container
FROM centos:7.4.1708
#ENV http_proxy "http://your.actual_http_proxy.com:your_port"
#ENV https_proxy "https://your.actual_https_proxy.com:your_port"
#ENV ftp_proxy "http://your.actual_ftp_proxy.com:your_port"
#RUN echo "proxy=http://your-proxy.com:port" >> /etc/yum.conf
RUN yum install -y epel-release sudo vim-enhanced net-tools
RUN yum install -y /usr/bin/yumdownloader rpm-build rpm-sign deltarpm wget bind bind-utils
RUN rm /etc/yum.repos.d/CentOS-Sources.repo && \
rm /etc/yum.repos.d/epel.repo
COPY StarlingX.repo /etc/yum.repos.d
COPY rpm-gpg-keys/* /etc/pki/rpm-gpg/
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

64
centos-mirror-tools/README.md

@ -0,0 +1,64 @@
# Create mirror for Akraino
## Step 0 - Build the container
Build the docker image on your Linux host (with Docker supported). **NOTE**: if necessary you might have to set http/https proxy in your Dockerfile before building the docker image below.
```
$ docker build -t <your_docker_image_name>:<your_image_version> -f Dockerfile .
```
## Step 1 - Run the container
The container shall be run from the same directory where the other scripts are stored.
```
$ docker run -v $(pwd):/localdisk <your_docker_image_name>:<your_image_version> bash
```
As `/localdisk` is defined as the workdir of the container, the same folder name should be used to define the volume. The container will start to run and populate a `logs` and `output` folders in this directory.
The container shall be run from the same directory where the other scripts are stored.
## step 2 - Run the `download_mirror.sh` script
Once inside the container run the downloader script
```
$ cd /localdisk
$ ./download_mirror.sh
```
NOTE: in case there are some downloading failures due to network instability (or timeout),
you should download them manually, to assure you get all RPMs listed in "rpms_from_3rd_parties.lst" and "rpms_from_centos_repo.lst".
## step 3 - Copy the files to the mirror
After all downloading complete, copy the download files to mirror.
```
$ find ./output -name "*.i686.rpm" | xargs rm -f
$ chown 751:751 -R ./output
$ cp -rf output/akraino-r1/ <your_mirror_folder>/CentOS/
```
In this case `<your_mirror_folder>` can be whatever folder you want to use as mirror.
## step 4 - Tweaks in the Akraino build system.
NOTE: step below is not needed if you've synced the latest codebase.
Go into Akraino build system (*another* container which hosts cgcs build system), and follow up below steps:
## Debugging issues
The `download_mirro.sh` script will create log files in the form of `centos_rpms_*.txt`. After the download is complete, it's recommended to check the content of these files to see if everything was downloaded correctly.
A quick look into these files could be:
```
$ cd output/
$ cat *missing*
```
In this case, there shoudn't be any package in the "missing" files.

357
centos-mirror-tools/StarlingX.repo

@ -0,0 +1,357 @@
#### VAULT AKA Unmaintained old Packages
### see http://vault.centos.org/readme.txt
### created by Brian Avery
# 7.2.1511
#
[Starlingx-C7.2.1511-cloud-newton]
name=Starlingx-CentOS-7.2.1511 - Cloud-newton
baseurl=http://vault.centos.org/7.2.1511/cloud/x86_64/openstack-newton/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-cloud-newton-source]
name=Starlingx-CentOS-7.2.1511 - Cloud-newton-source
baseurl=http://vault.centos.org/7.2.1511/cloud/Source/openstack-newton/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-extras]
name=StarlingX-CentOS-7.2.1511 - extras
baseurl=http://vault.centos.org/7.2.1511/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-extras-source]
name=Starlingx-CentOS-7.2.1511 - extras-source
baseurl=http://vault.centos.org/7.2.1511/extras/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-os]
name=Starlingx-CentOS-7.2.1511 - os
baseurl=http://vault.centos.org/7.2.1511/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-os-source]
name=Starlingx-CentOS-7.2.1511 - os-source
baseurl=http://vault.centos.org/7.2.1511/os/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-updates]
name=Starlingx-CentOS-7.2.1511 - updates
baseurl=http://vault.centos.org/7.2.1511/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-updates-source]
name=Starlingx-CentOS-7.2.1511 - updates-source
baseurl=http://vault.centos.org/7.2.1511/updates/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-virt-kvm]
name=Starlingx-CentOS-7.2.1511 - virt-kvm
baseurl=http://vault.centos.org/7.2.1511/virt/x86_64/kvm-common
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.2.1511-virt-kvm-source]
name=Starlingx-CentOS-7.2.1511 - virt-kvm-source
baseurl=http://vault.centos.org/7.2.1511/virt/Source/kvm-common
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
# 7.3.1611
#
[Starlingx-C7.3.1611-cloud-newton]
name=Starlingx-CentOS-7.3.1611 - Cloud-newton
baseurl=http://vault.centos.org/7.3.1611/cloud/x86_64/openstack-newton/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-cloud-newton-source]
name=Starlingx-CentOS-7.3.1611 - Cloud-newton-source
baseurl=http://vault.centos.org/7.3.1611/cloud/Source/openstack-newton/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-cloud-pike]
name=Starlingx-CentOS-7.3.1611 - Cloud-pike
baseurl=http://vault.centos.org/7.3.1611/cloud/x86_64/openstack-pike/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-cloud-pike-source]
name=Starlingx-CentOS-7.3.1611 - Cloud-pike-source
baseurl=http://vault.centos.org/7.3.1611/cloud/Source/openstack-pike/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-extras]
name=Starlingx-CentOS-7.3.1611 - extras
baseurl=http://vault.centos.org/7.3.1611/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-extras-source]
name=Starlingx-CentOS-7.3.1611 - extras-source
baseurl=http://vault.centos.org/7.3.1611/extras/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-os]
name=Starlingx-CentOS-7.3.1611 - os
baseurl=http://vault.centos.org/7.3.1611/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-os-source]
name=Starlingx-CentOS-7.3.1611 - os-source
baseurl=http://vault.centos.org/7.3.1611/os/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-rt]
name=Starlingx-CentOS-7.3.1611 - rt
baseurl=http://vault.centos.org/7.3.1611/rt/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-rt-source]
name=Starlingx-CentOS-7.3.1611 - rt-source
baseurl=http://vault.centos.org/7.3.1611/rt/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-updates]
name=Starlingx-CentOS-7.3.1611 - updates
baseurl=http://vault.centos.org/7.3.1611/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-updates-source]
name=Starlingx-CentOS-7.3.1611 - updates-source
baseurl=http://vault.centos.org/7.3.1611/updates/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-virt-kvm]
name=Starlingx-CentOS-7.3.1611 - virt-kvm
baseurl=http://vault.centos.org/7.3.1611/virt/x86_64/kvm-common
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-virt-kvm-source]
name=Starlingx-CentOS-7.3.1611 - virt-kvm-source
baseurl=http://vault.centos.org/7.3.1611/virt/Source/kvm-common
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-virt-libvirt]
name=Starlingx-CentOS-7.3.1611 - virt-libvirt
baseurl=http://vault.centos.org/7.3.1611/virt/x86_64/libvirt-latest
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.3.1611-virt-libvirt-source]
name=Starlingx-CentOS-7.3.1611 - virt-libvirt-source
baseurl=http://vault.centos.org/7.3.1611/virt/Source/libvirt-latest
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
# 7.4.1708
#
[Starlingx-C7.4.1708-cloud-newton]
name=Starlingx-CentOS-7.4.1708 - Cloud-newton
baseurl=http://vault.centos.org/7.4.1708/cloud/x86_64/openstack-newton/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-cloud-newton-source]
name=Starlingx-CentOS-7.4.1708 - Cloud-newton-source
baseurl=http://vault.centos.org/7.4.1708/cloud/Source/openstack-newton/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-cloud-pike]
name=Starlingx-CentOS-7.4.1708 - Cloud-pike
baseurl=http://vault.centos.org/7.4.1708/cloud/x86_64/openstack-pike/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-cloud-pike-source]
name=Starlingx-CentOS-7.4.1708 - Cloud-pike-source
baseurl=http://vault.centos.org/7.4.1708/cloud/Source/openstack-pike/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-extras]
name=Starlingx-CentOS-7.4.1708 - extras
baseurl=http://vault.centos.org/7.4.1708/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-extras-source]
name=Starlingx-CentOS-7.4.1708 - extras-source
baseurl=http://vault.centos.org/7.4.1708/extras/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-os]
name=Starlingx-CentOS-7.4.1708 - os
baseurl=http://vault.centos.org/7.4.1708/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-os-source]
name=Starlingx-CentOS-7.4.1708 - os-source
baseurl=http://vault.centos.org/7.4.1708/os/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-rt]
name=Starlingx-CentOS-7.4.1708 - rt
baseurl=http://vault.centos.org/7.4.1708/rt/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-rt-source]
name=Starlingx-CentOS-7.4.1708 - rt-source
baseurl=http://vault.centos.org/7.4.1708/rt/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-updates]
name=Starlingx-CentOS-7.4.1708 - updates
baseurl=http://vault.centos.org/7.4.1708/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-updates-source]
name=Starlingx-CentOS-7.4.1708 - updates-source
baseurl=http://vault.centos.org/7.4.1708/updates/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-virt-kvm]
name=Starlingx-CentOS-7.4.1708 - virt-kvm
baseurl=http://vault.centos.org/7.4.1708/virt/x86_64/kvm-common
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-virt-kvm-source]
name=Starlingx-CentOS-7.4.1708 - virt-kvm-source
baseurl=http://vault.centos.org/7.4.1708/virt/Source/kvm-common
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-C7.4.1708-virt-libvirt]
name=Starlingx-CentOS-7.4.1708 - virt-libvirt
baseurl=http://vault.centos.org/7.4.1708/virt/x86_64/libvirt-latest
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=0
[Starlingx-C7.4.1708-virt-libvirt-source]
name=Starlingx-CentOS-7.4.1708 - virt-libvirt-source
baseurl=http://vault.centos.org/7.4.1708/virt/Source/libvirt-latest
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
########
#### EPEL -
[Starlingx-epel-7]
name=Starlingx-Epel-7
baseurl=http://linux-ftp.jf.intel.com/pub/mirrors/fedora-epel/7/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
enabled=1
[Starlingx-epel-7-debug]
name=Starlingx-Epel-7-debug
baseurl=http://linux-ftp.jf.intel.com/pub/mirrors/fedora-epel/7/x86_64/debug
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-epel-7-source]
name=Starlingx-Epel-7-source
baseurl=http://linux-ftp.jf.intel.com/pub/mirrors/fedora-epel/7/SRPMS/
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-epel-7-testing]
name=Starlingx-Epel-7
baseurl=http://linux-ftp.jf.intel.com/pub/mirrors/fedora-epel/testing/7/x86_64/
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-epel-7-testing-debug]
name=Starlingx-Epel-7
baseurl=http://linux-ftp.jf.intel.com/pub/mirrors/fedora-epel/testing/7/x86_64/debug/
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
[Starlingx-epel-7-testing-source]
name=Starlingx-Epel-7-source
baseurl=http://linux-ftp.jf.intel.com/pub/mirrors/fedora-epel/testing/7/SRPMS/
gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

52
centos-mirror-tools/dl_other_from_centos_repo.sh

@ -0,0 +1,52 @@
#!/bin/bash -e
# download non-RPM files from http://vault.centos.org/7.4.1708/os/x86_64/
if [ $# -lt 2 ]; then
echo "$0 <other_download_list.ini> <save_path> [<force_update>]"
exit -1
fi
download_list=$1
if [ ! -e $download_list ];then
echo "$download_list does not exist, please have a check!!"
exit -1
fi
save_path=$2
url_prefix="http://vault.centos.org/7.4.1708/os/x86_64/"
echo "NOTE: please assure Internet access to $url_prefix !!"
force_update=$3
i=0
all=`cat $download_list`
for ff in $all; do
## skip commented_out item which starts with '#'
if [[ "$ff" =~ ^'#' ]]; then
echo "skip $ff"
continue
fi
_type=`echo $ff | cut -d":" -f1-1`
_name=`echo $ff | cut -d":" -f2-2`
if [ "$_type" == "folder" ];then
mkdir -p $save_path/$_name
else
echo "remote path: $url_prefix/$_name"
echo "local path: $save_path/$_name"
if wget $url_prefix/$_name; then
file_name=`basename $_name`
sub_path=`dirname $_name`
if [ -e "./$file_name" ]; then
let i+=1
echo "$file_name is downloaded successfully"
mv -f ./$file_name $save_path/$_name
ls -l $save_path/$_name
fi
else
echo "ERROR: failed to download $url_prefix/$_name"
fi
fi
done
echo "totally $i files are downloaded!"

152
centos-mirror-tools/dl_rpms.sh

@ -0,0 +1,152 @@
#!/bin/bash -e
# download RPMs/SRPMs from different sources.
# this script was originated by Brian Avery, and later updated by Yong Hu
if [ $# -lt 3 ]; then
echo "$0 <rpms_list> <match_level> <from_where>"
echo "rpm_list: a list of RPM files to be downloaded."
echo "match_level: value could be L1, L2 or L3:"
echo " L1: use name, major version and minor version, for example, using vim-7.4.160-2.el7 to search vim-7.4.160-2.el7.src.rpm"
echo " L2: use name and major version, for example, using vim-7.4.160 to search vim-7.4.160-2.el7.src.rpm"
echo " L3: use name, for example, using vim to search vim-7.4.160-2.el7.src.rpm"
echo "from_where: where to download the RPMs: 'centos'from CentOS Repos, otherwise from 3rd-party websets"
exit -1
fi
if [ "$1" == "" ]; then
echo "Need to supply the rpm file list"
exit -1;
else
rpms_list=$1
echo "using $rpms_list as the download name lists"
fi
match_level="L1"
if [ ! -z "$2" -a "$2" != " " ];then
match_level=$2
fi
from=$3
timestamp=$(date +%F_%H%M)
echo $timestamp
DESTDIR="output"
MDIR_SRC=$DESTDIR/stx-r1/CentOS/pike/Source
mkdir -p $MDIR_SRC
MDIR_BIN=$DESTDIR/stx-r1/CentOS/pike/Binary
mkdir -p $MDIR_BIN
FAIL_MOVE_SRPMS="$DESTDIR/${from}_srpms_fail_move_${match_level}.txt"
FOUND_SRPMS="$DESTDIR/${from}_srpms_found_${match_level}.txt"
MISSING_SRPMS="$DESTDIR/${from}_srpms_missing_${match_level}.txt"
cat /dev/null > $FAIL_MOVE_SRPMS
cat /dev/null > $FOUND_SRPMS
cat /dev/null > $MISSING_SRPMS
FAIL_MOVE_RPMS="$DESTDIR/${from}_rpms_fail_move_${match_level}.txt"
FOUND_RPMS="$DESTDIR/${from}_rpms_found_${match_level}.txt"
MISSING_RPMS="$DESTDIR/${from}_rpms_missing_${match_level}.txt"
cat /dev/null > $FAIL_MOVE_RPMS
cat /dev/null > $FOUND_RPMS
cat /dev/null > $MISSING_RPMS
#function to download different type of RPMs in different ways
download () {
_list=$1
_level=$2
_from=$3
_type=$4
echo "now the rpm will come from: $_from"
for ff in $_list; do
## download RPM from CentOS repos
if [ "$_from" == "centos" ]; then
rpm_name=$ff
if [ $_level == "L1" ]; then
SFILE=`echo $rpm_name | rev | cut -d'.' -f3- | rev`
elif [ $match_level == "L2" ];then
SFILE=`echo $rpm_name | rev | cut -d'-' -f2- | rev`
else
SFILE=`echo $rpm_name | rev | cut -d'-' -f3- | rev`
fi
echo " ------ using $SFILE to search $rpm_name ------"
if [ "$_type" == "src" ];then
download_cmd="sudo -E yumdownloader -q -C --source $SFILE"
else
download_cmd="sudo -E yumdownloader -q -C $SFILE --archlist=noarch,x86_64"
fi
else
rpm_name=`echo $ff | cut -d"#" -f1-1`
rpm_url=`echo $ff | cut -d"#" -f2-2`
download_cmd="wget $rpm_url"
SFILE=$rpm_name
fi
echo "--> run: $download_cmd"
if [ "$_type" == "src" ]; then
if [ ! -e $MDIR_SRC/$rpm_name ]; then
echo "Looking for $rpm_name"
if $download_cmd ; then
if ! mv -f $SFILE* $MDIR_SRC ; then
echo "FAILED to move $rpm_name"
echo $rpm_name >> $FAIL_MOVE_SRPMS
fi
echo $rpm_name >> $FOUND_SRPMS
else
echo $rpm_name >> $MISSING_SRPMS
fi
else
echo "Already have ${MDIR_BIN}/${_type}/$rpm_name"
echo $rpm_name >> $FOUND_SRPMS
fi
else ## noarch or x86_64
if [ ! -e ${MDIR_BIN}/${_type}/$rpm_name ]; then
echo "Looking for $rpm_name..."
if $download_cmd ; then
mkdir -p $MDIR_BIN/${_type}
if ! mv -f $SFILE* $MDIR_BIN/${_type}/ ; then
echo "FAILED to move $rpm_name"
echo $rpm_name >> $FAIL_MOVE_RPMS
fi
echo $rpm_name >> $FOUND_RPMS
else
echo $rpm_name >> $MISSING_RPMS
fi
else
echo "Already have ${MDIR_BIN}/${_type}/$rpm_name"
echo $rpm_name >> $FOUND_RPMS
fi
fi
done
}
# prime the cache
sudo -E yum makecache
#go to download *.noarch.rpm files
noarch_rpms=`echo "$(cat $rpms_list | grep '.noarch.rpm')"`
if [ ! -z "$noarch_rpms" ];then
echo "--> start searching noarch RPMs ....."
download "$noarch_rpms" $match_level $from "noarch"
fi
#go to download *.x86_64.rpm files
x86_64_rpms=`echo "$(cat $rpms_list | grep '.x86_64.rpm')"`
if [ ! -z "$x86_64_rpms" ];then
echo "--> start searching x86_64 RPMs ....."
download "$x86_64_rpms" $match_level $from "x86_64"
fi
#go to download *.src.rpm files
src_rpms=`echo "$(cat $rpms_list | grep '.src.rpm')"`
if [ ! -z "$src_rpms" ];then
echo "--> start searching source RPMs ....."
download "$src_rpms" $match_level $from "src"
fi
echo "done!!"
exit 0

108
centos-mirror-tools/download_mirror.sh

@ -0,0 +1,108 @@
#!/bin/bash -e
echo "--------------------------------------------------------------"
echo "WARNING: this script HAS TO access internet (http/https/ftp),"
echo "so please make sure your network working properly!!"
mkdir -p ./logs
rpm_downloader="./dl_rpms.sh"
if [ ! -e $rpm_downloader ];then
echo "ERROR: $rpm_downloader does NOT exist!!"
exit -1
fi
#download RPMs/SRPMs from 3rd_party websites (not CentOS repos) by "wget".
echo "step #1: start downloading RPMs/SRPMs from 3rd-party websites..."
if [ ! -e ./rpms_from_3rd_parties.lst ];then
echo "ERROR: ./rpms_from_3rd_parties.lst does NOT exist!!"
exit -1
fi
$rpm_downloader ./rpms_from_3rd_parties.lst L1 3rd | tee ./logs/log_download_rpms_from_3rd_party.txt
if [ $? != 0 ];then
echo "ERROR: something wrong with downloading, please check the log!!"
fi
#download RPMs/SRPMs from CentOS repos by "yumdownloader"
if [ ! -e ./rpms_from_centos_repo.lst ];then
echo "ERROR: ./rpms_from_centos_repo.lst does NOT exist!!"
exit -1
fi
echo "step #2: start 1st round of downloading RPMs and SRPMs with L1 match criteria..."
$rpm_downloader ./rpms_from_centos_repo.lst L1 centos | tee ./logs/log_download_rpms_from_centos_L1.txt
if [ $? == 0 ]; then
echo "finish 1st round of RPM downloading successfully!"
if [ -e "./output/centos_rpms_missing_L1.txt" ]; then
missing_num=`wc -l ./output/centos_rpms_missing_L1.txt | cut -d " " -f1-1`
if [ "$missing_num" != "0" ];then
echo "ERROR: -------RPMs missing $missing_num in yumdownloader wit L1 match ---------------"
fi
#echo "start 2nd round of downloading Binary RPMs with L2 match criteria..."
#$rpm_downloader ./output/centos_rpms_missing_L1.txt L2 centos | tee ./logs/log_download_rpms_from_centos_L2.txt
#if [ $? == 0 ]; then
# echo "finish 2nd round of RPM downloading successfully!"
# if [ -e "./output/rpms_missing_L2.txt" ]; then
# echo "WARNING: we're still missing RPMs listed in ./rpms_missing_L2.txt !"
# fi
#fi
fi
if [ -e "./output/centos_srpms_missing_L1.txt" ]; then
missing_num=`wc -l ./output/centos_srpms_missing_L1.txt | cut -d " " -f1-1`
if [ "$missing_num" != "0" ];then
echo "ERROR: --------- SRPMs missing $missing_num in yumdownloader wit L1 match ---------------"
fi
#echo "start 2nd round of downloading Source RPMs with L2 match criteria..."
#$rpm_downloader ./output/centos_srpms_missing_L1.txt L2 centos | tee ./logs/log_download_srpms_from_centos_L2.txt
#if [ $? == 0 ]; then
# echo "finish 2nd round of SRPM downloading successfully!"
# if [ -e "./srpms_missing_L2.txt" ]; then
# echo "WARNING: we're still missing SRPMs listed in ./rpms_missing_L2.txt !"
# fi
#fi
fi
else
echo "finish 1st round with failures!"
fi
## verify all RPMs SRPMs we download for the GPG keys
find ./output -type f -name "*.rpm" | xargs rpm -K | grep -i "MISSING KEYS" > ./rpm-gpg-key-missing.txt
# remove all i686.rpms to avoid pollute the chroot dep chain
find ./output -name "*.i686.rpm" | tee ./output/all_i686.txt
find ./output -name "*.i686.rpm" | xargs rm -f
line1=`wc -l rpms_from_3rd_parties.lst | cut -d " " -f1-1`
line2=`wc -l rpms_from_centos_repo.lst | cut -d " " -f1-1`
let total_line=$line1+$line2
echo "We expect to download $total_line RPMs!"
num_of_downloaded_rpms=`find ./output -type f -name "*.rpm" | wc -l | cut -d" " -f1-1`
echo "Actually we downloaded $num_of_downloaded_rpms RPMs."
if [ "$total_line" != "$num_of_downloaded_rpms" ];then
echo "ERROR: some RPM downloading failed, need to check outputs and logs"
fi
# change "./output" and sub-folders to 751 (cgcs) group
chown 751:751 -R ./output
other_downloader="./dl_other_from_centos_repo.sh"
if [ ! -e ./other_downloads.lst ];then
echo "ERROR: ./other_downloads.lst does not exist!"
exit -1
fi
echo "step #3: start downloading other files ..."
$other_downloader ./other_downloads.lst ./output/stx-r1/CentOS/pike/Binary/ | tee ./logs/log_download_other_files_centos.txt
if [ $? == 0 ];then
echo "step #3: done successfully"
fi
echo "IMPORTANT: The following 3 files are just bootstrap versions. Based on them, the workable images"
echo "for StarlingX could be generated by running \"update-pxe-network-installer\" command after \"build-iso\""
echo " - out/stx-r1/CentOS/pike/Binary/LiveOS/squashfs.img"
echo " - out/stx-r1/CentOS/pike/Binary/images/pxeboot/initrd.img"
echo " - out/stx-r1/CentOS/pike/Binary/images/pxeboot/vmlinuz"

29
centos-mirror-tools/other_downloads.lst

@ -0,0 +1,29 @@
folder:EFI
folder:EFI/BOOT
#file:EFI/BOOT/mmx64.efi
#file:EFI/BOOT/grubia32.efi
file:EFI/BOOT/grub.cfg
file:EFI/BOOT/BOOTX64.EFI
file:EFI/BOOT/grubx64.efi
#file:EFI/BOOT/BOOTIA32.EFI
#file:EFI/BOOT/mmia32.efi
folder:EFI/BOOT/fonts
file:EFI/BOOT/fonts/unicode.pf2
folder:LiveOS
file:LiveOS/squashfs.img
folder:images
folder:images/pxeboot
file:images/pxeboot/initrd.img
file:images/pxeboot/vmlinuz
file:images/efiboot.img
#file:images/boot.iso
folder:isolinux
file:isolinux/memtest
file:isolinux/grub.conf
file:isolinux/initrd.img
file:isolinux/boot.msg
file:isolinux/vmlinuz
file:isolinux/isolinux.bin
file:isolinux/splash.png
file:isolinux/isolinux.cfg
file:isolinux/vesamenu.c32

28
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-5

@ -0,0 +1,28 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.6 (GNU/Linux)
mQGiBEWfB6MRBACrnYW6yKMT+MwJlCIhoyTxGf3mAxmnAiDEy6HcYN8rivssVTJk
CFtQBlBOpLV/OW2YtKrCO2xHn46eNfnMri8FGT8g+9JF3MUVi7kiV1He4iJynHXB
+F2ZqIvHf3IaUj1ys+p8TK64FDFxDQDrGQfIsD/+pkSGx53/877IrvdwjwCguQcr
Ioip5TH0Fj0OLUY4asYVZH8EAIqFHEqsY+9ziP+2R3/FyxSllKkjwcMLrBug+cYO
LYDD6eQXE9Mq8XKGFDj9ZB/0+JzK/XQeStheeFG75q3noq5oCPVFO4czuKErIRAB
qKbDBhaTj3JhOgM12XsUYn+rI6NeMV2ZogoQCC2tWmDETfRpYp2moo53NuFWHbAy
XjETA/sHEeQT9huHzdi/lebNBj0L8nBGfLN1nSRP1GtvagBvkR4RZ6DTQyl0UzOJ
RA3ywWlrL9IV9mrpb1Fmn60l2jTMMCc7J6LacmPK906N+FcN/Docj1M4s/4CNanQ
NhzcFhAFtQL56SNyLTCk1XzhssGZ/jwGnNbU/aaj4wOj0Uef5LRGQ2VudE9TLTUg
S2V5IChDZW50T1MgNSBPZmZpY2lhbCBTaWduaW5nIEtleSkgPGNlbnRvcy01LWtl
eUBjZW50b3Mub3JnPohkBBMRAgAkBQJFnwekAhsDBQkSzAMABgsJCAcDAgMVAgMD
FgIBAh4BAheAAAoJEKikR9zoViiXKlEAmwSoZDvZo+WChcg3s/SpNoWCKhMAAJwI
E2aXpZVrpsQnInUQWwkdrTiL5YhMBBMRAgAMBQJFnwiSBYMSzAIRAAoJEDjCFhY5
bKCk0hAAn134bIx3wSbq58E6P6U5RT7Z2Zx4AJ9VxnVkoGHkVIgSdsxHUgRjo27N
F7kBDQRFnwezEAQA/HnJ5yiozwgtf6jt+kii8iua+WnjqBKomPHOQ8moxbWdv5Ks
4e1DPhzRqxhshjmub4SuJ93sgMSAF2ayC9t51mSJV33KfzPF2gIahcMqfABe/2hJ
aMzcQZHrGJCEX6ek8l8SFKou7vICzyajRSIK8gxWKBuQknP/9LKsoczV+xsAAwUD
/idXPkk4vRRHsCwc6I23fdI0ur52bzEqHiAIswNfO521YgLk2W1xyCLc2aYjc8Ni
nrMX1tCnEx0/gK7ICyJoWH1Vc7//79sWFtX2EaTO+Q07xjFX4E66WxJlCo9lOjos
Vk5qc7R+xzLDoLGFtbzaTRQFzf6yr7QTu+BebWLoPwNTiE8EGBECAA8FAkWfB7MC
GwwFCRLMAwAACgkQqKRH3OhWKJfvvACfbsF1WK193zM7vSc4uq51XsceLwgAoI0/
9GxdNhGQEAweSlQfhPa3yYXH
=o/Mx
-----END PGP PUBLIC KEY BLOCK-----

30
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-6

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQINBE4P06MBEACqn48FZgYkG2QrtUAVDV58H6LpDYEcTcv4CIFSkgs6dJ9TavCW
NyPBZRpM2R+Rg5eVqlborp7TmktBP/sSsxc8eJ+3P2aQWSWc5ol74Y0OznJUCrBr
bIdypJllsD9Fe+h7gLBXTh3vdBEWr2lR+xA+Oou8UlO2gFbVFQqMafUgU1s0vqaE
/hHH0TzwD0/tJ6eqIbHwVR/Bu6kHFK4PwePovhfvyYD9Y+C0vOYd5Ict2vbLHz1f
QBDZObv4M6KN3j7nzme47hKtdMd+LwFqxM5cXfM6b5doDulWPmuGV78VoX6OR7el
x1tlfpuiFeuXYnImm5nTawArcQ1UkXUSYcTUKShJebRDLR3BycxR39Q9jtbOQ29R
FumHginovEhdUcinRr22eRXgcmzpR00zFIWoFCwHh/OCtG14nFhefuZ8Z80qbVhW
2J9+/O4tksv9HtQBmQNOK5S8C4HNF2M8AfOWNTr8esFSDc0YA5/cxzdfOOtWam/w
lBpNcUUSSgddRsBwijPuWhVA3NmA/uQlJtAo4Ji5vo8cj5MTPG3+U+rfNqRxu1Yc
ioXRo4LzggPscaTZX6V24n0fzw0J2k7TT4sX007k+7YXwEMqmHpcMYbDNzdCzUer
Zilh5hihJwvGfdi234W3GofttoO+jaAZjic7a3p6cO1ICMgfVqrbZCUQVQARAQAB
tEZDZW50T1MtNiBLZXkgKENlbnRPUyA2IE9mZmljaWFsIFNpZ25pbmcgS2V5KSA8
Y2VudG9zLTYta2V5QGNlbnRvcy5vcmc+iQI8BBMBAgAmBQJOD9OjAhsDBQkSzAMA
BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQCUb8osEFud6ajRAAnb6d+w6Y/v/d
MSy7UEy4rNquArix8xhqBwwjoGXpa37OqTvvcJrftZ1XgtzmTbkqXc+9EFch0C+w
ST10f+H0SPTUGuPwqLkg27snUkDAv1B8laub+l2L9erzCaRriH8MnFyxt5v1rqWA
mVlRymzgXK+EQDr+XOgMm1CvxVY3OwdjdoHNox4TdVQWlZl83xdLXBxkd5IRciNm
sg5fJAzAMeg8YsoDee3m4khg9gEm+/Rj5io8Gfk0nhQpgGGeS1HEXl5jzTb44zQW
qudkfcLEdUMOECbu7IC5Z1wrcj559qcp9C94IwQQO+LxLwg4kHffvZjCaOXDRiya
h8KGsEDuiqwjU9HgGq9fa0Ceo3OyUazUi+WnOxBLVIQ8cUZJJ2Ia5PDnEsz59kCp
JmBZaYPxUEteMtG3yDTa8c8jUnJtMPpkwpSkeMBeNr/rEH4YcBoxuFjppHzQpJ7G
hZRbOfY8w97TgJbfDElwTX0/xX9ypsmBezgGoOvOkzP9iCy9YUBc9q/SNnflRWPO
sMVrjec0vc6ffthu2xBdigBXhL7x2bphWzTXf2T067k+JOdoh5EGney6LhQzcp8m
YCTENStCR+L/5XwrvNgRBnoXe4e0ZHet1CcCuBCBvSmsPHp5ml21ahsephnHx+rl
JNGtzulnNP07RyfzQcpCNFH7W4lXzqM=
=jrWY
-----END PGP PUBLIC KEY BLOCK-----

30
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-Debug-6

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQINBE4P1EIBEACfrYbqfmCxVzfO3P9NGC2Ul9EyzDNW9WK0yYt1kT45cjybC+vL
8gPl5BlVC9Z5WoSU9YhCwk/RdQ0aQJQRziEyQqwftSgKESrApAqEyHIkcsPNCkjq
55q9MkhJApMn14dwvCJCgubDSj2Ft8b172IlIX3k196uCZl9j5EVUHuyxls4AOUZ
7wuvEXLu01KOi5lqnsGwyRTv+AV74LupL03iZUPQuGUWPuP25J35sC4p33We5Ogx
VrjOv6/e5Z0p9zb2AgBh1hFRwPPgE3wrYJIF5tmJgDDdKIPcNFE1l2QiOlPg/QA4
t0f6gUk0ptgrWlNmAhj8y8ccomf/JgmjfQbjFXWkqIePVzQy9adM6SbmKFm/czJ1
X1Jsy7lCzpxYqz8RYds8EzD455auJ0TeiO4P0PFd+RXncH10mGIESP/DTicWvVdK
0doBLpYcpwyNL4dyQxq28xtneFgYV+Zkazk0HzF3+x+vnD+LZ1Zc9/MXub/Yt5nv
1eaQrSfSkCDvq5rXzzprqVe6Ytl+FK5lwbJGhOUWfsWk0PqChkEhw2n7zgHpQ5Qd
U5oMFFKy3B1ZYQRn581/wB+eL/fgku7icIo/IOU7zeKDmIK7xHuHiAmVtm7L35VL
qAbgSY5B5EBqP6RtBT7AIKzM/+H5uMvnS4xI5PVkJVijL6Fpw8aHEeCDVQARAQAB
tFdDZW50T1MtNiBEZWJ1Z2luZm8gS2V5IChDZW50T1MtNiBEZWJ1Z2luZm8gU2ln
bmluZyBLZXkpIDxjZW50b3MtNi1kZWJ1Zy1rZXlAY2VudG9zLm9yZz6JAjwEEwEC
ACYFAk4P1EICGwMFCRLMAwAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRA7dc95
0P89FkPID/4w8+3Yg7lZfTkPynWcSX4KOH6NRCSbuUf+5MFmZT4FXVOr7LHOWCRS
QkF3f+tpPIpGLcEFD9r0/9npozsviG/13ZhT31x3mmASvVVGVp9cHN5Ie7Zim2BN
+ALbGQ0YbaO7f7XgBMTKTlw71HQ5V4yCqrUVBL1FicGBsBJ5nfJt/K0WjKA1GGYA
DyW1YP/Oid5lPNqPLyR3Jw2oMHtUtbwZbtgBSq8Ll5gZaYTpap+M4SdQmBXyOMxA
NPXSwJgNuWufKnwp+7qMR/sFRIW9qmRvR30NtonmzOwf+kOtY03USiSK4pneEHTQ
YKAGCEdOgsPOnEwv0jvW3KABIw+rwRzkpfW0IFh0VoyOrQ67Ek0Q3oldQ9Lrjwqu
qsL12YhBgfnMkSM/w7R0HsezOSmPb0wHxjIb6CDv+4r9LIHx5F4YXFytv7pYIUqP
6ATg9jJ/ecMcXVonnwwUG2FtQNhYa4URak1u3u0xJTKsrsvMnYksjCpgosmd4XB4
7651UvR7pgsSscJSuLlh9S4BR3/crsYZMq1O5L9HOywU4l2SN04p+DfH2Vf90VfB
9An1uA2hBa5lB1IuN0QiIH9OMaDqXPk0rVHS0GJ28Jx4rztofDBWHuShgO5YzNUw
A8CKB3t/kH6zutLdF6tS0Mh1wLWuPWfSH4DPd+mSucY/zbbrrAgxFA==
=9b/M
-----END PGP PUBLIC KEY BLOCK-----

20
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-SIG-OpsTools

@ -0,0 +1,20 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQENBFirSnoBCADLACfDHfVhgxMImHt7Y6VpUAvg/QXygfvkhmzbcvVTzj0EvP98
V9H+O0+lWupQCoa9J5p/7i5bF74aWqY6KZU9tQnU8Mc+nbyvy63TC4Jb47c9AwPo
Nba3CCmnQs+pfNTbvpwR72akgyx1jCWQApYoo5O0MKQy23Zhm8jz8DoPyOjRSrlV
idRUGLoydLU7u4sC+LiNfl5LoAZ1KygeOK1zHh3ADQTuMdLFMizb19fIhENyN2xm
sfqTW1UZi4R/1s2e/smZtf3P1N9lAwRvWYxy0IeXJXyZpT18nuyXqp1N1Xivcs2r
PW0tpY5Fn2/hauKeJP5DbqEo7o7XAAyy+NUbABEBAAG0YUNlbnRPUyBPcHNUb29s
cyBTSUcgKGh0dHBzOi8vd2lraS5jZW50b3Mub3JnL1NwZWNpYWxJbnRlcmVzdEdy
b3VwL09wc1Rvb2xzKSA8c2VjdXJpdHlAY2VudG9zLm9yZz6JATkEEwECACMFAlir
SnoCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRBP2VMnUbwqE6GSB/9r
ViXDUqDAA6xy5TxGZv+JGxFNxRN+srhBLsUeK/DL//kFuONpN+t662V6J1/odP3x
Ho7gE08RJvo8V+QNjfswzseqeVl0texuX9/QNjAbatDFW5GW4w4wFDB9yM1C9GtQ
HZqmNmuP9ZM9smH6uFCVFDhPCAT5uoW+iedJWSjrwHAwfu3nuWMNHX0H1IYAf4Kp
lstDehI0ydMhCEkajBe67M9sdMTfLL0vfnvFzjk4eDdBKrC/aaUYHfLwlBn5zC9W
WaM0qP0zkSYT4C301LsRtYkUDCv4JgojgPZX0lea0fXaEzE5qps+gNFsklNVKhFo
vb7nW8WM0/YHt3XqFILq
=R48J
-----END PGP PUBLIC KEY BLOCK-----

20
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-SIG-SCLo

@ -0,0 +1,20 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
mQENBFYM/AoBCADR9Q5cb+H5ndx+QkzNBQ88wcD+g112yvnHNlSiBMOnNEGHuKPJ
tujZ+eWXP3K6ucJckT91WxfQ2fxPr9jQ0xpZytcHcZdTfn3vKL9+OwR0npp+qmcz
rK8/EzVz/SWSgBQ5xT/HUvaeoVAbzBHSng0r2njnBAqABKAoTxgyRGKSCWduKD32
7PF2ZpqeDFFhd99Ykt6ar8SlV8ToqH6F7An0ILeejINVbHUxd6+wsbpcOwQ4mGAa
/CPXeqqLGj62ASBv36xQr34hlN/9zQMViaKkacl8zkuvwhuHf4b4VlGVCe6VILpQ
8ytKMV/lcg7YpMfRq4KVWBjCwkvk6zg6KxaHABEBAAG0aENlbnRPUyBTb2Z0d2Fy
ZUNvbGxlY3Rpb25zIFNJRyAoaHR0cHM6Ly93aWtpLmNlbnRvcy5vcmcvU3BlY2lh
bEludGVyZXN0R3JvdXAvU0NMbykgPHNlY3VyaXR5QGNlbnRvcy5vcmc+iQE5BBMB
AgAjBQJWDPwKAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQTrhOcfLu
nVXNewgAg7RVclomjTY4w80XiztUuUaFlCHyR76KazdaGfx/8XckWH2GdQtwii+3
Tg7+PT2H0Xyuj1aod+jVTPXTPVUr+rEHAjuNDY+xyAJrNljoOHiz111zs9pk7PLX
CPwKWQLnmrcKIi8v/51L79FFsUMvhClTBdLUQ51lkCwbcXQi+bOhPvZTVbRhjoB/
a9z0d8t65X16zEzE7fBhnVoj4xye/MPMbTH41Mv+FWVciBTuAepOLmgJ9oxODliv
rgZa28IEWkvHQ8m9GLJ0y9mI6olh0cGFybnd5y4Ss1cMttlRGR4qthLhN2gHZpO9
2y4WgkeVXCj1BK1fzVrDMLPbuNNCZQ==
=UtPD
-----END PGP PUBLIC KEY BLOCK-----

30
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-Security-6

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQINBE4P134BEAC+ho3SNeLTnB4VaQHl1MFnsRHPEseN82AGiusUYlu+MR8pZ90P
F9Kv97idgKcEhdG7kGrCqGS5DOvLbv5UOyOEeNf9Zd9bvE2MEQ6XWa6IcffeunAp
RfFo71CAuTfvix7ewCkFf/SvRx28mHVOeCtpjVU6BQ9XXMnXPFiD1YALJEif8YF1
qq3tJbtpzcM+W0b5VyCUqWf44bb4M8WtLmHcTjHmQgoulPWxGqS2rmZ3qM2kqh+Q
QUqsPH8isfp/6WN0A7LtsZ326PV2FuEe/qVaT4+wNgqpI6hYiaYj6BQTuc7dV8gS
xhnVXH5MIDYw9LBIAhiATAr93CQTxcG1Gdk0wdGZaZGtDig+mXD9RsDBF+R1N18t
D98xQ5wpU4buIAcqBj2nC/c1trfO5KoWGepyuABYT0+Dz2DLhr6AwEuWymDhD4zl
PMxU4YsCWh3rhx8kU85ByRQQk/dNmFQ7VdJeKb4ct0nxW+Yi8pMmB3mLXlzo+LqT
CIa71e+lQjQKtJoFUMdIHEk9acMirXdbG0keXUfG/DnNA+dj+egAKlbu0id8Au97
EuZaWyXVSZ8LXapG+wkaMvE+CGY4idvDd3xPDfXhEwRkSQVFe1DPVCL9QV1tUnJK
Zy4kV6u85Pu+4XHlPT26nuKBvfpXwEaDBYoowClj/xz7y2nRlav0CXLG4wARAQAB
tFlDZW50T1MtNiBTZWN1cml0eSBLZXkgKENlbnRPUy02IE9mZmljaWFsIFNlY3Vy
aXR5IEtleSkgPGNlbnRvcy02LXNlY3VyaXR5LWtleUBjZW50b3Mub3JnPokCPAQT
AQIAJgUCTg/XfgIbAwUJEswDAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEAsT
LD/+g39vajgP/1S17nqnos8aoc17pXMr0u5DKlT4oV/aQp+V8stjmz+geyH91Lax
jNNE9GQdcqXQH8Hyp3xtdLape0kLgPH5mwDk8yL39uzgzoqZpq2iAeHQfkQ8fqt6
6WwADRF9t7rDYNJwmPdVka9kL5oGs1Q7xS56x6zgG1CVPzQOCVIbgXDdD7I8nuHr
9en/5f3FmGJ3yGps6wUWETU9BrApat2Z7kY2ZM2ZiW5M/qY1pA/nxS3oTc90o//l
NQbZC5i1kPz6hCxlc1+41pXwL/IB7yYqbnVsc2ZVEncMegbCwQ7yaBrzrNSM+YuC
+z6wFnokthqK/JzYc1/rEfN3IzsadBW6S5mcFvYHNwyo7eeGtIwgQXOheBvyB/0E
23BdT/XjdWxHGP2eOh6v32WzBiA97dU195SFB8j36qx0mKWJujbxKxo4lWlRxvLk
27XEEW9rox5Tiv7XgNUp47wQHe11ADQ/+iyAVPV7ixCT/JV4r+VPA1o9VMggVnTe
ZjeK2coO1sawX7Gx87HwB36JmmEQ6RKJWHyeUodoUKjDcOZqyC9tanGD1lyZ4Oi1
4CzQlt+gYkRCdYAt2L7KoyjTMp7lde7wF8TuGAM1I9WZs6RACxkAguSbh6L5CtrO
t7DA2xeQfBNNggS4vN018S4qXioeEKMBKrXQTDfsG+tF8DQSyIDQ/pmg
=yuja
-----END PGP PUBLIC KEY BLOCK-----

30
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-CentOS-Testing-6

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQINBE4P1/ABEADIZqNdxFdVbHZQo3xGV8Bvdyj3gjaIxru/22a47Ok1HVxYoOny
ad0xib9TgbyKIARnX3nWRZO1migZTs4ptJVeV/KqR6EUh4YS1MyOHYCQ8rYfedZc
Hnh+cOop5M/TMxIG/EThE9kk/DetMOLbzt3RczVqP2xTshWoRq9rMfmMEp3BnlVK
srEnAUgyhPsknvCFVSLJ0g/ZNMDIczRYvAJWeYRD2sc26scSS4tl2YpD7/VkZqXY
8VXx2AunSGe28sVCnDNJSlQSuYMKdRR7Wc8yqZqFkZZEdTB6KIUMwElHevgwNGZj
49cu6suqeuzNXzZAFP/a9K/Rm4jayziumePEhKc0g8zMHkJsDyo4v/pDvLuSMuc7
f+jYS619zdC80bEQ9PdOZTIx23/OHeMmG/h9Gjuqz3SxTM8whAQr0uAsZuLLECEj
MToZ4q3guXSddbzI6j708HFvYhD0YpqWJMQ0S6YS5DXN5GQv8c9YtF5ZOA65oBAp
XAxXQZz1kGxx/8jVC8/2uyaY6r/QAnkfB8sihR4V7jLOJbk640ClX8stsJqMEYBa
7ymWDgK5/x8GsJ+phkQQIRIx7Bbh+ob3lUXimzmRE3rXLBcNUip8+YYPN9qVuyGK
XZXupHQvUiMDXsOWHDIZiHYWPJYdWXety0fHHEdj5Bnd2yw9U11R01eeMQARAQAB
tFtDZW50T1MtNiBUZXN0aW5nIEtleSAoQ2VudE9TLTYgVGVzdCBhbmQgQmV0YSBT
aWduaW5nIEtleSkgPGNlbnRvcy02LXRlc3Rpbmcta2V5QGNlbnRvcy5vcmc+iQI8
BBMBAgAmBQJOD9fwAhsDBQkSzAMABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ
EZwah+8dbbjVlhAAwoDiowLWFdnEUT6fEhF/I/oOqVxZerD2cHwIfXaHpFvUj3rS
51RKOV2XX7Me2R/gFbKJdXyRpPLU+u4825j7Q/yZGZ6r5AAiSuzmnHb4lyMffm+t
QIY9Qzq7OPU2MOoI3CgEsTdm1kO06glyNBT8s+d4DhFPNgUU9MuY6k+PS9dLnmH8
Usr0X3FOzIXv//csIokgrN9HDdpVWWMdyKsEEaskG9psCNEf699Z3MVjz0DQ/KKj
jI9oaRfET2+O9v5maovqPqa9vnY2K6EoX0Kznw5BvpZqmuSxnvDkluqVBphgL6FR
QHRomCln9y/3f+4UoF3/c/QglEXSOH/GhjaasxU1GicPlnmV6Uyd/WadJnjp0tbO
NWtR3iNOc5FCrHiTOjx1ld56xsTw+LUOQZby3rfjAyhT4qz7LrTD48nBICHHA5Gd
Ulslb2alhPygn50cfMIiwg+RG271CkPcYcbcyuLjKinyes9jqDMsZ2aC85oWSmcg
SciA5HOrcHJAl8vNBYT2wZVlwvxbwQU+3C1aYAaQRM6OWHvUZE8A8+R5HKOvRGeC
wASURwPP0NblcQTM5C39Bsc70Ekifkt3TUothca9yrOvURN0y3mlGI5T2NTDYfXd
AIDcXXE93jZYMaasAyypuJw/mbk5By5ZndPh+Dwbmgu/c30+Mv1ZYPBsEYs=
=NsO7
-----END PGP PUBLIC KEY BLOCK-----

19
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-Cloud-SIG

@ -0,0 +1,19 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.6
Comment: Hostname: keyserver.ntzwrk.org
mQENBFVWcCcBCACfm3eQ0526/I0/p7HpR0NjK7K307XHhnbcbZv1sDUjQABDaqh0N4gnZcov
f+3fj6pcdOmeOpGI0cKE7Fh68RbEIqyjB7l7+j1grjewR0oCFFZ38KGmj+DWQrj1IJW7JU5f
H/G0Cu66ix+dJPcuTB3PJTqXN3ce+4TuG09D+epgwfbHlqaTpH2qHCu2uiGj/AaRSM/ZZzcI
nMaeleHSB+NChvaQ0W/m+kK5d/20d7sfkaTfI/pYSrodCfVTYxfKAd0TLW03kimHs5/Rdz+i
ZWecVKv6aFxzaywbrOjmOsy2q0kEWIwXMTZrq6cBRRuWyiXsI2zT2YHQ4UK44IxINiaJABEB
AAG0WkNlbnRPUyBDbG91ZCBTSUcgKGh0dHA6Ly93aWtpLmNlbnRvcy5vcmcvU3BlY2lhbElu
dGVyZXN0R3JvdXAvQ2xvdWQpIDxzZWN1cml0eUBjZW50b3Mub3JnPokBOQQTAQIAIwUCVVZw
JwIbAwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEPm5/ud2RCnmATUH/3HDtWxpFkmy
FiA3VGkMt5dp3bgCRSd84X6Orfx1LARowpI4LomCGglGBGXVJePBacwcclorbLazuWrW/wU0
efz0aDB5c4NPg/yXfNvujvlda8ADJwZXVBQphzvaIKwl4PqBsEnxC10I93T/0iyphAhfMRJ5
R8AbEHMj7uF+TWTX/JoyQagllMqWTwoP4DFRutPdOmmjwvSVkWItH7hq6z9+M4dhlqeoOvPb
L5oCxX7TVmLck02Q5gI4syULOa7sqntzUQKFkhWp9U0+5KrBQBKezrurrrkq/WZR3WNE1KQf
NQ77f7S2JcXJdOaKgJ7xe7Y2flPq98AqwKXK7l1c3dc=
=W6yF
-----END PGP PUBLIC KEY BLOCK-----

31
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-EPEL-6

@ -0,0 +1,31 @@
pub 4096R/0608B895 2010-04-23 EPEL (6) <epel@fedoraproject.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
mQINBEvSKUIBEADLGnUj24ZVKW7liFN/JA5CgtzlNnKs7sBg7fVbNWryiE3URbn1
JXvrdwHtkKyY96/ifZ1Ld3lE2gOF61bGZ2CWwJNee76Sp9Z+isP8RQXbG5jwj/4B
M9HK7phktqFVJ8VbY2jfTjcfxRvGM8YBwXF8hx0CDZURAjvf1xRSQJ7iAo58qcHn
XtxOAvQmAbR9z6Q/h/D+Y/PhoIJp1OV4VNHCbCs9M7HUVBpgC53PDcTUQuwcgeY6
pQgo9eT1eLNSZVrJ5Bctivl1UcD6P6CIGkkeT2gNhqindRPngUXGXW7Qzoefe+fV
QqJSm7Tq2q9oqVZ46J964waCRItRySpuW5dxZO34WM6wsw2BP2MlACbH4l3luqtp
Xo3Bvfnk+HAFH3HcMuwdaulxv7zYKXCfNoSfgrpEfo2Ex4Im/I3WdtwME/Gbnwdq
3VJzgAxLVFhczDHwNkjmIdPAlNJ9/ixRjip4dgZtW8VcBCrNoL+LhDrIfjvnLdRu
vBHy9P3sCF7FZycaHlMWP6RiLtHnEMGcbZ8QpQHi2dReU1wyr9QgguGU+jqSXYar
1yEcsdRGasppNIZ8+Qawbm/a4doT10TEtPArhSoHlwbvqTDYjtfV92lC/2iwgO6g
YgG9XrO4V8dV39Ffm7oLFfvTbg5mv4Q/E6AWo/gkjmtxkculbyAvjFtYAQARAQAB
tCFFUEVMICg2KSA8ZXBlbEBmZWRvcmFwcm9qZWN0Lm9yZz6JAjYEEwECACAFAkvS
KUICGw8GCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRA7Sd8qBgi4lR/GD/wLGPv9
qO39eyb9NlrwfKdUEo1tHxKdrhNz+XYrO4yVDTBZRPSuvL2yaoeSIhQOKhNPfEgT
9mdsbsgcfmoHxmGVcn+lbheWsSvcgrXuz0gLt8TGGKGGROAoLXpuUsb1HNtKEOwP
Q4z1uQ2nOz5hLRyDOV0I2LwYV8BjGIjBKUMFEUxFTsL7XOZkrAg/WbTH2PW3hrfS
WtcRA7EYonI3B80d39ffws7SmyKbS5PmZjqOPuTvV2F0tMhKIhncBwoojWZPExft
HpKhzKVh8fdDO/3P1y1Fk3Cin8UbCO9MWMFNR27fVzCANlEPljsHA+3Ez4F7uboF
p0OOEov4Yyi4BEbgqZnthTG4ub9nyiupIZ3ckPHr3nVcDUGcL6lQD/nkmNVIeLYP
x1uHPOSlWfuojAYgzRH6LL7Idg4FHHBA0to7FW8dQXFIOyNiJFAOT2j8P5+tVdq8
wB0PDSH8yRpn4HdJ9RYquau4OkjluxOWf0uRaS//SUcCZh+1/KBEOmcvBHYRZA5J
l/nakCgxGb2paQOzqqpOcHKvlyLuzO5uybMXaipLExTGJXBlXrbbASfXa/yGYSAG
iVrGz9CE6676dMlm8F+s3XXE13QZrXmjloc6jwOljnfAkjTGXjiB7OULESed96MR
XtfLk0W5Ab9pd7tKDR6QHI7rgHXfCopRnZ2VVQ==
=V/6I
-----END PGP PUBLIC KEY BLOCK-----

31
centos-mirror-tools/rpm-gpg-keys/RPM-GPG-KEY-EPEL-7

@ -0,0 +1,31 @@
pub 4096R/352C64E5 2013-12-16 Fedora EPEL (7) <epel@fedoraproject.org>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.11.1 (NSS-3)
mQINBFKuaIQBEAC1UphXwMqCAarPUH/ZsOFslabeTVO2pDk5YnO96f+rgZB7xArB