Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
antmat opened this issue Nov 7, 2012 · 10 comments
Open

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

antmat opened this issue Nov 7, 2012 · 10 comments

Comments

@antmat
Copy link
Contributor

antmat commented Nov 7, 2012

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
Copy link
Owner

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
Copy link
Owner

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
Copy link
Contributor Author

antmat commented Nov 7, 2012

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

@SteveAyre
Copy link
Owner

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.

@SteveAyre SteveAyre reopened this Nov 7, 2012
@antmat
Copy link
Contributor Author

antmat commented Nov 7, 2012

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
Copy link
Owner

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
Copy link
Owner

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
Copy link
Contributor Author

antmat commented Nov 15, 2012

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
Copy link
Owner

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
Copy link
Contributor Author

antmat commented Nov 16, 2012

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants