[Groonga-mysql-commit] mroonga/mroonga [master] add files for creating mroonga.

Back to archive index

null+****@clear***** null+****@clear*****
2010年 8月 23日 (月) 16:43:27 JST


Kouhei Sutou	2010-08-23 07:43:27 +0000 (Mon, 23 Aug 2010)

  New Revision: eff60302091559f5ea0733c2181b64f1efdcfb27

  Log:
    add files for creating mroonga.

  Added files:
    apt/Makefile.am
    apt/build-deb.sh
    apt/build-in-chroot.sh
    apt/groonga-storage-engine-depended-packages
    apt/sign-repository.sh
    apt/update-repository.sh
  Modified files:
    .gitignore
    configure.ac

  Modified: .gitignore (+2 -0)
===================================================================
--- .gitignore    2010-08-23 05:43:46 +0000 (6b3156e)
+++ .gitignore    2010-08-23 07:43:27 +0000 (35ca5f2)
@@ -10,6 +10,8 @@ Makefile
 Makefile.in
 cscope.out
 /aclocal.m4
+/apt/debian/
+/apt/ubuntu/
 /autom4te.cache
 /config.guess
 /config.h

  Added: apt/Makefile.am (+44 -0) 100644
===================================================================
--- /dev/null
+++ apt/Makefile.am    2010-08-23 07:43:27 +0000 (f89649f)
@@ -0,0 +1,44 @@
+DISTRIBUTIONS = debian ubuntu
+CHROOT_BASE = /var/lib/chroot
+ARCHITECTURES = i386 amd64
+CODES = squeeze unstable lucid
+
+all:
+
+release: remove-existing-packages build update sign upload
+
+remove-existing-packages:
+	for distribution in $(DISTRIBUTIONS); do	\
+	  find $${distribution}/pool -type f -delete;	\
+	done
+
+update:
+	./update-repository.sh '$(ARCHITECTURES)' '$(CODES)'
+
+sign:
+	./sign-repository.sh '$(CODES)'
+
+ensure-rsync-path:
+	@if test -z "$(RSYNC_PATH)"; then				\
+	  echo "--with-rsync-path configure option must be specified.";	\
+	  false;							\
+	fi
+
+upload: ensure-rsync-path
+	for distribution in $(DISTRIBUTIONS); do			\
+	  (cd $${distribution};						\
+	   rsync -avz dists pool $(RSYNC_PATH)/$${distribution};	\
+	  );								\
+	done
+
+rsync:
+	for distribution in $(DISTRIBUTIONS); do			\
+	  (cd $${distribution};						\
+	   rsync -avz $(RSYNC_PATH)/$${distribution}/pool/ pool;	\
+	  );								\
+	done
+
+build:
+	./build-in-chroot.sh \
+	  $(PACKAGE) $(VERSION) $(CHROOT_BASE) \
+	  '$(ARCHITECTURES)' '$(CODES)'

  Added: apt/build-deb.sh (+59 -0) 100755
===================================================================
--- /dev/null
+++ apt/build-deb.sh    2010-08-23 07:43:27 +0000 (506a50d)
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+LANG=C
+
+PACKAGE=$(cat /tmp/build-package)
+USER_NAME=$(cat /tmp/build-user)
+VERSION=$(cat /tmp/build-version)
+DEPENDED_PACKAGES=$(cat /tmp/depended-packages)
+BUILD_SCRIPT=/tmp/build-deb-in-chroot.sh
+
+mysql_server_package=mysql-server-5.1
+
+run()
+{
+    "$@"
+    if test $? -ne 0; then
+	echo "Failed $@"
+	exit 1
+    fi
+}
+
+if [ ! -x /usr/bin/aptitude ]; then
+    run apt-get install -y aptitude
+fi
+run aptitude update -V -D
+run aptitude safe-upgrade -V -D -y
+
+run aptitude install -V -D -y devscripts ${DEPENDED_PACKAGES}
+run aptitude build-dep -V -D -y ${mysql_server_package}
+run aptitude clean
+
+if ! id $USER_NAME >/dev/null 2>&1; then
+    run useradd -m $USER_NAME
+fi
+
+cat <<EOF > $BUILD_SCRIPT
+#!/bin/sh
+
+rm -rf build
+mkdir -p build
+
+cp /tmp/${PACKAGE}-${VERSION}.tar.gz build/${PACKAGE}_${VERSION}.orig.tar.gz
+cd build
+
+rm -rf mysql-package
+mkdir -p mysql-package
+cd mysql-package
+apt-get source -b ${mysql_server_package}
+cd ..
+ln -fs \$(find mysql-package -maxdepth 1 -type 1) mysql
+
+tar xfz ${PACKAGE}_${VERSION}.orig.tar.gz
+cd ${PACKAGE}-${VERSION}/
+cp -rp /tmp/${PACKAGE}-debian debian
+debuild -us -uc
+EOF
+
+run chmod +x $BUILD_SCRIPT
+run su - $USER_NAME $BUILD_SCRIPT

  Added: apt/build-in-chroot.sh (+120 -0) 100755
