fuel-main/regenerate_ubuntu_repo.sh
Vladimir Kuklin b715f0b397 Refactor how we are doing packaging
This commit is a squashed version of commits that
implement packaging of fuel components. In order to
make our packaging process better I had to introduce
some new macros and do additional cleanup.

The main paradigm that we are following with this commit is
the following:

1 GIT REPO -> 1 PACKAGING SPEC -> N PACKAGES

Though it would be ideal to have only one package per git repo,
but this is left for further releases

This change is very essential to make updates process easier
as we provide only one type of artifacts that a user can fetch -
distro-specific package

This particular commit does not introduce new DEB packages
(such as packages of OCF scripts and other binaries that
we currently put onto the slave nodes with puppet instead of
installing them as packages) which will be introduced as
a part of whole packaging initiative a little bit later

1) Add prepare_git_source macro
This change is important to always
checkout the code from git working
or we can end up with garbage getting
into package source code and add
version.txt file to source archives

2) Remove nailgun-redhat-license package
This package is obsolete - we do not need
it.

3) Package fuel-library into RPM package

4) Delete old packages and misc stuff

This change is a little cleanup of python-tasklib
and other leftovers

5) Change RPM sandbox configuration

Change RPM sandbox configuration to use upstream mirrors
to be able to install nailgun build dependencies

6) Alter Nailgun spec

a) Change nailgun spec to use NPM during package
build
b) Switch nailgun to prepare_git_source
c) Package all packages of fuel-web repo using
only nailgun.spec

7) Alter RPM sandbox preparation to install build-deps

8) Package astute and mcagents using astute.spec

9) Include all built RPMs

Include all RPMS that were built inside the sandbox

10) Package fuel-ostf with git-archive

11) Build python-fuelclient using git_archive macro

12) Move specs to particular git repositories

13) Rename fuel-library and ostf to make macros easier
14)Adjust build scripts to fetch specs from particular
fuel repositories

FUEL DEB-packaging related code

15) Restore part of make system code for DEB packages building

16) Nailgun debian spec files for all nailgun-based packages

17) Clean up SANDBOX for Ubuntu generation

18) Clean up some package building scripts

19) Put PACKAGE_VERSION variable into the top config.mk

20) Add dockerctl and change fuel-library tar.tg path

21) Move deb rules to particula repos

22) Allow to rebuild deb repo with reprepro on-the-fly

24) Fix repocleanup stanza to parse source packages metadata

25) Debmirror whole repos in order not to break reprepro

26) Make docker image build depend on late RPM packages
or it may lead to race conditions

27) Clean up old deb packages with one shot instead
of parallel run

Change-Id: I15ae4d0abe51c72b28793e1a1ef30fec0f668b73
Blueprint: package-fuel-components
2015-04-20 18:21:57 +03:00

56 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Copyright 2014 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# This script will rebuild local ubuntu mirror.
# Based on the method described here:
# http://troubleshootingrange.blogspot.com/2012/09/hosting-simple-apt-repository-on-centos.html
# Example:
# regenerate_ubuntu_repo /path/to/ubuntu/repo precise
REPO_PATH=$1
REPONAME=$2
BINDIR=${REPO_PATH}/dists/${REPONAME}/main
package_deb=${BINDIR}/binary-amd64/Packages
release_header=`head -8 ${REPO_PATH}/dists/${REPONAME}/Release`
cd ${REPO_PATH}
echo "Regenerating Ubuntu local mirror..."
# Scan *.deb packages
dpkg-scanpackages -a amd64 pool/main > $package_deb 2>/dev/null
gzip -9c $package_deb > ${package_deb}.gz
# Generate release file
cd ${REPO_PATH}/dists/${REPONAME}
echo "$release_header" > Release
# Generate hashes
c1=(MD5Sum: SHA1: SHA256: SHA512:)
c2=(md5 sha1 sha256 sha512)
i=0
while [ $i -lt ${#c1[*]} ]; do
echo ${c1[i]} >> Release
for hashme in `find main -type f \( -name "Package*" -o -name "Release*" \)`; do
chash=`openssl dgst -${c2[$i]} ${hashme}|cut -d" " -f 2`
size=`stat -c %s ${hashme}`
echo " ${chash} ${size} ${hashme}" >> Release
done
i=$(( $i + 1));
done