null+****@clear*****
null+****@clear*****
2011年 12月 28日 (水) 16:53:39 JST
Kouhei Sutou 2011-12-28 16:53:39 +0900 (Wed, 28 Dec 2011)
New Revision: 7423c6cbf8fba7b8cbef791172ecd37bf94bb595
Log:
[yum] update based build scripts.
Added files:
packages/yum/mysql-mroonga-build-options
Modified files:
packages/yum/Makefile.am
packages/yum/build-in-chroot.sh
packages/yum/build-rpm.sh
Modified: packages/yum/Makefile.am (+14 -3)
===================================================================
--- packages/yum/Makefile.am 2011-12-28 16:48:49 +0900 (9ec70be)
+++ packages/yum/Makefile.am 2011-12-28 16:53:39 +0900 (277a80c)
@@ -1,6 +1,9 @@
DISTRIBUTIONS = fedora centos
ARCHITECTURES = i386 x86_64
CHROOT_BASE = /var/lib/chroot
+HAVE_DEVELOPMENT_BRANCH = no
+USE_RPMFORGE = no
+USE_ATRPMS = no
all:
@@ -38,9 +41,17 @@ upload: ensure-rsync-path
build: build-in-chroot
build-in-chroot: source
- ./build-in-chroot.sh \
- mysql-mroonga $(VERSION) $(CHROOT_BASE) \
- '$(ARCHITECTURES)' '$(DISTRIBUTIONS)'
+ ./build-in-chroot.sh \
+ mysql-mroonga \
+ $(VERSION) \
+ $(top_builddir)/$(PACKAGE) \
+ ../rpm \
+ $(CHROOT_BASE) \
+ '$(ARCHITECTURES)' \
+ '$(DISTRIBUTIONS)' \
+ '$(HAVE_DEVELOPMENT_BRANCH)' \
+ '$(USE_RPMFORGE)' \
+ '$(USE_ATRPMS)'
source: ../$(PACKAGE)-$(VERSION).tar.gz
Modified: packages/yum/build-in-chroot.sh (+56 -24)
===================================================================
--- packages/yum/build-in-chroot.sh 2011-12-28 16:48:49 +0900 (6ba2b5e)
+++ packages/yum/build-in-chroot.sh 2011-12-28 16:53:39 +0900 (53a0c74)
@@ -1,16 +1,21 @@
#!/bin/sh
-if [ $# != 5 ]; then
- echo "Usage: $0 PACKAGE VERSION CHROOT_BASE ARCHITECTURES DISTRIBUTIONS"
- echo " e.g.: $0 groonga 1.1.1 /var/lib/chroot 'i386 x86_64' 'fedora centos'"
+if [ $# != 10 ]; then
+ echo "Usage: $0 PACKAGE VERSION SOURCE_BASE_NAME SPEC_DIR CHROOT_BASE ARCHITECTURES DISTRIBUTIONS HAVE_DEVELOPMENT_BRANCH USE_RPMFORGE USE_ATRPMS"
+ echo " e.g.: $0 milter-manager 1.1.1 ../milter-manager ../rpm /var/lib/chroot 'i386 x86_64' 'fedora centos' yes no no"
exit 1
fi
PACKAGE=$1
VERSION=$2
-CHROOT_BASE=$3
-ARCHITECTURES=$4
-DISTRIBUTIONS=$5
+SOURCE_BASE_NAME=$3
+SPEC_DIR=$4
+CHROOT_BASE=$5
+ARCHITECTURES=$6
+DISTRIBUTIONS=$7
+HAVE_DEVELOPMENT_BRANCH=$8
+USE_RPMFORGE=$9
+USE_ATRPMS=$10
PATH=/usr/local/sbin:/usr/sbin:$PATH
@@ -47,14 +52,16 @@ build_chroot()
distribution_architecture=$architecture
else
rinse_architecture=$architecture
- case $distribution_name in
- fedora)
- distribution_architecture=i686
- ;;
- *)
- distribution_architecture=$architecture
- ;;
- esac
+ if [ "$distribution_name-$distribution_version" = "centos-5" ]; then
+ distribution_architecture=$architecture
+ else
+ distribution_architecture=i686
+ fi
+ fi
+ if [ "$distribution_name-$distribution_version" = "fedora-16" ]; then
+ rinse_distribution_version="15"
+ else
+ rinse_distribution_version="$distribution_version"
fi
run_sudo mkdir -p ${base_dir}/etc/rpm
@@ -62,7 +69,7 @@ build_chroot()
run_sudo sh -c "echo ${rpm_platform} > ${base_dir}/etc/rpm/platform"
run_sudo rinse \
--arch $rinse_architecture \
- --distribution $distribution_name-$distribution_version \
+ --distribution $distribution_name-$rinse_distribution_version \
--directory $base_dir
run_sudo rinse --arch $rinse_architecture --clean-cache
@@ -73,6 +80,13 @@ build_chroot()
run_sudo mount ${base_dir}/dev
run_sudo mount ${base_dir}/dev/pts
run_sudo mount ${base_dir}/proc
+
+ if [ "$distribution_name-$distribution_version" = "fedora-16" ]; then
+ yes | run_sudo su -c "chroot ${base_dir} rpm --import https://fedoraproject.org/static/A82BA4B7.txt"
+ run_sudo su -c "chroot ${base_dir} yum -y update yum"
+ run_sudo su -c "chroot ${base_dir} yum -y clean all"
+ run_sudo su -c "chroot ${base_dir} yum -y --releasever=16 --disableplugin=presto distro-sync"
+ fi
}
build()
@@ -87,27 +101,45 @@ build()
run build_chroot $architecture $distribution $distribution_version
fi
- source_dir=${script_base_dir}/..
build_user=${PACKAGE}-build
build_user_dir=${base_dir}/home/${build_user}
rpm_base_dir=${build_user_dir}/rpm
rpm_dir=${rpm_base_dir}/RPMS/${architecture}
srpm_dir=${rpm_base_dir}/SRPMS
pool_base_dir=${distribution}/${distribution_version}
+ if test "${HAVE_DEVELOPMENT_BRANCH}" = "yes"; then
+ minor_version=$(echo $VERSION | ruby -pe '$_.gsub!(/\A\d+\.(\d+)\..*/, "\\1")')
+ if test $(expr ${minor_version} % 2) -eq 0; then
+ branch_name=stable
+ else
+ branch_name=development
+ fi
+ pool_base_dir=${pool_base_dir}/${branch_name}
+ fi
binary_pool_dir=$pool_base_dir/$architecture/Packages
source_pool_dir=$pool_base_dir/source/SRPMS
- run cp $source_dir/mroonga-${VERSION}.tar.gz \
- ${CHROOT_BASE}/$target/tmp/
- run cp $source_dir/rpm/${distribution}/${PACKAGE}.spec \
- ${CHROOT_BASE}/$target/tmp/
+ if test -f ${SOURCE_BASE_NAME}-${VERSION}-*.src.rpm; then
+ run cp ${SOURCE_BASE_NAME}-${VERSION}-*.src.rpm \
+ ${CHROOT_BASE}/$target/tmp/
+ else
+ run cp ${SOURCE_BASE_NAME}-${VERSION}.* \
+ ${CHROOT_BASE}/$target/tmp/
+ run cp ${SPEC_DIR}/${distribution}/${PACKAGE}.spec \
+ ${CHROOT_BASE}/$target/tmp/
+ fi
run echo $PACKAGE > ${CHROOT_BASE}/$target/tmp/build-package
run echo $VERSION > ${CHROOT_BASE}/$target/tmp/build-version
+ run echo $(basename ${SOURCE_BASE_NAME}) > \
+ ${CHROOT_BASE}/$target/tmp/build-source-base-name
run echo $build_user > ${CHROOT_BASE}/$target/tmp/build-user
run cp ${script_base_dir}/${PACKAGE}-depended-packages \
${CHROOT_BASE}/$target/tmp/depended-packages
- run cp ${script_base_dir}/build-rpm.sh \
- ${CHROOT_BASE}/$target/tmp/
- # run_sudo rm -rf $rpm_dir $srpm_dir
+ run echo $USE_RPMFORGE > ${CHROOT_BASE}/$target/tmp/build-use-rpmforge
+ run echo $USE_ATRPMS > ${CHROOT_BASE}/$target/tmp/build-use-atrpms
+ run cp ${script_base_dir}/${PACKAGE}-build-options \
+ ${CHROOT_BASE}/$target/tmp/build-options
+ run cp ${script_base_dir}/build-rpm.sh ${CHROOT_BASE}/$target/tmp/
+ run_sudo rm -rf $rpm_dir $srpm_dir
run_sudo su -c "chroot ${CHROOT_BASE}/$target /tmp/build-rpm.sh"
run mkdir -p $binary_pool_dir
run mkdir -p $source_pool_dir
@@ -133,7 +165,7 @@ for architecture in $ARCHITECTURES; do
for distribution in $DISTRIBUTIONS; do
case $distribution in
fedora)
- distribution_versions="15"
+ distribution_versions="16"
;;
centos)
distribution_versions="5 6"
Modified: packages/yum/build-rpm.sh (+74 -18)
===================================================================
--- packages/yum/build-rpm.sh 2011-12-28 16:48:49 +0900 (06904a0)
+++ packages/yum/build-rpm.sh 2011-12-28 16:53:39 +0900 (bfd646b)
@@ -3,9 +3,13 @@
LANG=C
PACKAGE=$(cat /tmp/build-package)
-USER_NAME=$(cat /tmp/build-user)
VERSION=$(cat /tmp/build-version)
+SOURCE_BASE_NAME=$(cat /tmp/build-source-base-name)
+USER_NAME=$(cat /tmp/build-user)
DEPENDED_PACKAGES=$(cat /tmp/depended-packages)
+USE_RPMFORGE=$(cat /tmp/build-use-rpmforge)
+USE_ATRPMS=$(cat /tmp/build-use-atrpms)
+BUILD_OPTIONS=$(cat /tmp/build-options)
BUILD_SCRIPT=/tmp/build-${PACKAGE}.sh
run()
@@ -17,18 +21,17 @@ run()
fi
}
-distribution=$(cut -d ' ' -f 1 /etc/redhat-release | tr 'A-Z' 'a-z')
-case $distribution in
- fedora)
- distribution_version=$(cut -d ' ' -f 3 /etc/redhat-release)
- ;;
- centos)
- distribution_version=$(cut -d ' ' -f 4 /etc/redhat-release)
- ;;
-esac
-
-rpmbuild_options=""
+if ! id $USER_NAME >/dev/null 2>&1; then
+ run useradd -m $USER_NAME
+fi
+yum_options=
+distribution=$(cut -d ' ' -f 1 /etc/redhat-release | tr 'A-Z' 'a-z')
+if grep -q Linux /etc/redhat-release; then
+ distribution_version=$(cut -d ' ' -f 4 /etc/redhat-release)
+else
+ distribution_version=$(cut -d ' ' -f 3 /etc/redhat-release)
+fi
if ! rpm -q ${distribution}-release > /dev/null 2>&1; then
packages_dir=/var/cache/yum/core/packages
release_rpm=${distribution}-release-${distribution_version}-*.rpm
@@ -36,10 +39,47 @@ if ! rpm -q ${distribution}-release > /dev/null 2>&1; then
run rpm -Uvh --force ${packages_dir}/ca-certificates-*.rpm
fi
+if test "$USE_RPMFORGE" = "yes"; then
+ if ! rpm -q rpmforge-release > /dev/null 2>&1; then
+ architecture=$(cut -d '-' -f 1 /etc/rpm/platform)
+ rpmforge_url=http://packages.sw.be/rpmforge-release
+ rpmforge_rpm_base=rpmforge-release-0.5.2-2.el5.rf.${architecture}.rpm
+ wget $rpmforge_url/$rpmforge_rpm_base
+ run rpm -Uvh $rpmforge_rpm_base
+ rm $rpmforge_rpm_base
+ sed -i'' -e 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/rpmforge.repo
+ fi
+ yum_options="$yum_options --enablerepo=rpmforge"
+fi
+
+if test "$USE_ATRPMS" = "yes"; then
+ case "$(cat /etc/redhat-release)" in
+ CentOS*)
+ repository_label=CentOS
+ repository_prefix=el
+ ;;
+ *)
+ repository_label=Fedora
+ repository_prefix=f
+ ;;
+ esac
+ cat <<EOF > /etc/yum.repos.d/atrpms.repo
+[atrpms]
+name=${repository_label} \$releasever - \$basearch - ATrpms
+baseurl=http://dl.atrpms.net/${repository_prefix}\$releasever-\$basearch/atrpms/stable
+gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
+gpgcheck=1
+enabled=0
+EOF
+ yum_options="$yum_options --enablerepo=atrpms"
+fi
+
if ! rpm -q groonga-repository > /dev/null 2>&1; then
run rpm -Uvh http://packages.groonga.org/${distribution}/groonga-repository-1.0.0-0.noarch.rpm
fi
+rpmbuild_options="${BUILD_OPTIONS}"
+
case $distribution in
fedora)
DEPENDED_PACKAGES="$DEPENDED_PACKAGES mysql-devel"
@@ -56,9 +96,9 @@ case $distribution in
;;
esac
-run yum update -y
-run yum install -y rpm-build tar ${DEPENDED_PACKAGES}
-run yum clean packages
+run yum update ${yum_options} -y
+run yum install ${yum_options} -y rpm-build tar ${DEPENDED_PACKAGES}
+run yum clean ${yum_options} packages
if ! id $USER_NAME >/dev/null 2>&1; then
run useradd -m $USER_NAME
@@ -83,12 +123,28 @@ mkdir -p rpm/BUILD
mkdir -p rpm/RPMS
mkdir -p rpm/SRPMS
-cp /tmp/mroonga-$VERSION.tar.gz rpm/SOURCES/
-cp /tmp/${PACKAGE}.spec rpm/SPECS/
+if test -f /tmp/${SOURCE_BASE_NAME}-$VERSION-*.src.rpm; then
+ if ! rpm -Uvh /tmp/${SOURCE_BASE_NAME}-$VERSION-*.src.rpm; then
+ cd rpm/SOURCES
+ rpm2cpio /tmp/${SOURCE_BASE_NAME}-$VERSION-*.src.rpm | cpio -id
+ if ! yum info tcp_wrappers-devel >/dev/null 2>&1; then
+ sed -i'' -e 's/tcp_wrappers-devel/tcp_wrappers/g' ${PACKAGE}.spec
+ fi
+ if ! yum info libdb-devel >/dev/null 2>&1; then
+ sed -i'' -e 's/libdb-devel/db4-devel/g' ${PACKAGE}.spec
+ fi
+ sed -i'' -e 's/BuildArch: noarch//g' ${PACKAGE}.spec
+ mv ${PACKAGE}.spec ../SPECS/
+ cd
+ fi
+else
+ cp /tmp/${SOURCE_BASE_NAME}-$VERSION.* rpm/SOURCES/
+ cp /tmp/${PACKAGE}.spec rpm/SPECS/
+fi
chmod o+rx . rpm rpm/RPMS rpm/SRPMS
-rpmbuild -ba $rpmbuild_options rpm/SPECS/${PACKAGE}.spec
+rpmbuild -ba ${rpmbuild_options} rpm/SPECS/${PACKAGE}.spec
EOF
run chmod +x $BUILD_SCRIPT
Added: packages/yum/mysql-mroonga-build-options (+0 -0) 100644
===================================================================
--- /dev/null
+++ packages/yum/mysql-mroonga-build-options 2011-12-28 16:53:39 +0900 (e69de29)