===================================================================
--- /dev/null
+++ apt/build-in-chroot.sh    2010-08-23 07:43:27 +0000 (490c893)
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+if [ $# != 5 ]; then
+    echo "Usage: $0 PACKAGE VERSION CHROOT_BASE ARCHITECTURES CODES"
+    echo " e.g.: $0 groonga 0.1.9 /var/lib/chroot 'i386 amd64' 'lenny unstable hardy karmic'"
+    exit 1
+fi
+
+PACKAGE=$1
+VERSION=$2
+CHROOT_BASE=$3
+ARCHITECTURES=$4
+CODES=$5
+
+PATH=/usr/local/sbin:/usr/sbin:$PATH
+
+script_base_dir=`dirname $0`
+
+run()
+{
+    "$@"
+    if test $? -ne 0; then
+	echo "Failed $@"
+	exit 1
+    fi
+}
+
+run_sudo()
+{
+    run sudo "$@"
+}
+
+build_chroot()
+{
+    architecture=$1
+    code_name=$2
+
+    run_sudo debootstrap --arch $architecture $code_name $base_dir
+
+    case $code_name in
+	lenny|squeeze|unstable)
+	    run_sudo sed -i'' -e 's/us/jp/' $base_dir/etc/apt/sources.list
+	    ;;
+	*)
+	    run_sudo sed -i'' -e 's/main$/main universe/' \
+		$base_dir/etc/apt/sources.list
+	    ;;
+    esac
+
+    run_sudo sh -c "echo >> /etc/fstab"
+    run_sudo sh -c "echo /sys ${base_dir}/sys none bind 0 0 >> /etc/fstab"
+    run_sudo sh -c "echo /dev ${base_dir}/dev none bind 0 0 >> /etc/fstab"
+    run_sudo sh -c "echo devpts-chroot ${base_dir}/dev/pts devpts defaults 0 0 >> /etc/fstab"
+    run_sudo sh -c "echo proc-chroot ${base_dir}/proc proc defaults 0 0 >> /etc/fstab"
+    run_sudo mount ${base_dir}/sys
+    run_sudo mount ${base_dir}/dev
+    run_sudo mount ${base_dir}/dev/pts
+    run_sudo mount ${base_dir}/proc
+}
+
+build()
+{
+    architecture=$1
+    code_name=$2
+
+    target=${code_name}-${architecture}
+    base_dir=${CHROOT_BASE}/${target}
+    if [ ! -d $base_dir ]; then
+	run build_chroot $architecture $code_name
+    fi
+
+    case ${code_name} in
+	lenny|squeeze|unstable)
+	    distribution=debian
+	    component=main
+	    ;;
+	*)
+	    distribution=ubuntu
+	    component=universe
+	    ;;
+    esac
+
+    source_dir=${script_base_dir}/..
+    build_user=${PACKAGE}-build
+    build_user_dir=${base_dir}/home/$build_user
+    build_dir=${build_user_dir}/build
+    pool_base_dir=${script_base_dir}/${distribution}/pool/${code_name}/${component}
+    package_initial=$(echo ${PACKAGE} | sed -e 's/\(.\).*/\1/')
+    pool_dir=${pool_base_dir}/${package_initial}/${PACKAGE}
+    run cp $source_dir/${PACKAGE}-${VERSION}.tar.gz \
+	${CHROOT_BASE}/$target/tmp/
+    run rm -rf ${CHROOT_BASE}/$target/tmp/${PACKAGE}-debian
+    run cp -rp $source_dir/debian/ \
+	${CHROOT_BASE}/$target/tmp/${PACKAGE}-debian
+    run echo $PACKAGE > ${CHROOT_BASE}/$target/tmp/build-package
+    run echo $VERSION > ${CHROOT_BASE}/$target/tmp/build-version
+    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-deb.sh \
+	${CHROOT_BASE}/$target/tmp/
+    run cat <<EOF > /tmp/groonga.list
+deb http://packages.clear-code.com/${distribution}/ ${code_name} ${component}
+deb-src http://packages.clear-code.com/${distribution}/ ${code_name} ${component}
+EOF
+    run_sudo cp /tmp/groonga.list \
+	${CHROOT_BASE}/${target}/etc/apt/sources.list.d/
+    run_sudo rm -rf $build_dir
+    run_sudo su -c "/usr/sbin/chroot ${CHROOT_BASE}/$target /tmp/build-deb.sh"
+    run mkdir -p $pool_dir
+    for path in $build_dir/*; do
+	[ -f $path ] && run cp -p $path $pool_dir/
+    done
+}
+
+for architecture in $ARCHITECTURES; do
+    for code_name in $CODES; do
+	build $architecture $code_name
+    done;
+done

  Added: apt/groonga-storage-engine-depended-packages (+5 -0) 100644
===================================================================
--- /dev/null
+++ apt/groonga-storage-engine-depended-packages    2010-08-23 07:43:27 +0000 (7f820e5)
@@ -0,0 +1,5 @@
+debhelper
+cdbs
+autotools-dev
+quilt
+libgroonga-dev

  Added: apt/sign-repository.sh (+35 -0) 100755
===================================================================
--- /dev/null
+++ apt/sign-repository.sh    2010-08-23 07:43:27 +0000 (da5f905)
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+script_base_dir=`dirname $0`
+
+if [ $# != 1 ]; then
+    echo "Usage: $0 CODES"
+    echo " e.g.: $0 'lenny unstable hardy karmic'"
+    exit 1
+fi
+
+CODES=$1
+
+run()
+{
+    "$@"
+    if test $? -ne 0; then
+	echo "Failed $@"
+	exit 1
+    fi
+}
+
+for code_name in ${CODES}; do
+    case ${code_name} in
+	lenny|squeeze|unstable)
+	    distribution=debian
+	    ;;
+	*)
+	    distribution=ubuntu
+	    ;;
+    esac
+
+    release=${distribution}/dists/${code_name}/Release
+    rm -f ${release}.gpg
+    gpg --sign -ba -o ${release}.gpg ${release}
+done

  Added: apt/update-repository.sh (+47 -0) 100755
===================================================================
--- /dev/null
+++ apt/update-repository.sh    2010-08-23 07:43:27 +0000 (00140c1)
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+script_base_dir=`dirname $0`
+
+if [ $# != 2 ]; then
+    echo "Usage: $0 ARCHITECTURES CODES"
+    echo " e.g.: $0 'i386 amd64' 'lenny unstable hardy karmic'"
+    exit 1
+fi
+
+ARCHITECTURES=$1
+CODES=$2
+
+run()
+{
+    "$@"
+    if test $? -ne 0; then
+	echo "Failed $@"
+	exit 1
+    fi
+}
+
+for code_name in ${CODES}; do
+    case ${code_name} in
+	lenny|squeeze|unstable)
+	    distribution=debian
+	    component=main
+	    ;;
+	*)
+	    distribution=ubuntu
+	    component=universe
+	    ;;
+    esac
+
+    (cd ${distribution}
+	for architecture in ${ARCHITECTURES}; do
+	    mkdir -p dists/${code_name}/${component}/binary-${architecture}
+	    mkdir -p dists/${code_name}/${component}/source
+	done
+	rm -f *.db
+	apt-ftparchive generate generate-${code_name}.conf
+	rm -f dists/${code_name}/Release*
+	apt-ftparchive -c release-${code_name}.conf \
+	    release dists/${code_name} > /tmp/Release
+	mv /tmp/Release dists/${code_name}
+    );
+done

  Modified: configure.ac (+1 -0)
===================================================================
--- configure.ac    2010-08-23 05:43:46 +0000 (0c2c1e0)
+++ configure.ac    2010-08-23 07:43:27 +0000 (02ecf68)
@@ -176,5 +176,6 @@ AC_CONFIG_FILES([
   Makefile
   test/Makefile
   test/unit/Makefile
+  apt/Makefile
 ])
 AC_OUTPUT




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