[Groonga-mysql-commit] mroonga/mroonga [master] [yum] update based build scripts.

Back to archive index

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)




Groonga-mysql-commit メーリングリストの案内
Back to archive index