mariadb/debian/rules
unknown 33855978d4 rules:
Protect the control file from running ./configure again


debian/rules:
  Protect the control file from running ./configure again
2007-04-19 23:43:57 +02:00

405 lines
14 KiB
Makefile
Executable file

#!/usr/bin/make -f
export SHELL = /bin/bash
export DH_VERBOSE=1
include debian/defs.mk
changelog_values := $(shell dpkg-parsechangelog \
| awk '/^(Version|Source|Distribution):/ {print $$2}')
PKGSOURCE := $(word 1, $(changelog_values))
PKGVERSION := $(word 2, $(changelog_values))
PKGDISTRO := $(word 3, $(changelog_values))
PKGFLAVOR := $(shell echo $(PKGSOURCE) | perl -nle 's/mysql-(.*?)-\d+.*/$$1/ && print ')
ifeq ("x$(MYSQL_FLAVOR)","x")
export MYSQL_FLAVOR=$(PKGFLAVOR)
endif
ifneq ("x$(MYSQL_FLAVOR)","x")
MYSQL_BRANDED_BASE_VERSION:=$(MYSQL_FLAVOR)-$(MYSQL_BASE_VERSION)
MYSQL_BRANDED_PREVIOUS_BASE_VERSION:=$(MYSQL_FLAVOR)-$(MYSQL_PREVIOUS_BASE_VERSION)
else
ifeq ( "$(MYSQL_BRANDED_BASE_VERSION)","@MYSQL_BRANDED_BASE_VERSION@" )
MYSQL_BRANDED_BASE_VERSION:=$(MYSQL_BASE_VERSION)
MYSQL_BRANDED_PREVIOUS_BASE_VERSION:=$(MYSQL_PREVIOUS_BASE_VERSION)
else
MYSQL_BRANDED_BASE_VERSION:=$(MYSQL_BRANDED_BASE_VERSION)
MYSQL_BRANDED_PREVIOUS_BASE_VERSION:=$(MYSQL_BRANDED_PREVIOUS_BASE_VERSION)
endif
endif
PACKAGE=mysql-$(MYSQL_BRANDED_BASE_VERSION)
PWD=$(shell pwd)
TMP=$(PWD)/debian/tmp/
ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
MAKE_J = $(shell if grep -q processor.*3 /proc/cpuinfo; then echo "-j 4"; else echo ""; fi )
ifeq ($(findstring $(ARCH),i386 sparc),$(ARCH))
USE_ASSEMBLER=--enable-assembler
endif
ifeq ($(findstring $(ARCH), arm),$(ARCH))
FOMIT_FRAME_POINTER=
else
FOMIT_FRAME_POINTER=-fomit-frame-pointer
endif
# trying to raise stability on i386. See #116631
# don't use it on ia64
ifeq ($(findstring $(ARCH),i386),$(ARCH))
FNO_EXCEPTIONS=-fno-exceptions
endif
# This causes seg11 crashes if LDAP is used for groups in /etc/nsswitch.conf
# so it is disabled by default although, according to MySQL, it brings >10%
# performance gain if enabled. See #299382.
ifeq ($(STATIC_MYSQLD), 1)
USE_STATIC_MYSQLD=--with-mysqld-ldflags=-all-static
endif
ifneq ("$(MYSQL_BUILD_TEST)","yes")
MYSQL_BUILD_TEST=no
endif
control-file:
@echo "## This file is autogenerated you want to edit control.in instead" > debian/control.tmp
sed -e "s/@MYSQL_BASE_VERSION@/$(MYSQL_BASE_VERSION)/g" \
-e "s/@MYSQL_BRANDED_BASE_VERSION@/$(MYSQL_BRANDED_BASE_VERSION)/g" \
-e "s/@VERSIONSTRING@/$(VERSIONSTRING)/g" \
-e "s/@MYSQL_PREVIOUS_BASE_VERSION@/$(MYSQL_PREVIOUS_BASE_VERSION)/g" \
-e "s/@MYSQL_BRANDED_PREVIOUS_BASE_VERSION@/$(MYSQL_BRANDED_PREVIOUS_BASE_VERSION)/g" \
-e "s/@MYSQL_SOURCE_BASE_VERSION@/$(MYSQL_SOURCE_BASE_VERSION)/g" \
-e "s/@SHARED_LIB_MAJOR_VERSION@/$(SHARED_LIB_MAJOR_VERSION)/g" \
-e "s/@NDB_SHARED_LIB_MAJOR_VERSION@/$(NDB_SHARED_LIB_MAJOR_VERSION)/g" \
debian/control.in >> debian/control.tmp
[ -e debian/control ] \
&& cmp -s debian/control debian/control.tmp \
&& rm -f debian/control.tmp && exit 0; \
mv debian/control.tmp debian/control
missing:
./BUILD/autorun.sh
configure: configure-stamp
configure-stamp:
@echo "RULES.configure-stamp"
dh_testdir
ifneq ($(ARCH_OS),hurd)
@if [ ! -d /proc/self ]; then echo "/proc IS NEEDED" 1>&2; exit 1; fi
endif
@cp debian/control debian/control.sav
( \
CC="$(MYSQL_BUILD_CC)" \
CXX="$(MYSQL_BUILD_CXX)" \
BUILD_OPTS="${MYSQL_BUILD_OPTS:-''}" \
CFLAGS="${MYSQL_BUILD_CFLAGS:-'-DBIG_JOINS=1 -O2'}" \
CXXFLAGS="${MYSQL_BUILD_CXXFLAGS:-'-DBIG_JOINS=1 -felide-constructors -fno-rtti -O2'}" \
./configure \
--build=${DEB_BUILD_GNU_TYPE} \
--host=${DEB_HOST_GNU_TYPE} \
\
--prefix=/usr \
--exec-prefix=/usr \
--libexecdir=/usr/sbin \
--datadir=/usr/share \
--localstatedir=/var/lib/mysql \
--includedir=/usr/include \
--infodir=/usr/share/info \
--mandir=/usr/share/man \
\
--with-comment="MySQL Server (custom build)" \
--with-server-suffix="-custom" \
\
--enable-shared \
--enable-thread-safe-client \
$(USE_ASSEMBLER) \
--enable-local-infile \
\
--with-big-tables \
--with-unix-socket-path=/var/run/mysqld/mysqld.sock \
--with-mysqld-user=mysql \
$(USE_STATIC_MYSQLD) \
--without-bench \
--with-zlib-dir=bundled \
--with-yassl \
--with-readline \
--with-extra-charsets=all \
--with-innodb \
--with-blackhole-storage-engine \
--with-example-storage-engine \
\
--with-isam \
--with-archive-storage-engine \
--with-csv-storage-engine \
--with-federated-storage-engine \
--without-embedded-server \
--with-ndbcluster \
--with-ndb-shm \
--without-ndb-sci \
--without-ndb-test \
--with-ndb-docs \
$(MYSQL_BUILD_OPTS) \
)
@mv debian/control.sav debian/control
touch configure-stamp
build: build-stamp
build-stamp: configure
dh_testdir
$(MAKE) $(MAKE_J)
if [ -f sql/.libs/mysqld ] ; then \
nm --numeric-sort sql/.libs/mysqld > sql/mysqld.sym ; \
else \
nm --numeric-sort sql/mysqld > sql/mysqld.sym ; \
fi
if [ "${MYSQL_BUILD_TEST}" != "no" ] ; then \
( cd mysql-test ;\
MTR_BUILD_THREAD=auto ; \
export MTR_BUILD_THREAD ; \
perl ./mysql-test-run.pl --force --report-features ; \
perl ./mysql-test-run.pl --force --ps-protocol ; \
true ) \
fi
touch build-stamp
stamp-control:
# We have to prepare the various control files
echo "in stamp-control - BASE_VER==$(MYSQL_BASE_VERSION)"
# We have some naming inconsistencies here...
for f in debian/*.in debian/po/POTFILES.in.in ; do \
f2=`echo $$f | sed "s,BASE,$(MYSQL_BRANDED_BASE_VERSION),g;\
s,PREV,$(MYSQL_BRANDED_PREVIOUS_BASE_VERSION),g;\
s,NLIB,$(NDB_SHARED_LIB_MAJOR_VERSION),g;\
s,SLIB,$(SHARED_LIB_MAJOR_VERSION),g;s,\.in$$,,"`; \
if [ $$f2 != debian/control -a $$f2 != debian/Makefile ]; then \
sed -e "s/@MYSQL_BASE_VERSION@/$(MYSQL_BASE_VERSION)/g" \
-e "s/@MYSQL_BRANDED_BASE_VERSION@/$(MYSQL_BRANDED_BASE_VERSION)/g" \
-e "s/@VERSIONSTRING@/$(VERSIONSTRING)/g" \
-e "s/@PRIORITY@/$(PRIORITY)/g" \
-e "s/@MYSQL_PREVIOUS_BASE_VERSION@/$(MYSQL_PREVIOUS_BASE_VERSION)/g" \
-e "s/@MYSQL_BRANDED_PREVIOUS_BASE_VERSION@/$(MYSQL_BRANDED_PREVIOUS_BASE_VERSION)/g" \
-e "s/@MYSQL_SOURCE_BASE_VERSION@/$(MYSQL_SOURCE_BASE_VERSION)/g" \
-e "s/@SHARED_LIB_MAJOR_VERSION@/$(SHARED_LIB_MAJOR_VERSION)/g" \
-e "s/@NDB_SHARED_LIB_MAJOR_VERSION@/$(NDB_SHARED_LIB_MAJOR_VERSION)/g" \
-e "s,@SCRIPTDIR@,/$(scriptdir),g" \
-e "s,@INFO@,$(findstring info, $(doc_dependencies)),g" \
<$$f >$$f2; \
fi; \
done
echo "MYSQL_BUILD_OPTS=$(MYSQL_BUILD_OPTS)" >> debian/defs.mk
echo "MYSQL_BUILD_CXXFLAGS=$(MYSQL_BUILD_CXXFLAGS)" >> debian/defs.mk
echo "MYSQL_BUILD_CFLAGS=$(MYSQL_BUILD_CFLAGS)" >> debian/defs.mk
echo "MYSQL_BUILD_CC=$(MYSQL_BUILD_CC)" >> debian/defs.mk
echo "MYSQL_BUILD_CXX=$(MYSQL_BUILD_CXX)" >> debian/defs.mk
# depending on two files we expect to be in the root
# to protect from accidentally deleting a whole bunch of
# files somewhere else.
clean: configure.in Makefile.am control-file
rm -f debian/mysql-server-$(MYSQL_BRANDED_BASE_VERSION).mysql.init
# We depend on this later, and delete the results in the mean time
$(MAKE) -f debian/rules stamp-control
dh_testdir
dh_testroot
rm -f configure-stamp
rm -f build-stamp
cp debian/defs.mk debian/defs.mk.sav
cp debian/control debian/control.sav
-make distclean
mv debian/defs.mk.sav debian/defs.mk
mv debian/control.sav debian/control
debconf-updatepo
for f in debian/*.in; do \
f2=`echo $$f | sed "s,BASE,$(MYSQL_BRANDED_BASE_VERSION),g;\
s,PREV,$(MYSQL_BRANDED_PREVIOUS_BASE_VERSION),g;\
s,NLIB,$(NDB_SHARED_LIB_MAJOR_VERSION),g;\
s,SLIB,$(SHARED_LIB_MAJOR_VERSION),g;s,\.in$$,,"`; \
if [ $$f2 != debian/control -a $$f2 != debian/Makefile -a $$f2 != debian/defs.mk ]; then \
rm -f $$f2; \
fi; \
done
rm -f po/POTFILES.in
dh_clean -v
install:
install: build stamp-control
@echo "RULES.install"
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Sort of hackish way to make sure we have a init script
# for dh_installinit
cp support-files/mysql.server debian/mysql-server-$(MYSQL_BRANDED_BASE_VERSION).mysql.init
mkdir -p $(TMP)/usr/lib/mysql/mysqld.sym
cp sql/mysqld.sym $(TMP)/usr/lib/mysql/mysqld.sym
# TODO: need real man pages!
#for f in mysql mysqldump mysqlaccess mysqladmin mysqlshow myisam_ftdump myisamlog myisampack mysql_explain_log mysqld_multi mysqld_safe mysql_fix_privilege_tables mysql_upgrade mysql_tzinfo_to_sql mysql_zap perror replace safe_mysqld ; do touch $(TMP)/usr/share/man/man1/$$f.1 ; done
#for f in mysqld mysqlmanager ; do touch $(TMP)/usr/share/man/man8/$$f.8 ; done
# make install (trailing slash needed for innobase)
$(MAKE) install DESTDIR=$(TMP)/
# After installing, remove rpath to make lintian happy.
set +e; \
find ./debian/tmp/ -type f -print0 \
| xargs -0 --no-run-if-empty chrpath -k 2>/dev/null \
| fgrep RPATH= \
| cut -d: -f 1 \
| xargs --no-run-if-empty chrpath -d; \
set -e
# libmysqlclient: move shared libraries (but not the rest like libheap.a & co)
mv $(TMP)/usr/lib/mysql/libmysqlclient* $(TMP)/usr/lib
mv $(TMP)/usr/lib/mysql/libndbclient* $(TMP)/usr/lib
perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libmysqlclient.la
perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libmysqlclient_r.la
perl -pi -e 's#/usr/lib/mysql#/usr/lib#' $(TMP)/usr/lib/libndbclient.la
# Check if our beloved versioned symbols are really there
if [ "`objdump -T $(TMP)/usr/lib/libmysqlclient.so.$(SHARED_LIB_MAJOR_VERSION).0.0 | grep -c libmysqlclient_$(SHARED_LIB_MAJOR_VERSION)`" -lt 500 ]; then \
echo "ERROR: versioned symbols are absent"; \
exit 1; \
fi
if [ "`objdump -T $(TMP)/usr/lib/libndbclient.so.$(NDB_SHARED_LIB_MAJOR_VERSION).0.0 | grep -c libndbclient_$(NDB_SHARED_LIB_MAJOR_VERSION)`" -lt 500 ]; then \
echo "ERROR: versioned symbols are absent from libndbclient"; \
exit 1; \
fi
# libmysqlclient-dev: forgotten header file since 3.23.25?
cp include/my_config.h $(TMP)/usr/include/mysql/
cp include/my_dir.h $(TMP)/usr/include/mysql/
# mysql-common: We now provide our own config file.
install -d $(TMP)/etc/mysql
install -m 0644 debian/additions/my.cnf $(TMP)/etc/mysql/my.cnf
pod2man scripts/mysqlhotcopy $(TMP)/usr/share/man/man1/mysqlhotcopy.1
# mysql-server
install -m 0755 scripts/mysqld_safe $(TMP)/usr/bin/mysqld_safe
mkdir -p $(TMP)/usr/share/doc/mysql-server-$(MYSQL_BRANDED_BASE_VERSION)/examples
mv $(TMP)/usr/share/mysql/*cnf $(TMP)/usr/share/doc/mysql-server-$(MYSQL_BRANDED_BASE_VERSION)/examples/
rm -vf $(TMP)/usr/share/mysql/mi_test_all* \
$(TMP)/usr/share/mysql/mysql-log-rotate \
$(TMP)/usr/share/mysql/mysql.server \
$(TMP)/usr/share/mysql/binary-configure
# we can't install *.pl into /usr/bin - so we have to rename it.
sed "s#filename => 'ndb_size.tmpl#filename => '/usr/share/mysql/ndb_size.tmpl#" < $(TMP)/usr/bin/ndb_size.pl > $(TMP)/usr/bin/ndb_size
cp -a mysql-test $(TMP)/usr/share/mysql/
cp -a sql-bench $(TMP)/usr/share/mysql/
# lintian overrides
mkdir -p $(TMP)/usr/share/lintian/overrides/
cp debian/mysql-server-$(MYSQL_BRANDED_BASE_VERSION).lintian-overrides $(TMP)/usr/share/lintian/overrides/mysql-server-$(MYSQL_BRANDED_BASE_VERSION)
cp debian/mysql-client-$(MYSQL_BRANDED_BASE_VERSION).lintian-overrides $(TMP)/usr/share/lintian/overrides/mysql-client-$(MYSQL_BRANDED_BASE_VERSION)
# For 4.1 -> 5.0 transition
d=$(TMP)/usr/share/mysql-common/internal-use-only/; \
mkdir -p $$d; \
cp debian/mysql-server-$(MYSQL_BRANDED_BASE_VERSION).mysql.init $$d/_etc_init.d_mysql; \
cp debian/mysql-server-$(MYSQL_BRANDED_BASE_VERSION).mysql-server.logrotate $$d/_etc_logrotate.d_mysql-server; \
dh_movefiles
# Build architecture-independent files here.
binary-indep: build install
@echo "RULES.binary-indep"
dh_testdir -i
dh_testroot -i
dh_installdebconf -i
dh_installdocs -i
dh_installexamples -i
dh_installmenu -i
dh_installlogrotate -i
dh_installinit -i
dh_installcron -i
dh_installman -i
dh_installinfo -i
dh_installlogcheck -i
dh_installchangelogs -i
dh_link -i
dh_compress -i
dh_fixperms -i
dh_installdeb -i
dh_perl -i
dh_gencontrol -i
dh_md5sums -i
dh_builddeb -i
# Build architecture-dependent files here.
binary-arch: build install
@echo "RULES.binary-arch"
dh_testdir
dh_testroot
dh_installdebconf -a
dh_installdocs -a
dh_installexamples -a
dh_installmenu -a
dh_installlogrotate -a --name mysql-server
# Start mysql in runlevel 19 before 20 where apache, proftpd etc gets
# started which might depend on a running database server.
dh_installinit -a --name=mysql-storage -- defaults 19 21
dh_installinit -a --name=mysql -- defaults 19 21
dh_installinit -a --name=mysql-management -- defaults 20
dh_installcron -a --name mysql-server
dh_installman -a
dh_installinfo -a
dh_installlogcheck -a
dh_installchangelogs -a
dh_strip -a
dh_link -a # .so muss nach .so.1.2.3 installier werden!
dh_compress -a
dh_fixperms -a
dh_makeshlibs -a
dh_makeshlibs -plibmysqlclient$(SHARED_LIB_MAJOR_VERSION) -V"libmysqlclient$(SHARED_LIB_MAJOR_VERSION) (>= $(PKGVERSION))"
dh_makeshlibs -plibndbclient$(NDB_SHARED_LIB_MAJOR_VERSION) -V"libndbclient2 (>= $(PKGVERSION))"
dh_installdeb -a
dh_perl -a
dh_shlibdeps -a -l debian/libmysqlclient$(SHARED_LIB_MAJOR_VERSION)/usr/lib -L libmysqlclient$(SHARED_LIB_MAJOR_VERSION)
dh_shlibdeps -a -l debian/libndbclient$(NDB_SHARED_LIB_MAJOR_VERSION)/usr/lib -L libndbclient$(NDB_SHARED_LIB_MAJOR_VERSION)
dh_gencontrol -a
dh_md5sums -a
dh_builddeb -a
source diff:
@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
binary: binary-indep binary-arch
.PHONY: clean stamp-control control-file configure build binary binary-indep binary-arch install
# vim: ts=8