SteveAyre / mysql-cluster

MySQL Cluster packaging for Debian Wheezy (squeeze backport in branch)
6 stars 2 forks source link

Squeeze backport [was: Could not build packages] #3

Open antmat opened 11 years ago

antmat commented 11 years ago

When trying to build mysql-cluster on debian squeeze I'm getting this (some months ago I was able to build it on debian squeeze)

dh_install --fail-missing              \
            -Xusr/share/man/                   \
            -Xlibmysqlclient_r.so              \
            -Xusr/share/mysql/magic            \
            -Xmysql/plugin/daemon_example.ini  \
            -Xusr/bin/mysqlaccess.conf         \
            -Xusr/share/mysql/mysql-log-rotate \
            -Xusr/share/mysql/mysql.server     \
            -Xusr/share/mysql/binary-configure \
            -Xusr/share/mysql/my-
        cp -a ./debian/additions/my-cluster.cnf debian/mysql-cluster-common//etc/mysql/conf.d//
        cp -a debian/tmp/usr/share/mysql/java/clusterj-7.2.8.jar debian/mysql-cluster-clusterj/usr/share/java//
        cp -a debian/tmp/usr/share/mysql/java/clusterj-api-7.2.8.jar debian/mysql-cluster-clusterj/usr/share/java//
        cp -a debian/tmp/usr/share/mysql/java/clusterj-api-7.2.8.jar debian/mysql-cluster-clusterj/usr/share/java//
dh_install: usr/lib/libmysqlclient.so.18.0.0 exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient.so.18 exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libndbclient.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libndbclient_static.a exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient.a exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqld.a exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libndbclient.so.6.0.0 exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient_r.a exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlservices.a exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/auth_socket.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/auth.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/qa_auth_server.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/semisync_master.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/semisync_slave.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/ha_example.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/libdaemon_example.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/qa_auth_interface.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/adt_null.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/qa_auth_client.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/mypluglib.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/mysql/plugin/auth_test_plugin.so exists in debian/tmp but is not installed to anywhere
dh_install: missing files, aborting
make[1]: *** [override_dh_install] Ошибка 255
make[1]: Leaving directory `/home/antmat/mysql-cluster-tmp/mysql-cluster/wheezy'
make: *** [binary-indep] Ошибка 2
dpkg-buildpackage: ошибка: fakeroot debian/rules binary возвратил код ошибки 2

Sorry for russian, I have russian locale - I suppose it is clear that it returns an error. Please ask, if I can help you in any way. Thanks!

SteveAyre commented 11 years ago

The source package is targetted at wheezy. It will not work on squeeze, to use it there a backport of it would need to be created.

The reason for that is the introduction of multiarch support in wheezy. This changes the paths that libraries are installed to, and these changed paths are the reason for the errors you're seeing.

SteveAyre commented 11 years ago

Essentially the modifications that would be required is to strip out (undo) the multiarch changes and add a new changelog entry documenting reverting the multiarch changes with ~bpo60+1 added to the version number it is based on. That version would make it 'older' than the wheezy version, so wouldn't break the squeeze->wheezy upgrade path.

See http://wiki.debian.org/Multiarch/Implementation for more information.

antmat commented 11 years ago

Ok, thanks a lot. I'll take a look =)

SteveAyre commented 11 years ago

I have created a squeeze-backport branch on GitHub, please see whether this version builds ok on squeeze.

Please note some packages were removed in wheezy to avoid conflicts with mysql-5.5 (eg libmysqlclient18). You may find that this causes problems if trying to use the packages on squeeze - I have not had a change to test the bpo60 version.

antmat commented 11 years ago

The problem persists. I think it is due to removing libmysqlclient as you mentioned above

dh_install: usr/lib/libmysqlclient.so.18.0.0 exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient.so exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient.so.18 exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient.a exists in debian/tmp but is not installed to anywhere
dh_install: usr/lib/libmysqlclient_r.a exists in debian/tmp but is not installed to anywhere

I suppose there should be -Xusr/lib/libmysqlclient option in dh_install command in override_dh_install target

SteveAyre commented 11 years ago

Omitting them wouldn't be enough since they're used by some of the binaries. New packages would need to be added. That's not something that's trivial though as you need to be careful not to break the upgrade path to wheezy.

The move to targetting wheezy was partly because it massively simplies these issues as the mysql-5.5 there has libmysqlclient18 which is ABI compatible with the library in mysql cluster 7.2, so it can just depend on the package from mysql-5.5.

SteveAyre commented 11 years ago

I've made some updates to the squeeze backport, can you see whether this is more successful?

Please note that to build the packages will require debhelper 9. On squeeze that means you'll need to install it from squeeze-backports, see http://backports-master.debian.org/Instructions/

antmat commented 11 years ago

Unfortunately, it still fails

-- Installing: /home/antmat/mysql-cluster-tmp/mysql-cluster-buildscripts/squeeze/debian/tmp/usr/share/man/man8/ndbmtd.8
make[2]: Leaving directory `/home/antmat/mysql-cluster-tmp/mysql-cluster-buildscripts/squeeze/builddir'
# 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
# Check if our beloved versioned symbols are really there
if [ "`objdump -T /home/antmat/mysql-cluster-tmp/mysql-cluster-buildscripts/squeeze/debian/tmp//usr/lib/libmysqlclient.so.18.0.0 | grep -c libmysqlclient_18`" -lt 500 ]; then \
      echo "ERROR: versioned symbols are absent"; \
      exit 1; \
    fi
