HAYASHI Kentaro
null+****@clear*****
Mon Jan 20 18:52:05 JST 2014
HAYASHI Kentaro 2014-01-20 18:52:05 +0900 (Mon, 20 Jan 2014) New Revision: 8d3f80888a5398f5fe8a0c5948afc184e7767d4b https://github.com/groonga/groonga-gobject/commit/8d3f80888a5398f5fe8a0c5948afc184e7767d4b Message: rpm fedora: add spec and related files Added files: packages/rpm/Makefile.am packages/rpm/fedora/Makefile.am packages/rpm/fedora/groonga-gobject.spec.in packages/yum/Makefile.am packages/yum/build-in-chroot.sh packages/yum/build-rpm.sh packages/yum/groonga-gobject-build-options packages/yum/groonga-gobject-depended-packages packages/yum/sign-rpm.sh packages/yum/update-repository.sh Added: packages/rpm/Makefile.am (+1 -0) 100644 =================================================================== --- /dev/null +++ packages/rpm/Makefile.am 2014-01-20 18:52:05 +0900 (5e83c67) @@ -0,0 +1 @@ +SUBDIRS = fedora Added: packages/rpm/fedora/Makefile.am (+2 -0) 100644 =================================================================== --- /dev/null +++ packages/rpm/fedora/Makefile.am 2014-01-20 18:52:05 +0900 (6604816) @@ -0,0 +1,2 @@ +noinst_DATA = groonga-gobject.spec + Added: packages/rpm/fedora/groonga-gobject.spec.in (+67 -0) 100644 =================================================================== --- /dev/null +++ packages/rpm/fedora/groonga-gobject.spec.in 2014-01-20 18:52:05 +0900 (61fe6d8) @@ -0,0 +1,67 @@ +%global __provides_exclude_from ^%{_libdir}/groonga/plugins/normalizers/mysql\\.so$ + +Name: groonga-gobject +Version: @VERSION@ +Release: 1%{?dist} +Summary: GObject wrapper of Groonga + +Group: Development/Libraries +License: LGPLv3 +URL: https://github.com/groonga/groonga-gobject +Source0: http://packages.groonga.org/source/%{name}/%{name}-%{version}.tar.gz + +BuildRequires: groonga-devel >= 3.1.0 +BuildRequires: gobject-introspection-devel +Requires: groonga-libs >= 3.1.0 +Requires: gobject-introspection +ExclusiveArch: %{ix86} x86_64 + +%description +GObject Introspection typelib for Groonga. + +%package devel +Summary: Development files for groonga-gobject +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +GObject Introspection development file for groonga-gobject + +%package doc +Summary: Document files for groonga-gobject +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description doc +GObject Introspection document for groonga-gobject + +%prep +%setup -q + +%build +%configure \ + --disable-static +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool +make %{?_smp_mflags} + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" +rm $RPM_BUILD_ROOT%{_libdir}/groonga/plugins/*/*.la + +%files +%dir %{_libdir}/groonga +%dir %{_libdir}/groonga/plugins +%dir %{_libdir}/groonga/plugins/normalizers +%{_libdir}/groonga/plugins/normalizers/mysql.so +%{_datadir}/doc/groonga-normalizer-mysql/ + +%files devel +%{_libdir}/pkgconfig/groonga-normalizer-mysql.pc + +%files doc +%doc README AUTHORS COPYING + +%changelog +* Wed Jan 29 2014 HAYASHI Kentaro <hayashi �� clear-code.com> - 1.0.0-1 +- initial packaging for Fedora Added: packages/yum/Makefile.am (+70 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/Makefile.am 2014-01-20 18:52:05 +0900 (282518f) @@ -0,0 +1,70 @@ +REPOSITORIES_PATH = repositories +DISTRIBUTIONS = fedora centos +ARCHITECTURES = i386 x86_64 +CHROOT_BASE = /var/lib/chroot +BASE_URL_PREFIX = http://packages.groonga.org +HAVE_DEVELOPMENT_BRANCH = no +USE_RPMFORGE = no +USE_ATRPMS = no + +release: download build sign-packages update-repository upload + +ensure-rsync-path: + @if test -z "$(RSYNC_PATH)"; then \ + echo "--with-rsync-path configure option must be specified."; \ + false; \ + fi + +sign-packages: + ./sign-rpm.sh '$(GPG_UID)' '$(REPOSITORIES_PATH)/' \ + '$(DISTRIBUTIONS)' + +update-repository: RPM-GPG-KEY-$(PACKAGE) + ./update-repository.sh '$(PACKAGE)' '$(REPOSITORIES_PATH)/' \ + '$(DISTRIBUTIONS)' + +upload: ensure-rsync-path + for distribution in $(DISTRIBUTIONS); do \ + rsync -avz --progress --delete --exclude .gitignore \ + $(REPOSITORIES_PATH)/$${distribution}/ \ + $(RSYNC_PATH)/$${distribution}; \ + done + +download: ensure-rsync-path + 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: source + ./build-in-chroot.sh \ + $(PACKAGE) \ + $(VERSION) \ + $(top_builddir)/$(PACKAGE) \ + ../rpm \ + $(REPOSITORIES_PATH)/ \ + $(CHROOT_BASE) \ + '$(ARCHITECTURES)' \ + '$(DISTRIBUTIONS)' \ + '$(HAVE_DEVELOPMENT_BRANCH)' \ + '$(USE_RPMFORGE)' \ + '$(USE_ATRPMS)' + +ensure-public-key: + gpg --list-keys '$(GPG_UID)' > /dev/null || \ + gpg --keyserver keyserver.ubuntu.com --recv-key '$(GPG_UID)' + +RPM-GPG-KEY-$(PACKAGE): ensure-public-key + gpg --armor --export '$(GPG_UID)' > $@ + +source: ../$(PACKAGE)-$(VERSION).tar.gz + +../$(PACKAGE)-$(VERSION).tar.gz: $(abs_top_builddir)/$(PACKAGE)-$(VERSION).tar.gz + ln -s $(abs_top_builddir)/$(PACKAGE)-$(VERSION).tar.gz ../ + +$(abs_top_builddir)/$(PACKAGE)-$(VERSION).tar.gz: + cd $(abs_top_builddir) && $(MAKE) dist Added: packages/yum/build-in-chroot.sh (+182 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/build-in-chroot.sh 2014-01-20 18:52:05 +0900 (f1ae789) @@ -0,0 +1,182 @@ +#!/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 +} + +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}/rpmbuild + rpm_dir=${rpm_base_dir}/RPMS/${architecture} + if [ $distribution = "fedora" ]; then + if [ $architecture = "i386" ]; then + rpm_dir=${rpm_base_dir}/RPMS/i686 + fi + fi + 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 ${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 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="20" + ;; + centos) + if [ -n "$CENTOS_VERSIONS" ]; then + distribution_versions="$CENTOS_VERSIONS" + else + distribution_versions="5 6" + fi + ;; + esac + for distribution_version in $distribution_versions; do + if test "$parallel" = "yes"; then + build $architecture $distribution $distribution_version & + else + mkdir -p tmp + 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 (+130 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/build-rpm.sh 2014-01-20 18:52:05 +0900 (58897d9) @@ -0,0 +1,130 @@ +#!/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 + +rpmbuild_options="${BUILD_OPTIONS}" + +run yum update ${yum_options} -y +run yum install ${yum_options} -y rpm-build rpmdevtools tar ${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 [ -x /usr/bin/rpmdev-setuptree ]; then + rm -rf .rpmmacros + rpmdev-setuptree +else + cat <<EOM > ~/.rpmmacros +%_topdir \$HOME/rpmbuild +EOM + + mkdir -p rpmbuild/SOURCES + mkdir -p rpmbuild/SPECS + mkdir -p rpmbuild/BUILD + mkdir -p rpmbuild/RPMS + mkdir -p rpmbuild/SRPMS +fi + +if test -f /tmp/${SOURCE_BASE_NAME}-$VERSION-*.src.rpm; then + if ! rpm -Uvh /tmp/${SOURCE_BASE_NAME}-$VERSION-*.src.rpm; then + cd rpmbuild/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.* rpmbuild/SOURCES/ + cp /tmp/${PACKAGE}.spec rpmbuild/SPECS/ +fi + +chmod o+rx . rpmbuild rpmbuild/RPMS rpmbuild/SRPMS + +rpmbuild -ba ${rpmbuild_options} rpmbuild/SPECS/${PACKAGE}.spec +EOF + +run chmod +x $BUILD_SCRIPT +run su - $USER_NAME $BUILD_SCRIPT Added: packages/yum/groonga-gobject-build-options (+0 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/groonga-gobject-build-options 2014-01-20 18:52:05 +0900 (e69de29) Added: packages/yum/groonga-gobject-depended-packages (+8 -0) 100644 =================================================================== --- /dev/null +++ packages/yum/groonga-gobject-depended-packages 2014-01-20 18:52:05 +0900 (da290f2) @@ -0,0 +1,8 @@ +intltool +libtool +gcc +gcc-c++ +make +tar +groonga-devel +gobject-introspection-devel Added: packages/yum/sign-rpm.sh (+37 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/sign-rpm.sh 2014-01-20 18:52:05 +0900 (2022ca6) @@ -0,0 +1,37 @@ +#!/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 echo $rpms | xargs rpm \ + -D "_gpg_name ${GPG_UID}" \ + -D "_gpg_digest_algo sha1" \ + -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 Added: packages/yum/update-repository.sh (+31 -0) 100755 =================================================================== --- /dev/null +++ packages/yum/update-repository.sh 2014-01-20 18:52:05 +0900 (ea0fc4b) @@ -0,0 +1,31 @@ +#!/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; + + run cp $script_base_dir/RPM-GPG-KEY-${GPG_KEY_NAME} \ + ${DESTINATION}${distribution}/RPM-GPG-KEY-${GPG_KEY_NAME}; +done -------------- next part -------------- HTML����������������������������... Download