From 3ee9590faca22adb122c88c08f5283d11575415f Mon Sep 17 00:00:00 2001 From: Luca Longinotti Date: Fri, 12 Jan 2007 20:51:28 +0000 Subject: [PATCH] Revert slotted changes, cleanup. --- eclass/mysql.eclass | 250 +++++++++++++++-------------------------- eclass/mysql_fx.eclass | 142 ++++++++--------------- 2 files changed, 139 insertions(+), 253 deletions(-) diff --git a/eclass/mysql.eclass b/eclass/mysql.eclass index b6abf3e594c0..b0eabc5bdab5 100644 --- a/eclass/mysql.eclass +++ b/eclass/mysql.eclass @@ -1,19 +1,16 @@ -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.68 2007/01/12 17:00:39 chtekk Exp $ -# kate: encoding utf-8; eol unix; -# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off; -# kate: word-wrap-column 80; word-wrap off; +# $Header: /var/cvsroot/gentoo-x86/eclass/mysql.eclass,v 1.69 2007/01/12 20:51:28 chtekk Exp $ # Author: Francesco Riosa (Retired) # Maintainer: Luca Longinotti -# Note that MYSQL_VERSION_ID must be empty !!! +# Both MYSQL_VERSION_ID and MYSQL_PATCHSET_REV must be set in the ebuild too! +# Note that MYSQL_VERSION_ID must be empty! -ECLASS="mysql" -INHERITED="$INHERITED $ECLASS" WANT_AUTOCONF="latest" WANT_AUTOMAKE="latest" + inherit eutils flag-o-matic gnuconfig autotools mysql_fx # Shorten the path because the socket path length must be shorter than 107 chars @@ -35,6 +32,7 @@ fi # This is an important part, because many of the choices the MySQL ebuild will do # depend on this variable. # In particular, the code below transforms a $PVR like "5.0.18-r3" in "5001803" + MYSQL_VERSION_ID="" tpv=( ${PV//[-._]/ } ) ; tpv[3]="${PVR:${#PV}}" ; tpv[3]="${tpv[3]##*-r}" for vatom in 0 1 2 3 ; do @@ -51,11 +49,10 @@ DEPEND="ssl? ( >=dev-libs/openssl-0.9.6d ) >=sys-apps/sed-4 >=sys-apps/texinfo-4.7-r1 >=sys-libs/readline-4.1 - >=sys-libs/zlib-1.2.3 - " + >=sys-libs/zlib-1.2.3" -# having different flavours at the same time is not a good idea -for i in "" "-community" "-slotted" ; do +# Having different flavours at the same time is not a good idea +for i in "" "-community" ; do [[ "${i}" == ${PN#mysql} ]] || DEPEND="${DEPEND} !dev-db/mysql${i}" done @@ -63,37 +60,18 @@ done mysql_version_is_at_least "5.1" \ || DEPEND="${DEPEND} berkdb? ( sys-apps/ed )" +mysql_version_is_at_least "5.1.12" \ +&& DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )" + # dev-perl/DBD-mysql is needed by some scripts installed by MySQL PDEPEND="perl? ( >=dev-perl/DBD-mysql-2.9004 )" -if mysql_version_is_at_least "5.1.12" ; then - DEPEND="${DEPEND} innodb? ( >=dev-util/cmake-2.4.3 )" -fi - # BitKeeper dependency, compile-time only [[ ${IS_BITKEEPER} -eq 90 ]] && DEPEND="${DEPEND} dev-util/bk_client" -if [[ ${PN} == "mysql-slotted" ]] ; then - DEPEND="${DEPEND} app-admin/eselect-mysql" -fi - -if [[ ${PN} == "mysql-slotted" ]] ; then - SLOT="" - tpv=( ${PV//[-._]/ } ) - for vatom in 0 1 2 ; do - SLOT="${SLOT}${tpv[${vatom}]}_" - done - #finally SLOT=5_0_24 - SLOT=${SLOT:0:${#SLOT}-1} -else - SLOT="0" -fi - # Define correct SRC_URIs -SRC_URI=" -${SERVER_URI} -http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2 -" +SRC_URI="${SERVER_URI} + http://g3nt8.org/patches/mysql-extras-${MY_EXTRAS_VER}.tar.bz2" mysql_version_is_at_least "5.1.12" \ && [[ -n "${PBXT_VERSION}" ]] \ && SRC_URI="${SRC_URI} pbxt? ( mirror://sourceforge/pbxt/pbxt-${PBXT_VERSION}.tar.gz )" @@ -101,6 +79,7 @@ mysql_version_is_at_least "5.1.12" \ DESCRIPTION="A fast, multi-threaded, multi-user SQL database server." HOMEPAGE="http://www.mysql.com/" LICENSE="GPL-2" +SLOT="0" IUSE="big-tables debug embedded minimal perl selinux ssl static" RESTRICT="confcache" @@ -137,7 +116,6 @@ EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_preinst \ # bitkeeper_fetch() { - local reposuf if [[ -z "${1}" ]] ; then local tpv @@ -146,57 +124,58 @@ bitkeeper_fetch() { else reposuf="${1}" fi - einfo "using \"${reposuf}\" repository." + einfo "Using '${reposuf}' repository." local repo_uri="bk://mysql.bkbits.net/${reposuf}" - ## -- ebk_store_dir: bitkeeper sources store directory + ## -- ebk_store_dir: bitkeeper sources store directory local ebk_store_dir="${PORTAGE_ACTUAL_DISTDIR-${DISTDIR}}/bk-src" - ## -- ebk_fetch_cmd: bitkeeper fetch command + ## -- ebk_fetch_cmd: bitkeeper fetch command # always fetch the latest revision, use -r if a specified revision is wanted # hint: does not work local ebk_fetch_cmd="sfioball" - ## -- ebk_update_cmd: bitkeeper update command + ## -- ebk_update_cmd: bitkeeper update command local ebk_update_cmd="update" - #addread "/etc/bitkeeper" + # addread "/etc/bitkeeper" addwrite "${ebk_store_dir}" - if [[ ! -d "${ebk_store_dir}" ]]; then - debug-print "${FUNCNAME}: initial checkout. creating bitkeeper directory" - mkdir -p "${ebk_store_dir}" || die "${EBK}: can't mkdir ${ebk_store_dir}." + if [[ ! -d "${ebk_store_dir}" ]] ; then + debug-print "${FUNCNAME}: initial checkout, creating bitkeeper directory ..." + mkdir -p "${ebk_store_dir}" || die "BK: couldn't mkdir ${ebk_store_dir}" fi - pushd "${ebk_store_dir}" || die "${EBK}: can't chdir to ${ebk_store_dir}" + pushd "${ebk_store_dir}" || die "BK: couldn't chdir to ${ebk_store_dir}" local wc_path=${reposuf} - if [[ ! -d "${wc_path}" ]]; then + if [[ ! -d "${wc_path}" ]] ; then local options="-r+" - # first check out - einfo "bitkeeper check out start -->" - elog " repository: ${repo_uri}" - ${ebk_fetch_cmd} ${options} "${repo_uri}" ${wc_path} \ - || die "${EBK}: can't fetch from ${repo_uri}." + + # first checkout + einfo "bitkeeper checkout start -->" + einfo " repository: ${repo_uri}" + + ${ebk_fetch_cmd} ${options} "${repo_uri}" "${wc_path}" \ + || die "BK: couldn't fetch from ${repo_uri}" else - if [[ ! -d "${wc_path}/BK" ]]; then + if [[ ! -d "${wc_path}/BK" ]] ; then popd - die "Look like ${wc_path} is not a bitkeeper path." + die "Looks like ${wc_path} is not a bitkeeper path" fi # update working copy einfo "bitkeeper update start -->" - elog " repository: ${repo_uri}" + einfo " repository: ${repo_uri}" ${ebk_update_cmd} "${repo_uri}" "${wc_path}" \ - || die "BK: can't update from ${repo_uri} to ${wc_path}." + || die "BK: couldn't update from ${repo_uri} to ${wc_path}" fi - einfo " working copy: ${wc_path}" + einfo " working copy: ${wc_path}" cd "${wc_path}" - rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: can't export to ${S}." + rsync -rlpgo --exclude="BK/" . "${S}" || die "BK: couldn't export to ${S}" echo popd - } mysql_disable_test() { @@ -204,7 +183,7 @@ mysql_disable_test() { local reason="${@}" local mysql_disable_file="${S}/mysql-test/t/disabled.def" echo ${testname} : ${reason} >> "${mysql_disable_file}" - ewarn "test \"${testname}\" disabled because: \"${reason}\"" + ewarn "test '${testname}' disabled: '${reason}'" } # void mysql_init_vars() @@ -213,22 +192,17 @@ mysql_disable_test() { # 2005-11-19 mysql_init_vars() { - if [[ ${SLOT} == "0" ]] ; then - MY_SUFFIX="" - else - MY_SUFFIX=${MY_SUFFIX:-"-${SLOT}"} - fi - MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR:-"/usr/share/mysql${MY_SUFFIX}"} - MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql${MY_SUFFIX}"} - MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql${MY_SUFFIX}"} - MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql${MY_SUFFIX}"} - MY_LOGDIR=${MY_LOGDIR="/var/log/mysql${MY_SUFFIX}"} - MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql${MY_SUFFIX}"} + MY_SHAREDSTATEDIR=${MY_SHAREDSTATEDIR="/usr/share/mysql"} + MY_SYSCONFDIR=${MY_SYSCONFDIR="/etc/mysql"} + MY_LIBDIR=${MY_LIBDIR="/usr/$(get_libdir)/mysql"} + MY_LOCALSTATEDIR=${MY_LOCALSTATEDIR="/var/lib/mysql"} + MY_LOGDIR=${MY_LOGDIR="/var/log/mysql"} + MY_INCLUDEDIR=${MY_INCLUDEDIR="/usr/include/mysql"} if [[ -z "${DATADIR}" ]] ; then DATADIR="" if [[ -f "${MY_SYSCONFDIR}/my.cnf" ]] ; then - DATADIR=`"my_print_defaults${MY_SUFFIX}" mysqld 2>/dev/null \ + DATADIR=`"my_print_defaults" mysqld 2>/dev/null \ | sed -ne '/datadir/s|^--datadir=||p' \ | tail -n1` if [[ -z "${DATADIR}" ]] ; then @@ -257,7 +231,7 @@ mysql_init_vars() { MY_SOURCEDIR=${SERVER_URI##*/} MY_SOURCEDIR=${MY_SOURCEDIR%.tar*} - export MY_SUFFIX MY_SHAREDSTATEDIR MY_SYSCONFDIR + export MY_SHAREDSTATEDIR MY_SYSCONFDIR export MY_LIBDIR MY_LOCALSTATEDIR MY_LOGDIR export MY_INCLUDEDIR DATADIR MY_SOURCEDIR } @@ -281,7 +255,7 @@ configure_minimal() { myconf="${myconf} --enable-shared --enable-static" fi - if mysql_version_is_at_least "4.01.00.00" && ! use latin1 ; then + if mysql_version_is_at_least "4.1" && ! use latin1 ; then myconf="${myconf} --with-charset=utf8" myconf="${myconf} --with-collation=utf8_general_ci" else @@ -342,10 +316,10 @@ configure_40_41_50() { myconf="${myconf} --without-readline" mysql_version_is_at_least "5.0" || myconf="${myconf} $(use_with raid)" + # --with-vio is not needed anymore, it's on by default and + # has been removed from configure if use ssl ; then - # --with-vio is not needed anymore, it's on by default and - # has been removed from configure - mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" + mysql_version_is_at_least "5.0.4" || myconf="${myconf} --with-vio" fi if mysql_version_is_at_least "5.1.11" ; then @@ -357,7 +331,7 @@ configure_40_41_50() { # The following fix is due to a bug with bdb on SPARC's. See: # http://www.geocrawler.com/mail/msg.php3?msg_id=4754814&list=8 # It comes down to non-64-bit safety problems. - if use sparc || use alpha || use hppa || use mips || use amd64 ; then + if use alpha || use amd64 || use hppa || use mips || use sparc ; then elog "Berkeley DB support was disabled due to incompatible arch" myconf="${myconf} --without-berkeley-db" else @@ -447,23 +421,21 @@ pbxt_src_compile() { einfo "Reconfiguring dir '${PWD}'" AT_GNUCONF_UPDATE="yes" eautoreconf - local myconf - myconf="${myconf} --with-mysql=${S}" - mkdir -p ${T}/lib - myconf="${myconf} --libdir=${D}/${MY_LIBDIR}" + local myconf="" + myconf="${myconf} --with-mysql=${S} --libdir=${D}/${MY_LIBDIR}" use debug && myconf="${myconf} --with-debug=full" - # TODO is safe/needed to use econf here ? - ./configure ${myconf} || die "problem configuring pbxt storage engine" - # TODO is safe/needed to use emake here ? - make || die "problem making pbxt storage engine (${myconf})" + # TODO: is it safe/needed to use econf here ? + ./configure ${myconf} || die "Problem configuring PBXT storage engine" + # TODO: is it safe/needed to use emake here ? + make || die "Problem making PBXT storage engine (${myconf})" popd - # TODO: modify test suite + # TODO: modify test suite for PBXT } pbxt_src_install() { pushd "${WORKDIR}/pbxt-${PBXT_VERSION}" &>/dev/null - make install || die "failed pbxt install" + make install || die "Failed to install PBXT" popd } @@ -509,13 +481,13 @@ mysql_src_unpack() { if [[ ${IS_BITKEEPER} -eq 90 ]] ; then if mysql_check_version_range "5.1 to 5.1.99" ; then bitkeeper_fetch "mysql-5.1-ndb" - elif mysql_check_version_range "5.2.0 to 5.2.99" ; then + elif mysql_check_version_range "5.2 to 5.2.99" ; then bitkeeper_fetch "mysql-5.2-falcon" else bitkeeper_fetch fi cd "${S}" - einfo "running upstream autorun on bk sources" + einfo "Running upstream autorun over BK sources ..." BUILD/autorun.sh else mv -f "${WORKDIR}/${MY_SOURCEDIR}" "${S}" @@ -524,9 +496,9 @@ mysql_src_unpack() { # Apply the patches for this MySQL version EPATCH_SUFFIX="patch" - mkdir -p "${EPATCH_SOURCE}" || die "unable to create epatch directory" + mkdir -p "${EPATCH_SOURCE}" || die "Unable to create epatch directory" mysql_mv_patches - epatch || die "failed to apply all patches" + epatch # Additional checks, remove bundled zlib rm -f "${S}/zlib/"*.[ch] @@ -551,7 +523,7 @@ mysql_src_unpack() { if mysql_version_is_at_least "5.1.12" ; then rebuilddirlist="." - # TODO IMPO! Check this with a cmake expert + # TODO: check this with a cmake expert use innodb \ && cmake \ -DCMAKE_C_COMPILER=$(which $(tc-getCC)) \ @@ -610,7 +582,6 @@ mysql_src_compile() { export CXXFLAGS econf \ - --program-suffix="${MY_SUFFIX}" \ --libexecdir="/usr/sbin" \ --sysconfdir="${MY_SYSCONFDIR}" \ --localstatedir="${MY_LOCALSTATEDIR}" \ @@ -638,7 +609,7 @@ mysql_src_install() { # Make sure the vars are correctly initialized mysql_init_vars - emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die + emake install DESTDIR="${D}" benchdir_root="${MY_SHAREDSTATEDIR}" || die "emake install failed" mysql_version_is_at_least "5.1.12" && use pbxt && pbxt_src_install @@ -646,9 +617,9 @@ mysql_src_install() { doins "${MY_INCLUDEDIR}"/my_{config,dir}.h # Convenience links - dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlanalyze${MY_SUFFIX}" - dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqlrepair${MY_SUFFIX}" - dosym "/usr/bin/mysqlcheck${MY_SUFFIX}" "/usr/bin/mysqloptimize${MY_SUFFIX}" + dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlanalyze" + dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqlrepair" + dosym "/usr/bin/mysqlcheck" "/usr/bin/mysqloptimize" # Various junk (my-*.cnf moved elsewhere) rm -Rf "${D}/usr/share/info" @@ -658,16 +629,7 @@ mysql_src_install() { rm -f "${D}"/usr/share/mysql/${removeme} done - # TODO change at Makefile-am level - if [[ ${PN} == "mysql-slotted" ]] ; then - for moveme in "mysql_fix_privilege_tables.sql" \ - "fill_help_tables.sql" "ndb-config-2-node.ini" - do - mv -f "${D}/usr/share/mysql/${moveme}" "${D}/usr/share/mysql${MY_SUFFIX}/" 2>/dev/null - done - fi - - # clean up stuff for a minimal build + # Clean up stuff for a minimal build if use minimal ; then rm -Rf "${D}${MY_SHAREDSTATEDIR}"/{mysql-test,sql-bench} rm -f "${D}"/usr/bin/{mysql{_install_db,manager*,_secure_installation,_fix_privilege_tables,hotcopy,_convert_table_format,d_multi,_fix_extensions,_zap,_explain_log,_tableinfo,d_safe,_install,_waitpid,binlog,test},myisam*,isam*,pack_isam} @@ -675,16 +637,6 @@ mysql_src_install() { rm -f "${D}${MY_LIBDIR}"/lib{heap,merge,nisam,my{sys,strings,sqld,isammrg,isam},vio,dbug}.a fi - if [[ ${PN} == "mysql-slotted" ]] ; then - local notcatched=$(ls "${D}/usr/share/mysql"/*) - if [[ -n "${notcatched}" ]] ; then - ewarn "QA notice" - ewarn "${notcatched} files in /usr/share/mysql" - ewarn "bug mysql-herd to manage them" - fi - rm -Rf "${D}/usr/share/mysql" - fi - # Configuration stuff if mysql_version_is_at_least "4.1" ; then mysql_mycnf_version="4.1" @@ -693,8 +645,7 @@ mysql_src_install() { fi insinto "${MY_SYSCONFDIR}" doins scripts/mysqlaccess.conf - sed -e "s!@MY_SUFFIX@!${MY_SUFFIX}!g" \ - -e "s!@DATADIR@!${DATADIR}!g" \ + sed -e "s!@DATADIR@!${DATADIR}!g" \ "${FILESDIR}/my.cnf-${mysql_mycnf_version}" \ > "${TMPDIR}/my.cnf.ok" if mysql_version_is_at_least "4.1" && use latin1 ; then @@ -740,27 +691,6 @@ mysql_src_install() { done fi - if [[ ${PN} == "mysql-slotted" ]] ; then - # MOVED HERE DUE TO BUG #121445 - # create a list of files, to be used - # by external utilities - mkdir -p "${D}/var/lib/eselect/mysql/" - local filelist="${D}/var/lib/eselect/mysql/mysql${MY_SUFFIX}.filelist" - pushd "${D}/" &>/dev/null - find usr/bin/ usr/sbin/ \ - -type f -name "*${MY_SUFFIX}*" \ - -and -not -name "mysql_config${MY_SUFFIX}" \ - > "${filelist}" - find usr/share/man \ - -type f -name "*${MY_SUFFIX}*" \ - | sed -e 's/$/.gz/' \ - >> "${filelist}" - echo "${MY_SYSCONFDIR#"/"}" >> "${filelist}" - echo "${MY_LIBDIR#"/"}" >> "${filelist}" - echo "${MY_SHAREDSTATEDIR#"/"}" >> "${filelist}" - popd &>/dev/null - fi - mysql_lib_symlinks "${D}" } @@ -774,8 +704,7 @@ mysql_pkg_postinst() { mysql_init_vars # Check FEATURES="collision-protect" before removing this - [[ -d "${ROOT}/var/log/mysql" ]] \ - || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" + [[ -d "${ROOT}/var/log/mysql" ]] || install -d -m0750 -o mysql -g mysql "${ROOT}${MY_LOGDIR}" # Secure the logfiles touch "${ROOT}${MY_LOGDIR}"/mysql.{log,err} @@ -797,23 +726,29 @@ mysql_pkg_postinst() { for script in scripts/mysql* ; do [[ "${script%.sh}" == "${script}" ]] && dodoc "${script}" done + + einfo + elog "You might want to run:" + elog "\"emerge --config =${CATEGORY}/${PF}\"" + elog "if this is a new install." + einfo fi - #einfo "you may want to read slotting upgrade documents in the overlay" if mysql_version_is_at_least "5.1.12" && use pbxt ; then - # TODO tell it better ;-) - elog "mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" - elog "CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" - elog "if, after that you cannot start the mysql server" + # TODO: explain it better + elog " mysql> INSTALL PLUGIN pbxt SONAME 'libpbxt.so';" + elog " mysql> CREATE TABLE t1 (c1 int, c2 text) ENGINE=pbxt;" + elog "if, after that, you cannot start the MySQL server," elog "remove the ${MY_DATADIR}/mysql/plugin.* files, then" - elog "use the mysql upgrade script to restore the table" - elog " or " - elog "CREATE TABLE IF NOT EXISTS plugin (" - elog " name char(64) binary DEFAULT '' NOT NULL," - elog " dl char(128) DEFAULT '' NOT NULL," - elog " PRIMARY KEY (name)" - elog ") CHARACTER SET utf8 COLLATE utf8_bin;" + elog "use the MySQL upgrade script to restore the table" + elog "or execute the following SQL command:" + elog " CREATE TABLE IF NOT EXISTS plugin (" + elog " name char(64) binary DEFAULT '' NOT NULL," + elog " dl char(128) DEFAULT '' NOT NULL," + elog " PRIMARY KEY (name)" + elog " ) CHARACTER SET utf8 COLLATE utf8_bin;" fi + mysql_check_version_range "4.0 to 5.0.99.99" \ && use berkdb \ && elog "Berkeley DB support is deprecated and will be removed in future versions!" @@ -930,8 +865,5 @@ mysql_pkg_config() { } mysql_pkg_postrm() { - if [[ ${PN} == "mysql-slotted" ]] ; then - mysql_lib_symlinks - mysql_clients_link_to_best_version - fi + # mysql_lib_symlinks "${D}" } diff --git a/eclass/mysql_fx.eclass b/eclass/mysql_fx.eclass index 457fdd5d19e9..53212aa92927 100644 --- a/eclass/mysql_fx.eclass +++ b/eclass/mysql_fx.eclass @@ -1,19 +1,15 @@ -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/mysql_fx.eclass,v 1.17 2007/01/04 20:38:16 vivo Exp $ -# kate: encoding utf-8; eol unix; -# kate: indent-width 4; mixedindent off; remove-trailing-space on; space-indent off; -# kate: word-wrap-column 80; word-wrap off; +# $Header: /var/cvsroot/gentoo-x86/eclass/mysql_fx.eclass,v 1.18 2007/01/12 20:51:28 chtekk Exp $ # Author: Francesco Riosa (Retired) -# Maintainer: Francesco Riosa +# Maintainer: Luca Longinotti -ECLASS="mysql_fx" -INHERITED="$INHERITED $ECLASS" inherit multilib +# # Helper function, version (integer) may have sections separated by dots -# for readability +# for readability. # stripdots() { local dotver=${1:-"0"} @@ -24,7 +20,7 @@ stripdots() { for i in 1000000 10000 100 1 ; do v=${dotver%%\.*} # remove leading zeroes - while [[ ${#v} -gt 1 ]] && [[ ${v:0:1} == "0" ]]; do v=${v#0}; done + while [[ ${#v} -gt 1 ]] && [[ ${v:0:1} == "0" ]] ; do v=${v#0} ; done # increment integer version number ret=$(( ${v} * ${i} + ${ret} )) if [[ "${dotver}" == "${dotver/\.}" ]] ; then @@ -33,21 +29,20 @@ stripdots() { dotver=${dotver#*\.} fi done - echo ${ret} + echo "${ret}" else # already an integer v=${dotver} - while [[ ${#v} -gt 1 ]] && [[ ${v:0:1} == "0" ]]; do v=${v#0}; done - echo ${v} + while [[ ${#v} -gt 1 ]] && [[ ${v:0:1} == "0" ]] ; do v=${v#0} ; done + echo "${v}" fi } # # Check if a version number falls inside a given range. # The range includes the extremes and must be specified as -# "low_version to high_version" i.e. "4.00.00.00 to 5.01.99.99" -# Return true if inside the range -# 2005-11-19 +# "low_version to high_version" i.e. "4.1.2 to 5.1.99.99". +# Returns true if inside the range. # mysql_check_version_range() { local lbound="${1%% to *}" ; lbound=$(stripdots "${lbound}") @@ -57,17 +52,18 @@ mysql_check_version_range() { return 1 } -# true if found at least one appliable range -# 2005-11-19 +# +# True if at least one applicable range is found for the patch. +# _mysql_test_patch_ver_pn() { local filesdir="${WORKDIR}/mysql-extras" local allelements=", version, package name" - [[ -d "${filesdir}" ]] || die "sourcedir must be a directory" + [[ -d "${filesdir}" ]] || die "Source dir must be a directory" local flags=$1 pname=$2 if [[ $(( $flags & $(( 1 + 4 + 16 )) )) -eq 21 ]] ; then - einfo "using \"${pname}\"" - mv "${filesdir}/${pname}" "${EPATCH_SOURCE}" || die "cannot move ${pname}" + einfo "using '${pname}'" + mv -f "${filesdir}/${pname}" "${EPATCH_SOURCE}" || die "Couldn't move ${pname}" return 0 fi @@ -78,17 +74,16 @@ _mysql_test_patch_ver_pn() { && allelements="${allelements//", package name"}" [[ -n "${allelements}" ]] && [[ "${flags}" -gt 0 ]] \ - && ewarn "QA notice ${allelements} missing in ${pname} patch" + && ewarn "QA notice: ${allelements} missing in ${pname} patch" return 1 } -# void mysql_mv_patches(char * index_file, char * filesdir, int my_ver) # -# parse a "index_file" looking for patches to apply to current -# version. -# If the patch apply then print it's description -# 2005-11-19 +# Parse a "index_file" looking for patches to apply to the +# current MySQL version. +# If the patch applies, print its description. +# mysql_mv_patches() { local index_file="${1:-"${WORKDIR}/mysql-extras/000_index.txt"}" local my_ver="${2:-"${MYSQL_VERSION_ID}"}" @@ -96,34 +91,34 @@ mysql_mv_patches() { local dsc ndsc=0 i dsc=( ) - # values for flags are (2^x): + # Values for flags are (2^x): # 1 - one patch found - # 2 - at least one version range is wrong - # 4 - at least one version range is _good_ - # 8 - at least one ${PN} did not match - # 16 - at least one ${PN} has been matched - local flags=0 pname='' - while read row; do + # 2 - at least one version range is wrong + # 4 - at least one version range is ok + # 8 - at least one ${PN} did not match + # 16 - at least one ${PN} has been matched + local flags=0 pname="" + while read row ; do case "${row}" in @patch\ *) [[ -n "${pname}" ]] \ - && ${my_test_fx} $flags "${pname}" \ + && ${my_test_fx} ${flags} "${pname}" \ && for (( i=0 ; $i < $ndsc ; i++ )) ; do einfo "> ${dsc[$i]}" ; done flags=1 ; ndsc=0 ; dsc=( ) pname=${row#"@patch "} ;; @ver\ *) if mysql_check_version_range "${row#"@ver "}" "${my_ver}" ; then - flags=$(( $flags | 4 )) + flags=$(( ${flags} | 4 )) else - flags=$(( $flags | 2 )) + flags=$(( ${flags} | 2 )) fi ;; @pn\ *) if [[ ${row#"@pn "} == "${PN}" ]] ; then - flags=$(( $flags | 16 )) + flags=$(( ${flags} | 16 )) else - flags=$(( $flags | 8 )) + flags=$(( ${flags} | 8 )) fi ;; # @use\ *) ;; @@ -133,10 +128,12 @@ mysql_mv_patches() { ;; esac done < "${index_file}" - ${my_test_fx} $flags "${pname}" \ - && for (( i=0 ; $i < $ndsc ; i++ )) ; do einfo "> ${dsc[$i]}" ; done + + ${my_test_fx} ${flags} "${pname}" \ + && for (( i=0 ; $i < $ndsc ; i++ )) ; do einfo "> ${dsc[$i]}" ; done } +# # Is $2 (defaults to $MYSQL_VERSION_ID) at least version $1? # (nice) idea from versionator.eclass # @@ -146,52 +143,26 @@ mysql_version_is_at_least() { [[ ${want_s} -le ${have_s} ]] && return 0 || return 1 } -# THERE IS A COPY OF THIS ONE IN ESELECT-MYSQL, keep the two synced -# crappy sorting file list per version -mysql_make_file_list() { - local base="${1}-" - local n=( ) - echo $( for i in $( ls -d ${1}-[[:digit:]]_[[:digit:]]{,[[:digit:]]}_[[:digit:]]{,[[:digit:]]} 2>/dev/null ) - do - n=${i#${base}} - n=( ${n//_/ } ) - # prepend the file name with its numeric version number to make - # it sortable - echo "$(( 100000 + ${n[0]} * 10000 + ${n[1]} * 100 + ${n[2]} ))$i" - # sort and cut the numeric version we added in the previous line - done | sort | cut -c 7- ) -} - -# THERE IS A COPY OF THIS ONE IN ESELECT-MYSQL, keep the two synced -mysql_choose_better_version() { - local better=$(mysql_make_file_list ${1}) - echo ${better##* } -} - -# void mysql_lib_symlinks() # -# To be called on the live filesystem, reassign symlinks to each mysql -# library to the best version available -# 2005-12-30 -# THERE IS A COPY OF THIS ONE IN ESELECT-MYSQL, keep the two synced +# To be called on the live filesystem, reassigning symlinks of each MySQL +# library to the best version available. +# mysql_lib_symlinks() { local d dirlist maxdots soname sonameln reldir - reldir=${1} - pushd "${ROOT}${reldir}/usr/$(get_libdir)" &> /dev/null + reldir="${1}" + pushd "${reldir}/usr/$(get_libdir)" &> /dev/null # dirlist must contain the less significative directory left - dirlist="mysql $( mysql_make_file_list mysql )" + dirlist="mysql" # waste some time in removing and recreating symlinks for d in $dirlist ; do - for soname in $( find "${d}" -name "*.so*" -and -not -type "l" 2>/dev/null ) - do + for soname in $( find "${d}" -name "*.so*" -and -not -type "l" 2>/dev/null ) ; do # maxdot is a limit versus infinite loop maxdots=0 sonameln=${soname##*/} - # loop in version of the library to link it, similar to the - # libtool work - while [[ ${sonameln:0-3} != '.so' ]] && [[ ${maxdots} -lt 6 ]] - do + # loop in version of the library to link it, similar to how + # libtool works + while [[ ${sonameln:0-3} != '.so' ]] && [[ ${maxdots} -lt 6 ]] ; do rm -f "${sonameln}" ln -s "${soname}" "${sonameln}" (( ++maxdots )) @@ -203,20 +174,3 @@ mysql_lib_symlinks() { done popd &> /dev/null } - -mysql_clients_link_to_best_version() { - local other better - # "include"s and "mysql_config", needed to compile other sw - for other in "/usr/$(get_libdir)/mysql" "/usr/include/mysql" "/usr/bin/mysql_config" ; do - pushd "${ROOT}${other%/*}" &> /dev/null - better=$( mysql_choose_better_version "${other##*/}" ) - if ! [[ -d "${other##*/}" ]] ; then - [[ -L "${other##*/}" ]] && rm -f "${other##*/}" - ! [[ -f "${other##*/}" ]] && ln -sf "${better}" "${other##*/}" - else - [[ -L "${other##*/}" ]] && rm -f "${other##*/}" - ! [[ -d "${other##*/}" ]] && ln -s "${better}" "${other##*/}" - fi - popd &> /dev/null - done -} \ No newline at end of file -- 2.26.2