ERROR: versioned symbols are absent
SteveAyre commented 11 years ago

This seems strange. I've just checked on a clean squeeze installation and that library does build with the correct symbols. Are you sure you're using the latest revision of the squeeze-backport branch? Do a fresh git clone if in doubt.

If the problem still persists I'd be curious to see the output of: objdump -T $(TMP)/usr/lib/libmysqlclient.so.18.0.0 (It'll be a large amount so stick it somewhere like pastebin)

What build options, if any, were you using?

antmat commented 11 years ago

I'm doing it like this

antmat@vm1 ~/mysql-cluster-tmp2 $ git clone https://github.com/SteveAyre/mysql-cluster-buildscripts.git
antmat@vm1 ~/mysql-cluster-tmp2 $ cd mysql-cluster-buildscripts/
antmat@vm1 ~/mysql-cluster-tmp2/mysql-cluster-buildscripts $ ./scripts/checkout squeeze
antmat@vm1 ~/mysql-cluster-tmp2/mysql-cluster-buildscripts $ ./scripts/build squeeze

Now it gives me

CMake Error at plugin/auth/cmake_install.cmake:108 (FILE):
  file INSTALL cannot copy file
  "/home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze/builddir/plugin/auth/qa_auth_server.so"
  to
  "/home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze/debian/tmp/usr/lib/mysql/plugin/qa_auth_server.so".
Call Stack (most recent call first):
  cmake_install.cmake:55 (INCLUDE)

-- Installing: /home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze/debian/tmp/usr/lib/mysql/plugin/qa_auth_client.so
make[2]: *** [install] Ошибка 1
make[2]: Leaving directory `/home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze/builddir'
make[1]: *** [auto_install-stamp] Ошибка 2
make[1]: Leaving directory `/home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze'
make: *** [binary-indep] Ошибка 2
make: *** Ожидание завершения заданий...

And if I run build the second time it gives

# 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
# Check if our beloved versioned symbols are really there
if [ "`objdump -T /home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze/debian/tmp//usr/lib/libmysqlclient.so.18.0.0 | grep -c libmysqlclient_18`" -lt 500 ]; then \
      echo "ERROR: versioned symbols are absent"; \
      exit 1; \
    fi
ERROR: versioned symbols are absent
make[1]: *** [auto_install-stamp] Ошибка 1
make[1]: Leaving directory `/home/antmat/mysql-cluster-tmp2/mysql-cluster-buildscripts/squeeze'
make: *** [binary-arch] Ошибка 2
dpkg-buildpackage: ошибка: fakeroot debian/rules binary возвратил код ошибки 2

and objdump -T $(TMP)/usr/lib/libmysqlclient.so.18.0.0 gives this http://nopaste.info/208568609e.html