From 6be7dd111b59968629b3a5b3b1022769101aafff Mon Sep 17 00:00:00 2001 From: Erich Cordoba Date: Mon, 2 Jul 2018 17:37:33 -0500 Subject: [PATCH] Add script o generate the cgcs-centos-repo folder and mock config file. The build system needs the cgcs-centos-repo symlinks pointing to the files in the mirror. Also, the mock.cfg.proto file is needed to provide configurations to the mock environment. With this script we eliminate the need of having a separate repository just to hold these symlinks. Now, the developers can recreate this folder whenever is needed. Change-Id: Ic4ca21516a1e1271ed15666d5d46ce7f4f5b68b3 Signed-off-by: Erich Cordoba --- Dockerfile.centos73.TC-builder | 1 + README.md | 14 ++++ toCOPY/generate-cgcs-centos-repo.sh | 119 ++++++++++++++++++++++++++++ 3 files changed, 134 insertions(+) create mode 100755 toCOPY/generate-cgcs-centos-repo.sh diff --git a/Dockerfile.centos73.TC-builder b/Dockerfile.centos73.TC-builder index b4773475..31b1f41b 100644 --- a/Dockerfile.centos73.TC-builder +++ b/Dockerfile.centos73.TC-builder @@ -117,6 +117,7 @@ RUN useradd -r -u $MYUID -g cgts -m $MYUNAME && \ COPY toCOPY/finishSetup.sh /usr/local/bin COPY toCOPY/generate-cgcs-tis-repo /usr/local/bin +COPY toCOPY/generate-cgcs-centos-repo /usr/local/bin COPY toCOPY/.inputrc /home/$MYUNAME/ COPY toCOPY/.gitconfig /home/$MYUNAME/ diff --git a/README.md b/README.md index 3ec7b0c1..2fb2b41c 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,20 @@ repo init -u git@git.openstack.org:openstack/stx-manifest.git -m stx-manifest.xm repo sync ``` +### To generate cgcs-centos-repo + +The cgcs-centos-repo is a set of symbolic links to the packages in the mirror +and the mock configuration file. It is needed to create these links if this is +the first build or the mirror has been updated. + +``` +cd $MY_REPO_ROOT_DIR/stx-tools/scripts +./generate-cgcs-centos-repo.sh /import/mirror/CentOS/pike +``` + +Where the argument to the script is the path of the mirror. + + ### To build all packages: ``` $ cd $MY_REPO diff --git a/toCOPY/generate-cgcs-centos-repo.sh b/toCOPY/generate-cgcs-centos-repo.sh new file mode 100755 index 00000000..32de2b91 --- /dev/null +++ b/toCOPY/generate-cgcs-centos-repo.sh @@ -0,0 +1,119 @@ +#!/bin/bash +# +# SPDX-License-Identifier: Apache-2.0 +# + +usage () { + echo "$0 " +} + +if [ $# -ne 1 ]; then + usage + exit -1 +fi + +if [ -z "$MY_REPO" ]; then + echo "\$MY_REPO is not set. Ensure you are running this script" + echo "from the container and \$MY_REPO points to the root of" + echo "your folder tree." + exit -1 +fi + +mirror_dir=$1 +dest_dir=$MY_REPO/cgcs-centos-repo +timestamp="$(date +%F_%H%M)" +mock_cfg_file=$dest_dir/mock.cfg.proto + +if [[ ( ! -d $mirror_dir/Binary ) || ( ! -d $mirror_dir/Source ) ]]; then + echo "The mirror $mirror_dir doesn't has the Binary and Source" + echo "folders. Please provide a valid mirror" + exit -1 +fi + +if [ ! -d "$dest_dir" ]; then + mkdir -p "$dest_dir" +fi + +for t in "Binary" "Source" ; do + target_dir=$dest_dir/$t + if [ ! -d "$target_dir" ]; then + mkdir -p "$target_dir" + else + mv -f "$target_dir" "$target_dir-backup-$timestamp" + mkdir -p "$target_dir" + fi + + pushd "$mirror_dir/$t"|| exit 1 + find . -type d -exec mkdir -p "${target_dir}"/{} \; + popd || exit 1 + + all_files=$(find "$mirror_dir/$t" -type f -name "*") + for ff in $all_files; do + f_name=$(basename "$ff") + ln -sf "$ff" "$target_dir/$f_name" + echo "Creating symlink for $target_dir/$f_name" + echo "------------------------------" + done +done + +read -r -d '' MOCK_CFG <<-EOF +config_opts['root'] = 'BUILD_ENV/mock' +config_opts['target_arch'] = 'x86_64' +config_opts['legal_host_arches'] = ('x86_64',) +config_opts['chroot_setup_cmd'] = 'install @buildsys-build' +config_opts['dist'] = 'el7' # only useful for --resultdir variable subst +config_opts['releasever'] = '7' +config_opts['rpmbuild_networking'] = False + +config_opts['yum.conf'] = """ +[main] +keepcache=1 +debuglevel=2 +reposdir=/dev/null +logfile=/var/log/yum.log +retries=20 +obsoletes=1 +gpgcheck=0 +assumeyes=1 +syslog_ident=mock +syslog_device= + +# repos +[local-std] +name=local-std +baseurl=LOCAL_BASE/MY_BUILD_DIR/std/rpmbuild/RPMS +enabled=1 +skip_if_unavailable=1 +metadata_expire=0 + +[local-rt] +name=local-rt +baseurl=LOCAL_BASE/MY_BUILD_DIR/rt/rpmbuild/RPMS +enabled=1 +skip_if_unavailable=1 +metadata_expire=0 + +[local-installer] +name=local-installer +baseurl=LOCAL_BASE/MY_BUILD_DIR/installer/rpmbuild/RPMS +enabled=1 +skip_if_unavailable=1 +metadata_expire=0 + +[TisCentos7Distro] +name=Tis-Centos-7-Distro +enabled=1 +baseurl=LOCAL_BASE/MY_REPO_DIR/cgcs-centos-repo/Binary +failovermethod=priority +exclude=kernel-devel libvirt-devel + + +""" +EOF + +if [ -f "$mock_cfg_file" ]; then + mv "$mock_cfg_file" "$mock_cfg_file-backup-$timestamp" +fi + +echo "Creating mock config file" +echo "$MOCK_CFG" >> "$mock_cfg_file"