null+****@clear*****
null+****@clear*****
2012年 7月 3日 (火) 00:26:36 JST
Kouhei Sutou 2012-07-03 00:26:36 +0900 (Tue, 03 Jul 2012) New Revision: 3e3c746c194aefbd01bfbfe135a7079ff2b21ee7 https://github.com/groonga/gcs/commit/3e3c746c194aefbd01bfbfe135a7079ff2b21ee7 Log: Add RPM package build scripts msgpack2 is only added. Added files: packages/rpm/nodejs-msgpack2.spec packages/yum/Makefile packages/yum/build-in-chroot.sh packages/yum/build-rpm.sh packages/yum/nodejs-msgpack2-build-options packages/yum/nodejs-msgpack2-depended-packages packages/yum/nodejs-msgpack2-version packages/yum/sign-rpm.sh packages/yum/update-repository.sh Modified files: .gitignore Modified: .gitignore (+1 -0) =================================================================== --- .gitignore 2012-07-02 23:00:16 +0900 (7962627) +++ .gitignore 2012-07-03 00:26:36 +0900 (b0c250b) @@ -2,3 +2,4 @@ /test/tmp /packages/all-in-one/tmp/ /packages/all-in-one/*.tar.gz +/packages/yum/repositories/ Added: packages/rpm/nodejs-msgpack2.spec (+46 -0) 100644 =================================================================== --- /dev/null +++ packages/rpm/nodejs-msgpack2.spec 2012-07-03 00:26:36 +0900 (dd5e982) @@ -0,0 +1,46 @@ +Name: nodejs-msgpack2 +Version: 0.1.7 +Release: 1%{?dist} +Summary: Latest version of node.js msgpack bindings +License: BSD +Group: System Environment/Libraries +URL: https://github.com/JulesAU/node-msgpack +Source0: http://registry.npmjs.org/msgpack2/-/msgpack2-%{version}.tgz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: nodejs-devel +BuildRequires: nodejs-waf + +%if !(0%{?fedora} >= 17) +Requires: nodejs +%endif + +%description +%{summary}. + +%prep +%setup -q -n %{name} + +%build +make + +%install +rm -rf %{buildroot} + +mkdir -p %{buildroot}%{nodejs_libdir}/msgpack2/build/Release +cp -pr lib package.json %{buildroot}%{nodejs_libdir}/msgpack2 +cp -pr build/Release/mpBindings.node \ + %{buildroot}%{nodejs_libdir}/msgpack2/build/Release/ + +%clean +make clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root,-) +%{nodejs_libdir}/msgpack2 +%doc README.md LICENSE + +%changelog +* Thu Jul 5 2012 Kouhei Sutou <kou****@clear*****> - 0.1.7-1 +- initial package Added: packages/yum/Makefile (+54 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/Makefile 2012-07-03 00:26:36 +0900 (263bba3) @@ -0,0 +1,54 @@ +REPOSITORIES_PATH = repositories +DISTRIBUTIONS = fedora centos +ARCHITECTURES = i386 x86_64 +PACKAGES = nodejs-msgpack2 +CHROOT_BASE = /var/lib/chroot +RSYNC_PATH = packa****@packa*****:public +HAVE_DEVELOPMENT_BRANCH = no +USE_RPMFORGE = no +USE_ATRPMS = no +GPG_UID = 45499429 +BASE_URL_PREFIX = http://packages.groonga.org + +release: download build sign update upload + +sign: + ./sign-rpm.sh '$(GPG_UID)' '$(REPOSITORIES_PATH)/' \ + '$(DISTRIBUTIONS)' + +update: + ./update-repository.sh '$(PACKAGE)' '$(REPOSITORIES_PATH)/' \ + '$(DISTRIBUTIONS)' + +upload: + for distribution in $(DISTRIBUTIONS); do \ + rsync -avz --progress --delete --exclude .gitignore \ + $(REPOSITORIES_PATH)/$${distribution}/ \ + $(RSYNC_PATH)/$${distribution}; \ + done + +download: + mkdir -p $(REPOSITORIES_PATH) + for distribution in $(DISTRIBUTIONS); do \ + rsync -avz --progress --delete \ + $(RSYNC_PATH)/$${distribution}/ \ + $(REPOSITORIES_PATH)/$${distribution}; \ + done + +build: build-in-chroot + +build-in-chroot: + for package in $(PACKAGES); do \ + ./build-in-chroot.sh \ + $${package} \ + $$(cat $${package}-version) \ + $${package} \ + ../rpm \ + $(REPOSITORIES_PATH)/ \ + $(CHROOT_BASE) \ + '$(ARCHITECTURES)' \ + '$(DISTRIBUTIONS)' \ + '$(HAVE_DEVELOPMENT_BRANCH)' \ + '$(USE_RPMFORGE)' \ + '$(USE_ATRPMS)'; \ + done Added: packages/yum/build-in-chroot.sh (+177 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/build-in-chroot.sh 2012-07-03 00:26:36 +0900 (b4cdea8) @@ -0,0 +1,177 @@ +#!/bin/sh + +if [ $# != 11 ]; then + echo "Usage: $0 PACKAGE VERSION SOURCE_BASE_NAME SPEC_DIR DESTINATION CHROOT_BASE ARCHITECTURES DISTRIBUTIONS HAVE_DEVELOPMENT_BRANCH USE_RPMFORGE USE_ATRPMS" + echo " e.g.: $0 milter-manager 1.1.1 ../milter-manager ../rpm repositories/ /var/lib/chroot 'i386 x86_64' 'fedora centos' yes no no" + exit 1 +fi + +PACKAGE=$1 +VERSION=$2 +SOURCE_BASE_NAME=$3 +SPEC_DIR=$4 +DESTINATION=$5 +CHROOT_BASE=$6 +ARCHITECTURES=$7 +DISTRIBUTIONS=$8 +HAVE_DEVELOPMENT_BRANCH=$9 +USE_RPMFORGE=$10 +USE_ATRPMS=$11 + +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 + distribution_name=$2 + distribution_version=$3 + + if [ $architecture = "x86_64" ]; then + rinse_architecture="amd64" + distribution_architecture=$architecture + else + rinse_architecture=$architecture + if [ "$distribution_name-$distribution_version" = "centos-5" ]; then + distribution_architecture=$architecture + else + distribution_architecture=i686 + fi + fi + + run_sudo mkdir -p ${base_dir}/etc/rpm + rpm_platform=${distribution_architecture}-${distribution}-linux + run_sudo sh -c "echo ${rpm_platform} > ${base_dir}/etc/rpm/platform" + run_sudo rinse \ + --arch $rinse_architecture \ + --distribution $distribution_name-$distribution_version \ + --directory $base_dir + run_sudo rinse --arch $rinse_architecture --clean-cache + + run_sudo sh -c "echo >> /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}/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() +{ + architecture=$1 + distribution=$2 + distribution_version=$3 + + target=${distribution}-${distribution_version}-${architecture} + base_dir=${CHROOT_BASE}/${target} + if [ ! -d $base_dir ]; then + run build_chroot $architecture $distribution $distribution_version + fi + + 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=${DESTINATION}${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 + 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 ${SPEC_DIR}/${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 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 + run cp -p $rpm_dir/*-${VERSION}* $binary_pool_dir + run cp -p $srpm_dir/*-${VERSION}* $source_pool_dir + + dependencies_dir=${build_user_dir}/dependencies + dependencies_rpm_dir=${dependencies_dir}/RPMS + dependencies_srpm_dir=${dependencies_dir}/SRPMS + if [ -d "${dependencies_rpm_dir}" ]; then + run cp -p ${dependencies_rpm_dir}/* $binary_pool_dir + fi + if [ -d "${dependencies_srpm_dir}" ]; then + run cp -p ${dependencies_srpm_dir}/* $source_pool_dir + fi +} + +for architecture in $ARCHITECTURES; do + for distribution in $DISTRIBUTIONS; do + case $distribution in + fedora) + distribution_versions="16" + ;; + centos) + distribution_versions="6" + ;; + esac + for distribution_version in $distribution_versions; do + if test "$parallel" = "yes"; then + build $architecture $distribution $distribution_version & + else + build_log=/tmp/build-$distribution-$distribution_version-$architecture.log + build $architecture $distribution $distribution_version 2>&1 | tee $build_log + fi; + done; + done; +done + +if test "$parallel" = "yes"; then + wait +fi Added: packages/yum/build-rpm.sh (+129 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/build-rpm.sh 2012-07-03 00:26:36 +0900 (1135ec3) @@ -0,0 +1,129 @@ +#!/bin/sh + +LANG=C + +PACKAGE=$(cat /tmp/build-package) +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() +{ + "$@" + if test $? -ne 0; then + echo "Failed $@" + exit 1 + fi +} + +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 + run rpm -Uvh --force ${packages_dir}/${release_rpm} + 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 + +USE_NODEJS="yes" +if test "$USE_NODEJS" = "yes"; then + if ! rpm -q nodejs-stable-release > /dev/null 2>&1; then + nodejs_release_rpm_base=nodejs-stable-release.noarch.rpm + wget http://nodejs.tchol.org/repocfg/el/$nodejs_release_rpm_base + run yum localinstall -y --nogpgcheck nodejs-stable-release.noarch.rpm + rm $nodejs_release_rpm_base + sed -i'' -e 's/enabled=1/enabled=0/g' /etc/yum.repos.d/nodejs-stable.repo + fi + yum_options="$yum_options --enablerepo=nodejs-stable" +fi + +rpmbuild_options="${BUILD_OPTIONS}" + +run yum update ${yum_options} -y +run yum install ${yum_options} -y rpm-build tar rpmdevtools ${DEPENDED_PACKAGES} +run yum clean ${yum_options} packages + +# for debug +# rpmbuild_options="$rpmbuild_options --define 'optflags -O0 -ggdb3'" + +cat <<EOF > $BUILD_SCRIPT +#!/bin/sh + +if [ ! -f ~/.rpmmacros ]; then + cat <<EOM > ~/.rpmmacros +%_topdir \$HOME/rpm +EOM +fi + +# rm -rf rpm +mkdir -p rpm/SOURCES +mkdir -p rpm/SPECS +mkdir -p rpm/BUILD +mkdir -p rpm/RPMS +mkdir -p rpm/SRPMS + +cp /tmp/${PACKAGE}.spec rpm/SPECS/ +for source in $(spectool rpm/SPECS/${PACKAGE}.spec | sed -e 's,.*,,'); do + if [ ! -f rpm/SOURCES/$source ]; then + spectool -g -R rpm/SPECS/${PACKAGE}.spec + break + fi +done + +chmod o+rx . rpm rpm/RPMS rpm/SRPMS + +rpmbuild -ba ${rpmbuild_options} rpm/SPECS/${PACKAGE}.spec +EOF + +run chmod +x $BUILD_SCRIPT +run su - $USER_NAME $BUILD_SCRIPT Added: packages/yum/nodejs-msgpack2-build-options (+0 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/nodejs-msgpack2-build-options 2012-07-03 00:26:36 +0900 (e69de29) Added: packages/yum/nodejs-msgpack2-depended-packages (+2 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/nodejs-msgpack2-depended-packages 2012-07-03 00:26:36 +0900 (8e2b370) @@ -0,0 +1,2 @@ +nodejs-devel +nodejs-waf Added: packages/yum/nodejs-msgpack2-version (+1 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/nodejs-msgpack2-version 2012-07-03 00:26:36 +0900 (1180819) @@ -0,0 +1 @@ +0.1.7 Added: packages/yum/sign-rpm.sh (+36 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/sign-rpm.sh 2012-07-03 00:26:36 +0900 (0b346ba) @@ -0,0 +1,36 @@ +#!/bin/sh + +script_base_dir=`dirname $0` + +if [ $# != 3 ]; then + echo "Usage: $0 GPG_UID DESTINATION DISTRIBUTIONS" + echo " e.g.: $0 'F10399C0' repositories/ 'fedora centos'" + exit 1 +fi + +GPG_UID=$1 +DESTINATION=$2 +DISTRIBUTIONS=$3 + +run() +{ + "$@" + if test $? -ne 0; then + echo "Failed $@" + exit 1 + fi +} + +rpms="" +for distribution in ${DISTRIBUTIONS}; do + rpms="${rpms} $(echo ${DESTINATION}${distribution}/*/*/*/*.rpm)" +done + +echo "NOTE: YOU JUST ENTER! YOU DON'T NEED TO INPUT PASSWORD!" +echo " IT'S JUST FOR rpm COMMAND RESTRICTION!" +run rpm \ + -D "_gpg_name ${GPG_UID}" \ + -D "__gpg /usr/bin/gpg2" \ + -D "__gpg_check_password_cmd /bin/true true" \ + -D "__gpg_sign_cmd %{__gpg} gpg --batch --no-verbose --no-armor %{?_gpg_digest_algo:--digest-algo %{_gpg_digest_algo}} --no-secmem-warning -u \"%{_gpg_name}\" -sbo %{__signature_filename} %{__plaintext_filename}" \ + --resign $rpms Added: packages/yum/update-repository.sh (+28 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/update-repository.sh 2012-07-03 00:26:36 +0900 (ca76e49) @@ -0,0 +1,28 @@ +#!/bin/sh + +script_base_dir=`dirname $0` + +if [ $# != 3 ]; then + echo "Usage: $0 GPG_KEY_NAME DESTINATION DISTRIBUTIONS" + echo " e.g.: $0 mitler-manager repositories/ 'fedora centos'" + exit 1 +fi + +GPG_KEY_NAME=$1 +DESTINATION=$2 +DISTRIBUTIONS=$3 + +run() +{ + "$@" + if test $? -ne 0; then + echo "Failed $@" + exit 1 + fi +} + +for distribution in ${DISTRIBUTIONS}; do + for dir in ${DESTINATION}${distribution}/*/*; do + test -d $dir && run createrepo $dir + done; +done -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...다운로드