Kouhei Sutou
null+****@clear*****
Sun Sep 28 18:29:28 JST 2014
Kouhei Sutou 2014-09-28 18:29:28 +0900 (Sun, 28 Sep 2014) New Revision: 4428b626d2c7f402b8612eddcc26ee7e544adeb6 https://github.com/groonga/groonga/commit/4428b626d2c7f402b8612eddcc26ee7e544adeb6 Message: package apt: use Vagrant to build deb for Debian We drop jessie and sid support because Vagrant boxes of them don't exist. :< Added files: packages/apt/Vagrantfile packages/apt/env.sh.in Removed files: packages/apt/build-in-chroot.sh packages/apt/groonga-depended-packages packages/apt/groonga-keyring-depended-packages Modified files: .gitignore configure.ac packages/apt/Makefile.am packages/apt/build-deb.sh Modified: .gitignore (+2 -0) =================================================================== --- .gitignore 2014-09-28 14:54:14 +0900 (8be470d) +++ .gitignore 2014-09-28 18:29:28 +0900 (c46a0c7) @@ -96,6 +96,7 @@ cmake_install.cmake /benchmark/bench-query-optimizer /benchmark/bench-range-select /packages/*/*.log +/packages/apt/env.sh /packages/apt/debian/groonga-keyring.postrm /packages/apt/repositories/debian/pool/*/*/*/*/*.diff.gz /packages/apt/repositories/debian/pool/*/*/*/*/*.tar.gz @@ -118,6 +119,7 @@ cmake_install.cmake /packages/apt/repositories/ubuntu/*.conf /packages/apt/groonga-keyring-*/ /packages/apt/groonga-keyring-*.tar.gz +/packages/apt/.vagrant/ /packages/apt/tmp/ /packages/ubuntu/tmp/ /packages/ubuntu/*.tar.gz Modified: configure.ac (+1 -0) =================================================================== --- configure.ac 2014-09-28 14:54:14 +0900 (a09f401) +++ configure.ac 2014-09-28 18:29:28 +0900 (c23c785) @@ -1442,6 +1442,7 @@ AC_OUTPUT([ packages/rpm/centos/groonga.spec packages/rpm/fedora/groonga.spec packages/apt/debian/groonga-keyring.postrm + packages/apt/env.sh packages/yum/env.sh groonga.pc config.sh Modified: packages/apt/Makefile.am (+39 -20) =================================================================== --- packages/apt/Makefile.am 2014-09-28 14:54:14 +0900 (3a6a00a) +++ packages/apt/Makefile.am 2014-09-28 18:29:28 +0900 (484cb3f) @@ -1,8 +1,7 @@ REPOSITORIES_PATH = repositories DISTRIBUTIONS = debian -CHROOT_BASE = /var/lib/chroot ARCHITECTURES = i386 amd64 -CODES = wheezy jessie unstable +CODE_NAMES = wheezy KEYRING_PACKAGE = groonga-keyring KEYRING_VERSION = 2012.05.29 KEYRING_BASE_NAME = $(KEYRING_PACKAGE)-$(KEYRING_VERSION) @@ -31,14 +30,14 @@ download: ensure-rsync-path done sign-packages: - ./sign-packages.sh '$(GPG_UID)' '$(REPOSITORIES_PATH)/' '$(CODES)' + ./sign-packages.sh '$(GPG_UID)' '$(REPOSITORIES_PATH)/' '$(CODE_NAMES)' update-repository: ./update-repository.sh '$(PACKAGE_NAME)' '$(REPOSITORIES_PATH)/' \ - '$(ARCHITECTURES)' '$(CODES)' + '$(ARCHITECTURES)' '$(CODE_NAMES)' sign-repository: - ./sign-repository.sh '$(GPG_UID)' '$(REPOSITORIES_PATH)/' '$(CODES)' + ./sign-repository.sh '$(GPG_UID)' '$(REPOSITORIES_PATH)/' '$(CODE_NAMES)' upload: ensure-rsync-path for distribution in $(DISTRIBUTIONS); do \ @@ -49,31 +48,51 @@ upload: ensure-rsync-path build: build-package-deb build-keyring-deb -build-package-deb: source - ./build-in-chroot.sh \ - $(PACKAGE) $(VERSION) $(srcdir)/.. $(REPOSITORIES_PATH)/ \ - $(CHROOT_BASE) '$(ARCHITECTURES)' '$(CODES)' +run-vagrant: + vagrant destroy --force + for architecture in $(ARCHITECTURES); do \ + for code_name in $(CODE_NAMES); do \ + id=debian-$$code_name-$$architecture; \ + vagrant up $$id || exit 1; \ + vagrant destroy --force $$id; \ + done; \ + done + +build-package-deb: prepare-build-package-deb + $(MAKE) run-vagrant + +prepare-build-package-deb: source env.sh + cp env.sh tmp/ + rm -rf tmp/debian + cp -rp $(srcdir)/../debian/ tmp/ + +source: tmp/$(PACKAGE)-$(VERSION).tar.gz -build-keyring-deb: keyring-source - ./build-in-chroot.sh \ - $(KEYRING_PACKAGE) $(KEYRING_VERSION) $(srcdir) \ - $(REPOSITORIES_PATH)/ $(CHROOT_BASE) \ - '$(ARCHITECTURES)' '$(CODES)' +tmp/$(PACKAGE)-$(VERSION).tar.gz: $(abs_top_builddir)/$(PACKAGE)-$(VERSION).tar.gz + mkdir -p tmp/ + cp $(abs_top_builddir)/$(PACKAGE)-$(VERSION).tar.gz $@ -source: ../$(PACKAGE)-$(VERSION).tar.gz -../$(PACKAGE)-$(VERSION).tar.gz: - ln -s $(abs_top_builddir)/$(PACKAGE)-$(VERSION).tar.gz ../ +build-keyring-deb: prepare-build-keyring-deb + $(MAKE) run-vagrant -keyring-source: $(KEYRING_BASE_NAME).tar.gz +keyring-source: tmp/$(KEYRING_BASE_NAME).tar.gz ensure-public-key: gpg --list-keys '$(GPG_UID)' > /dev/null || \ gpg --keyserver keyserver.ubuntu.com --recv-key '$(GPG_UID)' -$(KEYRING_BASE_NAME).tar.gz: ensure-public-key +tmp/$(KEYRING_BASE_NAME).tar.gz: ensure-public-key rm -rf $(KEYRING_BASE_NAME) mkdir -p $(KEYRING_BASE_NAME) gpg --armor --export '$(GPG_UID)' > \ $(KEYRING_BASE_NAME)/groonga-keyring.gpg - tar cvzf $(KEYRING_BASE_NAME).tar.gz $(KEYRING_BASE_NAME) + mkdir -p tmp/ + tar cvzf tmp/$(KEYRING_BASE_NAME).tar.gz $(KEYRING_BASE_NAME) + +prepare-build-keyring-deb: keyring-source + echo "PACKAGE=$(KEYRING_PACKAGE)" > tmp/env.sh + echo "VERSION=$(KEYRING_VERSION)" >> tmp/env.sh + echo "DEPENDED_PACKAGES='gnupg'" >> tmp/env.sh + rm -rf tmp/debian + cp -a $(srcdir)/debian/ tmp/ Added: packages/apt/Vagrantfile (+30 -0) 100644 =================================================================== --- /dev/null +++ packages/apt/Vagrantfile 2014-09-28 18:29:28 +0900 (429768e) @@ -0,0 +1,30 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! +VAGRANTFILE_API_VERSION = "2" + +Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + vms = [ + { + :id => "debian-wheezy-i386", + :box_url => "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_debian-7.6-i386_chef-provisionerless.box +", + }, + { + :id => "debian-wheezy-amd64", + :box_url => "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_debian-7.6_chef-provisionerless.box", + }, + ] + + vms.each do |vm| + config.vm.define(vm[:id]) do |node| + node.vm.box = vm[:id] + node.vm.box_url = vm[:box_url] + node.vm.provision(:shell, :path => "build-deb.sh") + node.vm.provider("virtualbox") do |virtual_box| + virtual_box.memory = 768 + end + end + end +end Modified: packages/apt/build-deb.sh (+35 -99) =================================================================== --- packages/apt/build-deb.sh 2014-09-28 14:54:14 +0900 (1f5a5b0) +++ packages/apt/build-deb.sh 2014-09-28 18:29:28 +0900 (8c73947) @@ -2,114 +2,50 @@ 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 - run() { - "$@" - if test $? -ne 0; then - echo "Failed $@" - exit 1 - fi + "$@" + if test $? -ne 0; then + echo "Failed $@" + exit 1 + fi } -if [ ! -x /usr/bin/lsb_release ]; then - run apt-get update - run apt-get install -y lsb-release -fi - -distribution=$(lsb_release --id --short) -code_name=$(lsb_release --codename --short) - -security_list=/etc/apt/sources.list.d/security.list -if [ ! -f "${security_list}" ]; then - case ${distribution} in - Debian) - if [ "${code_name}" = "sid" ]; then - touch "${security_list}" - else - cat <<EOF > "${security_list}" -deb http://security.debian.org/ ${code_name}/updates main -deb-src http://security.debian.org/ ${code_name}/updates main -EOF - fi - ;; - Ubuntu) - cat <<EOF > "${security_list}" -deb http://security.ubuntu.com/ubuntu ${code_name}-security main restricted -deb-src http://security.ubuntu.com/ubuntu ${code_name}-security main restricted -EOF - ;; - esac -fi +. /vagrant/tmp/env.sh -sources_list=/etc/apt/sources.list -if [ "$distribution" = "Ubuntu" ] && \ - ! (grep '^deb' $sources_list | grep -q universe); then - run sed -i'' -e 's/main$/main universe/g' $sources_list -fi +swap_file=/tmp/swap +run dd if=/dev/zero of="$swap_file" bs=1024 count=3024K +run mkswap "$swap_file" +run swapon "$swap_file" -if [ ! -x /usr/bin/aptitude ]; then - run apt-get update - run apt-get install -y aptitude -fi -run aptitude update -V -D -run aptitude safe-upgrade -V -D -y +run apt-get update +run apt-get install -y lsb-release -run aptitude install -V -D -y ruby - -if aptitude show libmsgpack-dev > /dev/null 2>&1; then - DEPENDED_PACKAGES="${DEPENDED_PACKAGES} libmsgpack-dev" -else - ruby -i'' -ne 'print $_ unless /libmsgpack/' /tmp/${PACKAGE}-debian/control -fi - -case $(lsb_release -s -c) in - jessie|sid) - DEPENDED_PACKAGES="${DEPENDED_PACKAGES} libzmq3-dev" - ;; - *) - DEPENDED_PACKAGES="${DEPENDED_PACKAGES} libzmq-dev" - ;; +distribution=$(lsb_release --id --short | tr 'A-Z' 'a-z') +code_name=$(lsb_release --codename --short) +case "${distribution}" in + debian) + component=main + ;; + ubuntu) + component=universe + ;; esac -if aptitude show libevent-dev > /dev/null 2>&1; then - DEPENDED_PACKAGES="${DEPENDED_PACKAGES} libevent-dev" -else - ruby -i'' -ne 'print $_ unless /libevent/' /tmp/${PACKAGE}-debian/control -fi - -if aptitude show liblzo2-dev > /dev/null 2>&1; then - DEPENDED_PACKAGES="${DEPENDED_PACKAGES} liblzo2-dev" -else - ruby -i'' -ne 'print $_ unless /liblzo2-dev/' /tmp/${PACKAGE}-debian/control -fi - -run aptitude install -V -D -y devscripts ${DEPENDED_PACKAGES} -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 +run apt-get install -V -y build-essential devscripts ${DEPENDED_PACKAGES} -cp /tmp/${PACKAGE}-${VERSION}.tar.gz build/${PACKAGE}_${VERSION}.orig.tar.gz -cd build -tar xfz ${PACKAGE}_${VERSION}.orig.tar.gz -cd ${PACKAGE}-${VERSION}/ -cp -rp /tmp/${PACKAGE}-debian debian +run mkdir -p build +run cp /vagrant/tmp/${PACKAGE}-${VERSION}.tar.gz \ + build/${PACKAGE}_${VERSION}.orig.tar.gz +run cd build +run tar xfz ${PACKAGE}_${VERSION}.orig.tar.gz +run cd ${PACKAGE}-${VERSION}/ +run cp -rp /vagrant/tmp/debian debian # export DEB_BUILD_OPTIONS=noopt -debuild -us -uc -EOF +run debuild -us -uc +run cd - -run chmod +x $BUILD_SCRIPT -run su - $USER_NAME $BUILD_SCRIPT +package_initial=$(echo "${PACKAGE}" | sed -e 's/\(.\).*/\1/') +pool_dir="/vagrant/repositories/${distribution}/pool/${code_name}/${component}/${package_initial}/${PACKAGE}" +run mkdir -p "${pool_dir}/" +run cp *.tar.gz *.dsc *.deb "${pool_dir}/" Deleted: packages/apt/build-in-chroot.sh (+0 -134) 100755 =================================================================== --- packages/apt/build-in-chroot.sh 2014-09-28 14:54:14 +0900 (9d97d42) +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/sh - -if [ $# != 7 ]; then - echo "Usage: $0 PACKAGE VERSION SOURCE_DIR DESTINATION CHROOT_BASE ARCHITECTURES CODES" - echo " e.g.: $0 groonga 0.1.9 SOURCE_DIR repositories/ /var/lib/chroot 'i386 amd64' 'lenny unstable hardy karmic'" - exit 1 -fi - -PACKAGE=$1 -VERSION=$2 -SOURCE_DIR=$3 -DESTINATION=$4 -CHROOT_BASE=$5 -ARCHITECTURES=$6 -CODES=$7 - -PATH=/usr/local/sbin:/usr/sbin:$PATH - -script_base_dir=`dirname $0` - -if test "$PARALLEL" = "yes"; then - parallel="yes" -else - parallel="no" -fi - -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 - wheezy|jessie|unstable) - run_sudo sed -i'' -e 's/us/jp/' $base_dir/etc/apt/sources.list - ;; - *) - run_sudo sed -i'' \ - -e 's,http://archive,http://jp.archive,' \ - -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 - wheezy|jessie|unstable) - distribution=debian - component=main - ;; - *) - distribution=ubuntu - component=universe - ;; - esac - - source_dir=${SOURCE_DIR} - build_user=${PACKAGE}-build - build_user_dir=${base_dir}/home/$build_user - build_dir=${build_user_dir}/build - pool_base_dir=${DESTINATION}${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_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 - if test "$parallel" = "yes"; then - build $architecture $code_name & - else - mkdir -p tmp - build_log=tmp/build-$code_name-$architecture.log - build $architecture $code_name 2>&1 | tee $build_log - fi; - done; -done - -if test "$parallel" = "yes"; then - wait -fi Added: packages/apt/env.sh.in (+13 -0) 100644 =================================================================== --- /dev/null +++ packages/apt/env.sh.in 2014-09-28 18:29:28 +0900 (0b56e9f) @@ -0,0 +1,13 @@ +PACKAGE=@PACKAGE@ +VERSION=@VERSION@ +DEPENDED_PACKAGES=" +debhelper +autotools-dev +zlib1g-dev +liblzo2-dev +libmsgpack-dev +libzmq-dev +libevent-dev +libmecab-dev +libpcre3-dev +" Deleted: packages/apt/groonga-depended-packages (+0 -7) 100644 =================================================================== --- packages/apt/groonga-depended-packages 2014-09-28 14:54:14 +0900 (35d5f1e) +++ /dev/null @@ -1,7 +0,0 @@ -debhelper -autotools-dev -pkg-config -libmecab-dev -ruby -zlib1g-dev -libpcre3-dev Deleted: packages/apt/groonga-keyring-depended-packages (+0 -1) 100644 =================================================================== --- packages/apt/groonga-keyring-depended-packages 2014-09-28 14:54:14 +0900 (a8ef404) +++ /dev/null @@ -1 +0,0 @@ -gnupg -------------- next part -------------- HTML����������������������������... Download