[MDEV-658] LP:842688 - Ubuntu and packages don't contain debug info Created: 2011-09-06  Updated: 2017-10-11  Resolved: 2017-10-11

Status: Closed
Project: MariaDB Server
Component/s: Packaging, Platform Debian
Affects Version/s: 5.1.67, 5.2.14, 5.3.12, 5.5.39, 10.0.14
Fix Version/s: 10.0.30, 10.1.22, 10.2.5

Type: Bug Priority: Major
Reporter: Sergei Petrunia Assignee: Daniel Bartholomew
Resolution: Fixed Votes: 3
Labels: Launchpad, contribution, debug-info, foundation

Attachments: XML File LPexportBug842688.xml     Text File ubuntu-docker-mariadb-build-with-debug.txt    
Issue Links:
Duplicate
duplicates MDEV-572 No debug symbols for Ubuntu packages Closed
Relates
relates to MDEV-4646 No mysqld-debug or debuginfo in Maria... Closed
relates to MDEV-12508 Use Docker instead of KVM Closed
relates to MDEV-13027 Compile special release binaries with... Open

 Description   

I unpacked all .deb files that were built for karmic_amd64 platform (just picked one at random), and for mysqld binary the archives have:

./usr/sbin/mysqld: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), for GNU/Linux 2.6.15, stripped

and no debuginfo file. It is bad that we are not shipping debug information - if we're reported crashes we won't be able to fully analyze them.



 Comments   
Comment by Rasmus Johansson (Inactive) [ 2011-11-13 ]

Launchpad bug id: 842688

Comment by Elena Stepanova [ 2014-10-09 ]

I can see that the binaries in the packages from Ubuntu repo (e.g. 5.5.39 for Trusty) are also stripped, so I start wondering if there is some kind of policy that we've been following even though nobody remembers it.

Assigning to otto to comment and decide whether we can have debug info, after all.

Comment by Sergei Petrunia [ 2014-10-13 ]

Lack of debug symbols in the regular package indeed looks like it's an accepted standard.

However, other software has separate packages that have binaries with debug info. For example:

postgresql-9.3 - object-relational SQL database, version 9.3 server
postgresql-9.3-dbg - debug symbols for postgresql-9.3

drizzle - Server binaries for Drizzle Database
drizzle-dbg - Debugging symbols for Drizzle

and so forth. It's very widely used, I assume there is a standard convention about what one can expect from the mariadb-server-dbg package.

Comment by Sergei Petrunia [ 2014-10-13 ]

I also recall packages that had just debugging info (as opposed to having unstripped binaries, like the above examples do), but maybe it was in an RPM-based distribution.

Comment by Otto Kekäläinen [ 2014-12-20 ]

To recap: In Debian and Ubuntu normal packages are not supposed to contain debug symbols, they are stripped when the binary packages are created.

Ubuntu however provides automatically a facility that has the debug symbols, so that users can install them and get better stack traces. See details at https://wiki.ubuntu.com/DebuggingProgramCrash#Debug_Symbol_Packages (and examples at http://ddebs.ubuntu.com/pool/universe/m/mariadb-10.0/)

Comment by Otto Kekäläinen [ 2015-02-06 ]

psergey Did you notice my comment above? Can we close this issue with the remark that debug info can be found in separate packages and the main packages will not include them, now nor in the future?

Comment by Sergei Petrunia [ 2015-02-10 ]

otto, http://ddebs.ubuntu.com/pool/universe/m/mariadb-10.0/ looks like exactly what I wanted. I also see http://ddebs.ubuntu.com/pool/universe/m/mariadb-5.5/ , which has debug info for the several recent 5.5 versions.

But where can I find debug symbols for the binaries that I get from mariadb.org, for example from here:
https://downloads.mariadb.org/mariadb/repositories/#mirror=timeweb&distro=Ubuntu&distro_release=utopic--ubuntu_utopic&version=10.0

I assume ddebs.ubuntu.com has debug info for Ubuntu's packages which are generally different?
Also, mariadb.org provides packages for alpha/beta versions: http://mirror.timeweb.ru/mariadb/repo/10.1/ubuntu/pool/main/m/mariadb-10.1/ Is there any way to get ddebs for these?

Comment by Otto Kekäläinen [ 2015-02-10 ]

AFAIK the mariadb.org repositories don't have debug builds. I don't maintain the mariadb.org repos, but I think they are simply the ouput of downloading the source and running ./debian/autobake-deb.sh. You could try building debs yourself with a version where the rules file has a custom override_dh_strip like done in https://github.com/ottok/galera/blob/3.x/debian/rules

Unfortunately I don't have time right now to create debug version stuff for mariadb.org repos. There are more urgent stuff in packaging right now, like for example to merge upstream the whole new Debian packaging done in the latest 1-2 years.

Comment by Otto Kekäläinen [ 2015-12-20 ]

In Debian and Ubuntu normal packages are not supposed to contain debug symbols, they are stipped when the binary packages are created.

Ubuntu provides automatically a facility that has the debug symbols, so that users can install them and get better stack traces. See details at https://wiki.ubuntu.com/DebuggingProgramCrash#Debug_Symbol_Packages (and examples at http://ddebs.ubuntu.com/pool/universe/m/mariadb-10.0/)

Since December 2015 Debian also generates automatic debug symbol packages, see e.g. http://snapshot.debian.org/package/mariadb-10.0/10.0.22-6/#mariadb-server-10.0-dbgsym_10.0.22-6

Comment by Otto Kekäläinen [ 2016-11-25 ]

Both Ubuntu and Debian have been shipping debug symbols for a while. This issue is no longer relevant.

Comment by Daniel Black [ 2017-02-26 ]

> Both Ubuntu and Debian have been shipping debug symbols for a while.

Good for Debian and Ubuntu!

As psergey indicated MariaDB repos don't contain debug symbols.

This is impediment in every jira issue with a backtrace and insufficient information to solve it (like MDEV-9510 and linked issues). Having the debug symbols it would be possible to translate the segfault address to a line of code which can at least start the debugging process.

I noticed in 10.2 there is no longer an explicit dh_strip in debian/rules which looking in the archive http://archive.mariadb.org/mariadb-10.2.4/repo/ubuntu/pool/main/m/mariadb-10.2/ this isn't sufficient for generation.

As per https://wiki.debian.org/AutomaticDebugPackages it appears the debian/control needs debhelper (>= 9.20160114) (and obviously this installed on buildbot slaves).

Perhaps its something in the build scripts dbart that is preventing the generation or distribution of dbgsym packages?

Seems distros take the approach not to distribute these onto all the mirrors and mariadb doing this might be prudent also.

Having a 10.0, 10.1 solution would be valuable to developers too.

For Ubuntu is the package pkg-create-dbgsym required?

Comment by Otto Kekäläinen [ 2017-03-08 ]

When I make my own builds for example on 10.1, then dpkg-buildpackage automatically also generates debug symbol packages. See for example at the dbgsym files at http://labs.seravo.fi/~otto/debian/mariadb-10.1-sid-amd64/?C=M;O=A

I haven't done anything special. This seems to be a default setting in recent Debian/Ubuntu versions. Maybe it is just a matter of reconfiguring the buildbot scripts to copy all *.deb files to the repo server, including the dbgsym ones? dbart elenst ?

Comment by Daniel Black [ 2017-03-09 ]

I could be wrong but is debian/autobake.sh used?
http://bazaar.launchpad.net/~maria-captains/mariadb-tools/trunk/view/head:/buildbot/maria-master.cfg#L4632

otto What version of debhelper do you have? I see stable isn't at debhelper (>= 9.20160114) which https://wiki.debian.org/AutomaticDebugPackages which seem to be the required. I've successfully installed debhelper (and dh-systemd) from jessie-backports which might be required. I tried dpkg-buildpackage in a x86_64 Debian docker container which didn't generate the dbgsym packages (on 10.2 branch at commit 2bca41265c802dc9a3e8852bb2b3cda720a5d44a).

~/mariadb-server$ dpkg -l | grep debhelper
ii  debhelper                        10.2.5~bpo8+1             all          helper programs for debian/rules
ii  dh-apparmor                      2.9.0-3                   all          AppArmor debhelper routines
ii  dh-autoreconf                    12~bpo8+1                 all          debhelper add-on to call autoreconf and clean up after the build
ii  dh-systemd                       10.2.5~bpo8+1             all          debhelper add-on to handle systemd unit files - transitional package
~/mariadb-server$ DEB_BUILD_OPTIONS="nocheck parallel=52" dpkg-buildpackage  -uc -us -b
 
        ln -sf mysql-test-run.pl debian/mariadb-test/usr/share/mysql/mysql-test/mtr
        rm -f debian/mariadb-test/usr/share/mysql/mysql-test/mysql-test-run
        ln -sf mysql-test-run.pl debian/mariadb-test/usr/share/mysql/mysql-test/mysql-test-run
   dh_strip_nondeterminism -O--parallel
        Using 1447529205 as canonical time
        Normalizing debian/libmariadb-dev/usr/lib/x86_64-linux-gnu/libmariadbclient.a
        Normalizing debian/libmariadb-dev/usr/lib/x86_64-linux-gnu/libmysqlservices.a
        Using 1447529205 as canonical time
        Normalizing debian/libmariadbd-dev/usr/lib/x86_64-linux-gnu/libmysqld.a
        Using 1447529205 as canonical time
        Normalizing debian/mariadb-server-10.2/usr/share/doc/mariadb-server-10.2/mysqld.sym.gz
        Using 1447529205 as canonical time
        Normalizing debian/mariadb-test-data/usr/share/mysql/mysql-test/plugin/connect/connect/std_data/JdbcMariaDB.jar
   dh_compress -O--parallel
        cd debian/libmariadb3
        chmod a-x usr/share/doc/libmariadb3/changelog
        gzip -9nf usr/share/doc/libmariadb3/changelog
...
...
        find debian/mariadb-test-data/usr/share/applications -type f  -print0 2>/dev/null | xargs -0r chmod 0644
        find debian/mariadb-test-data/usr/lib/x86_64-linux-gnu/perl5/5.20 debian/mariadb-test-data/usr/share/perl5 -type f -perm -5 -name '*.pm'  -print0 2>/dev/null | xargs -0r chmod a-X
        find debian/mariadb-test-data -perm -5 -type f \( -name '*.so.*' -o -name '*.so' -o -name '*.la' -o -name '*.a' -o -name '*.js' -o -name '*.css' -o -name '*.jpeg' -o -name '*.jpg' -o -name '*.png' -o -name '*.gif' -o -name '*.cmxs' \)  -print0 2>/dev/null | xargs -0r chmod 0644
        find debian/mariadb-test-data/usr/lib -type f -name '*.ali'  -print0 2>/dev/null | xargs -0r chmod uga-w
   dh_strip -O--parallel
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadb3/usr/lib/x86_64-linux-gnu/libmariadb.so.3
       strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadb3/usr/lib/mysql/plugin/dialog.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadb3/usr/lib/mysql/plugin/mysql_clear_password.so
        strip --strip-debug --remove-section=.comment --remove-section=.note --enable-deterministic-archives debian/libmariadb-dev/usr/lib/x86_64-linux-gnu/libmariadbclient.a
        strip --strip-debug --remove-section=.comment --remove-section=.note --enable-deterministic-archives debian/libmariadb-dev/usr/lib/x86_64-linux-gnu/libmysqlservices.a
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadbd19/usr/lib/x86_64-linux-gnu/libmysqld.so.19
        strip --remove-section=.comment --remove-section=.note debian/libmariadbd-dev/usr/bin/mariadb_config
        strip --strip-debug --remove-section=.comment --remove-section=.note --enable-deterministic-archives debian/libmariadbd-dev/usr/lib/x86_64-linux-gnu/libmysqld.a
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-core-10.2/usr/bin/mysql
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-core-10.2/usr/bin/mysqlcheck
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-10.2/usr/bin/mysql_waitpid
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-10.2/usr/bin/mysqladmin
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-10.2/usr/bin/mysqldump
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-10.2/usr/bin/mysqlimport
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-10.2/usr/bin/mysqlshow
        strip --remove-section=.comment --remove-section=.note debian/mariadb-client-10.2/usr/bin/mysqlslap
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-core-10.2/usr/bin/innochecksum
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-core-10.2/usr/bin/mysql_upgrade
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-core-10.2/usr/sbin/mysqld
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/auth_pam.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/auth_socket.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/file_key_management.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/ha_archive.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/ha_blackhole.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/ha_federated.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/ha_federatedx.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/ha_sphinx.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/handlersocket.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/locales.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/metadata_lock_info.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/query_cache_info.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/query_response_time.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/semisync_master.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/semisync_slave.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/server_audit.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/simple_password_check.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/sql_errlog.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/user_variables.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-server-10.2/usr/lib/mysql/plugin/wsrep_info.so
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/aria_chk
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/aria_dump_log
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/aria_ftdump
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/aria_pack
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/aria_read_log
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/my_print_defaults
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/myisam_ftdump
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/myisamchk
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/myisamlog
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/myisampack
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/mysql_plugin
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/mysql_tzinfo_to_sql
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/mysqlbinlog
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/mysqld_safe_helper
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/perror
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/replace
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/resolve_stack_dump
        strip --remove-section=.comment --remove-section=.note debian/mariadb-server-10.2/usr/bin/resolveip
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-connect/usr/lib/mysql/plugin/ha_connect.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-oqgraph/usr/lib/mysql/plugin/ha_oqgraph.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-tokudb/usr/lib/mysql/plugin/ha_tokudb.so
        strip --remove-section=.comment --remove-section=.note debian/mariadb-plugin-tokudb/usr/bin/tokuftdump
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-mroonga/usr/lib/mysql/plugin/ha_mroonga.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-spider/usr/lib/mysql/plugin/ha_spider.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-gssapi-server/usr/lib/mysql/plugin/auth_gssapi.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-gssapi-client/usr/lib/mysql/plugin/auth_gssapi_client.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-plugin-cracklib-password-check/usr/lib/mysql/plugin/cracklib_password_check.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/adt_null.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/auth_0x0100.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/auth_test_plugin.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/debug_key_management.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/dialog_examples.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/example_key_management.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/ha_example.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/ha_test_sql_discovery.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/libdaemon_example.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/mypluglib.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/qa_auth_client.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/qa_auth_interface.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/mariadb-test/usr/lib/mysql/plugin/qa_auth_server.so
        strip --remove-section=.comment --remove-section=.note debian/mariadb-test/usr/bin/mysql_client_test
        strip --remove-section=.comment --remove-section=.note debian/mariadb-test/usr/bin/mysql_client_test_embedded
        strip --remove-section=.comment --remove-section=.note debian/mariadb-test/usr/bin/mysqltest
        strip --remove-section=.comment --remove-section=.note debian/mariadb-test/usr/bin/mysqltest_embedded
        strip --remove-section=.comment --remove-section=.note debian/mariadb-test/usr/share/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
...
build@e8483a7d9a01:~$ ls -la
total 54032                                                                                                                                                                                         
drwxr-xr-x  4 build build     4096 Mar  9 02:06 .                                                                                                                                                   
drwxr-xr-x  1 root  root        19 Mar  8 04:10 ..
-rw-------  1 build build      182 Mar  9 01:23 .bash_history
-rw-r--r--  1 build build      220 Nov  5 21:22 .bash_logout
-rw-r--r--  1 build build     3515 Nov  5 21:22 .bashrc
-rw-r--r--  1 build build      675 Nov  5 21:22 .profile
drwxr-xr-x  2 build build     4096 Mar  9 01:26 bin
-rw-r--r--  1 build build   287028 Mar  9 02:05 libmariadb-dev_10.2.0_amd64.deb
-rw-r--r--  1 build build   106404 Mar  9 02:05 libmariadb3_10.2.0_amd64.deb
-rw-r--r--  1 build build     2830 Mar  9 02:05 libmariadbclient18_10.2.0_amd64.deb
-rw-r--r--  1 build build  5224828 Mar  9 02:05 libmariadbd-dev_10.2.0_amd64.deb
-rw-r--r--  1 build build  4373048 Mar  9 02:05 libmariadbd19_10.2.0_amd64.deb
-rw-r--r--  1 build build     2836 Mar  9 02:05 libmysqlclient18_10.2.0_amd64.deb
-rw-r--r--  1 build build     9423 Mar  9 02:06 mariadb-10.2_10.2.0_amd64.changes
-rw-r--r--  1 build build  1070238 Mar  9 02:05 mariadb-client-10.2_10.2.0_amd64.deb
-rw-r--r--  1 build build   734408 Mar  9 02:05 mariadb-client-core-10.2_10.2.0_amd64.deb
-rw-r--r--  1 build build     2800 Mar  9 02:05 mariadb-client_10.2.0_all.deb
-rw-r--r--  1 build build     3320 Mar  9 02:05 mariadb-common_10.2.0_all.deb
-rw-r--r--  1 build build   443744 Mar  9 02:05 mariadb-plugin-connect_10.2.0_amd64.deb
-rw-r--r--  1 build build     4862 Mar  9 02:05 mariadb-plugin-cracklib-password-check_10.2.0_amd64.deb
-rw-r--r--  1 build build     5734 Mar  9 02:05 mariadb-plugin-gssapi-client_10.2.0_amd64.deb
-rw-r--r--  1 build build     7272 Mar  9 02:05 mariadb-plugin-gssapi-server_10.2.0_amd64.deb
-rw-r--r--  1 build build   882464 Mar  9 02:05 mariadb-plugin-mroonga_10.2.0_amd64.deb
-rw-r--r--  1 build build    63748 Mar  9 02:05 mariadb-plugin-oqgraph_10.2.0_amd64.deb
-rw-r--r--  1 build build   288880 Mar  9 02:05 mariadb-plugin-spider_10.2.0_amd64.deb
-rw-r--r--  1 build build   702878 Mar  9 02:05 mariadb-plugin-tokudb_10.2.0_amd64.deb
drwxrwxr-x 35 build root      4096 Mar  9 02:04 mariadb-server
-rw-r--r--  1 build build  3054392 Mar  9 02:05 mariadb-server-10.2_10.2.0_amd64.deb
-rw-r--r--  1 build build  5501698 Mar  9 02:05 mariadb-server-core-10.2_10.2.0_amd64.deb
-rw-r--r--  1 build build     2926 Mar  9 02:05 mariadb-server_10.2.0_all.deb
-rw-r--r--  1 build build 22376860 Mar  9 02:06 mariadb-test-data_10.2.0_all.deb
-rw-r--r--  1 build build 10086712 Mar  9 02:05 mariadb-test_10.2.0_amd64.deb
-rw-r--r--  1 build build     8384 Mar  9 02:05 mysql-common_10.2.0_all.deb
build@e8483a7d9a01:~$ debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/
-su: debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/: No such file or directory
build@e8483a7d9a01:~$ find mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/
mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/
mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/mysqld.sym.gz
mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/copyright
mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/README.Debian.gz
mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/changelog.gz
build@e8483a7d9a01:~$ find mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/ -ls
101296034    0 drwxr-xr-x   2 build    build          88 Mar  9 02:05 mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/
2155099041  336 -rw-r--r--   1 build    build      340590 Mar  9 02:05 mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/mysqld.sym.gz
2157626415    4 -rw-r--r--   1 build    build        2501 Oct 31 05:06 mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/copyright
2157626446    4 -rw-r--r--   1 build    build        2042 Oct 31 05:06 mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/README.Debian.gz
2157626414    4 -rw-r--r--   1 build    build         375 Mar  9 00:51 mariadb-server/debian/mariadb-server-10.2//usr/share/doc/mariadb-server-10.2/changelog.gz
build@e8483a7d9a01:~$ find mariadb-server -name '*dbgsym*'
build@e8483a7d9a01:~$

10.1

build@e8483a7d9a01:~/mariadb-10.1$   MAYBE_LIBCRACK='libcrack2-dev (>= 2.9.0),'
build@e8483a7d9a01:~/mariadb-10.1$   sed -i -e "s/\\\${MAYBE_LIBCRACK}/${MAYBE_LIBCRACK}/g" debian/control
build@e8483a7d9a01:~/mariadb-10.1$ DEB_BUILD_OPTIONS="nocheck parallel=52" dpkg-buildpackage  -uc -us -b 2>&1  | tee -a ../mariadb-10.1-build-dpkg-build-package.txt
 
 
dh_strip -a
dh_strip: Compatibility levels before 9 are deprecated (level 5 in use)
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadbclient18/usr/lib/libmysqlclient.so.18.0.0
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadbclient18/usr/lib/mysql/plugin/mysql_clear_password.so
        strip --remove-section=.comment --remove-section=.note --strip-unneeded debian/libmariadbclient18/usr/lib/mysql/plugin/dialog.so
 
 
build@e8483a7d9a01:~$ ls -lad *10.1*
-rw-r--r--  1 build build  1450644 Mar  9 02:27 libmariadbclient-dev_10.1.0_amd64.deb
-rw-r--r--  1 build build   585400 Mar  9 02:27 libmariadbclient18_10.1.0_amd64.deb
-rw-r--r--  1 build build     2798 Mar  9 02:27 libmariadbd-dev_10.1.0_amd64.deb
-rw-r--r--  1 build build     2824 Mar  9 02:27 libmysqlclient18_10.1.0_amd64.deb
drwxr-xr-x 35 build build     4096 Mar  9 02:26 mariadb-10.1
-rw-r--r--  1 build build  2564088 Mar  9 02:28 mariadb-10.1-build-dpkg-build-package.txt
-rw-r--r--  1 build build     7651 Mar  9 02:28 mariadb-10.1_10.1.0_amd64.changes
-rw-r--r--  1 build build  1067818 Mar  9 02:27 mariadb-client-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build   691400 Mar  9 02:27 mariadb-client-core-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build     2728 Mar  9 02:26 mariadb-client_10.1.0_all.deb
-rw-r--r--  1 build build     3160 Mar  9 02:26 mariadb-common_10.1.0_all.deb
-rw-r--r--  1 build build   442960 Mar  9 02:27 mariadb-connect-engine-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build     4658 Mar  9 02:27 mariadb-cracklib-password-check-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build     5630 Mar  9 02:27 mariadb-gssapi-client-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build     6964 Mar  9 02:27 mariadb-gssapi-server-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build    63576 Mar  9 02:27 mariadb-oqgraph-engine-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build  5780660 Mar  9 02:27 mariadb-server-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build  4410444 Mar  9 02:27 mariadb-server-core-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build     2866 Mar  9 02:26 mariadb-server_10.1.0_all.deb
-rw-r--r--  1 build build 30953714 Mar  9 02:28 mariadb-test-10.1_10.1.0_amd64.deb
-rw-r--r--  1 build build     2674 Mar  9 02:26 mariadb-test_10.1.0_all.deb
-rw-r--r--  1 build build     8448 Mar  9 02:26 mysql-common_10.1.0_all.deb

With 10.1 I also tried changed debian/compat to 9 and 10 without any generation of debug symbols.

Trying your tree with no debug syms.

build@e8483a7d9a01:~$ git clone --depth 10  https://github.com/ottok/mariadb-10.1.git mariadb-10.1-ottok
..
build@e8483a7d9a01:~/mariadb-10.1-ottok$ DEB_BUILD_OPTIONS="nocheck parallel=52" dpkg-buildpackage   -uc -us -b 2>&1  | tee -a ../mariadb-10.1-build-ottok-dpkg-build-package.txt
...
build@e8483a7d9a01:~/mariadb-10.1-ottok$ ls ../*deb
../libmariadbclient-dev-compat_10.1.21-5_amd64.deb  ../mariadb-client_10.1.21-5_all.deb                            ../mariadb-plugin-oqgraph_10.1.21-5_amd64.deb
../libmariadbclient-dev_10.1.21-5_amd64.deb         ../mariadb-common_10.1.21-5_all.deb                            ../mariadb-plugin-spider_10.1.21-5_amd64.deb
../libmariadbclient18_10.1.21-5_amd64.deb           ../mariadb-plugin-connect_10.1.21-5_amd64.deb                  ../mariadb-server-10.1_10.1.21-5_amd64.deb
../libmariadbd-dev_10.1.21-5_amd64.deb              ../mariadb-plugin-cracklib-password-check_10.1.21-5_amd64.deb  ../mariadb-server-core-10.1_10.1.21-5_amd64.deb
../libmariadbd18_10.1.21-5_amd64.deb                ../mariadb-plugin-gssapi-client_10.1.21-5_amd64.deb            ../mariadb-server_10.1.21-5_all.deb
../mariadb-client-10.1_10.1.21-5_amd64.deb          ../mariadb-plugin-gssapi-server_10.1.21-5_amd64.deb            ../mariadb-test-data_10.1.21-5_all.deb
../mariadb-client-core-10.1_10.1.21-5_amd64.deb     ../mariadb-plugin-mroonga_10.1.21-5_amd64.deb                  ../mariadb-test_10.1.21-5_amd64.deb

So I'm still at a loss as to how to generate it.

Comment by Otto Kekäläinen [ 2017-03-10 ]

Looking at my own build array at http://labs.seravo.fi/~otto/debian/ it seems that the dbgsym.deb packages are built only when the build runs in the sid chroot, so it seems to be require that a recent enough dpkg or some other build tool is present.

Your note about debhelper (>= 9.20160114) is probably the right conclusion.

Comment by Daniel Black [ 2017-03-14 ]

Ok got it going. Pulling in debhelper from sid pulled in liblzma of a different ABI version - so not ideal.

So here's a version that worked for mariadb-10.1 in Debian stable.

 docker run -ti debian
 
 echo deb-src  http://deb.debian.org/debian jessie main >> /etc/apt/sources.list
 
 useradd -m build -s /bin/bash
apt update -y
 apt-get build-dep mariadb-server
 
apt install autoconf automake autopoint autotools-dev dh-autoreconf dh-strip-nondeterminism dpkg dpkg-dev libarchive-zip-perl libdpkg-perl libfile-stripnondeterminism-perl libltdl-dev libltdl7 liblzma5 libtool tar dpatch libkrb5-dev libssl-dev libcrack2-dev debhelper
 
echo deb http://ftp.debian.org/debian jessie-backports main >> /etc/apt/sources.list
apt update
 
apt-get -t jessie-backports install debhelper
 
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  dh-autoreconf dh-strip-nondeterminism libfile-stripnondeterminism-perl
Suggested packages:
  dh-make
The following packages will be upgraded:
  debhelper dh-autoreconf dh-strip-nondeterminism libfile-stripnondeterminism-perl
4 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.
 
wget https://anonscm.debian.org/git/debhelper/debhelper.git/plain/dh_strip -O /usr/bin/dh_strip
chmod a+x /usr/bin/dh_strip
 
# from outside container
#docker cp mariadb-server/ {containerID/name}:/home/build
 
# back inside the container
chown -R build: /home/build/
 
su - build
cd mariadb-server
 
 MAYBE_LIBCRACK='libcrack2-dev (>= 2.9.0),'
 sed -i -e "s/\\\${MAYBE_LIBCRACK}/${MAYBE_LIBCRACK}/g" debian/control
echo 9 > debian/compat
 
DEB_BUILD_OPTIONS="nocheck parallel=52" dpkg-buildpackage  -uc -us -b 2>&1  | tee -a ../mariadb-10.1-build-dpkg-build-package.txt

Required changes:

  • code change - 9 > debian/compat

Build infrastructure:

  1. Enable jessie backports (in above)
  2. Install debhelper from jessie backports
  3. Pull in latest upstream dh_strip (wget as above). (see diff it has an explicit disable of the build dbgsym) - the warning about incompatible dpkg-dev didn't manifest in a way I could observer
Comment by Daniel Black [ 2017-03-14 ]

For Ubuntu (tested on 16.04), MariaDB-10.1

ref: ubuntu-docker-mariadb-build-with-debug.txt attachment

Required changes:

  • code change - 9 > debian/compat

Build infrastructure:

  • Enable xenial-backports
  • Install debhelper from xenial-backports (tested with: debhelper 10.2.2ubuntu1~ubuntu16.04.1)
  • export DH_BUILD_DDEBS=1 before the build
Comment by Daniel Black [ 2017-03-14 ]

Ubuntu-16.04 with mariadb-5.5

export DH_BUILD_DDEBS=1
DEB_BUILD_OPTIONS="nocheck parallel=22" debian/autobake-deb.sh 
...
 ls -la .. | fgrep 5.5
-rw-r--r--  1 build build   1277528 Mar 14 14:23 libmariadbclient-dev_5.5.1_amd64.deb
-rw-r--r--  1 build build    725434 Mar 14 14:23 libmariadbclient18-dbgsym_5.5.1_amd64.deb
-rw-r--r--  1 build build    525494 Mar 14 14:23 libmariadbclient18_5.5.1_amd64.deb
-rw-r--r--  1 build build      2718 Mar 14 14:23 libmariadbd-dev_5.5.1_amd64.deb
-rw-r--r--  1 build build      2750 Mar 14 14:23 libmysqlclient18_5.5.1_amd64.deb
-rw-rw-r--  1 build build   1807053 Mar 14 14:26 mariadb-10.1-build-dpkg-build-package-5.5.txt
-rw-rw-r--  1 build build      2018 Mar 14 14:09 mariadb-5.5_5.5.1.dsc
-rw-rw-r--  1 build build 644778419 Mar 14 14:09 mariadb-5.5_5.5.1.tar.gz
-rw-rw-r--  1 build build      7895 Mar 14 14:26 mariadb-5.5_5.5.1_amd64.changes
-rw-r--r--  1 build build   3821052 Mar 14 14:23 mariadb-client-5.5-dbgsym_5.5.1_amd64.deb
-rw-r--r--  1 build build    964046 Mar 14 14:23 mariadb-client-5.5_5.5.1_amd64.deb
-rw-r--r--  1 build build   1455306 Mar 14 14:23 mariadb-client-core-5.5-dbgsym_5.5.1_amd64.deb
-rw-r--r--  1 build build    632182 Mar 14 14:23 mariadb-client-core-5.5_5.5.1_amd64.deb
-rw-r--r--  1 build build      2648 Mar 14 14:22 mariadb-client_5.5.1_all.deb
-rw-r--r--  1 build build      3048 Mar 14 14:22 mariadb-common_5.5.1_all.deb
-rw-r--r--  1 build build  26354004 Mar 14 14:25 mariadb-server-5.5-dbgsym_5.5.1_amd64.deb
-rw-r--r--  1 build build   4749558 Mar 14 14:26 mariadb-server-5.5_5.5.1_amd64.deb
-rw-r--r--  1 build build  20387382 Mar 14 14:23 mariadb-server-core-5.5-dbgsym_5.5.1_amd64.deb
-rw-r--r--  1 build build   3895256 Mar 14 14:23 mariadb-server-core-5.5_5.5.1_amd64.deb
-rw-r--r--  1 build build      2780 Mar 14 14:22 mariadb-server_5.5.1_all.deb
-rw-r--r--  1 build build  39339224 Mar 14 14:24 mariadb-test-5.5-dbgsym_5.5.1_amd64.deb
-rw-r--r--  1 build build  23149210 Mar 14 14:25 mariadb-test-5.5_5.5.1_amd64.deb
-rw-r--r--  1 build build      2592 Mar 14 14:22 mariadb-test_5.5.1_all.deb
-rw-r--r--  1 build build      8240 Mar 14 14:22 mysql-common_5.5.1_all.deb

Comment by Daniel Bartholomew [ 2017-03-15 ]

I've done some testing with several of our builders in buildbot, and I'm not convinced `cat 9 > debian/compat` is needed.

On our Xenial, Stretch, and Yakkety builders all I need to do is `export DH_BUILD_DDEBS=1` prior to running debian/autobake.sh and I get dbgsym .deb files.

On our Trusty builder I can get it to create dbgsym .ddeb files (not .deb files) if I first install pkg-create-dbgsym and then do the export and autobake.

The Jessie builder is giving me trouble, it is so far refusing to create dbgsym .deb files, even after installing debhelper from jessie-backports like you suggest. And doing `cat 9 > debian/compat` doesn't change anything, it still doesn't create dbgsym .deb files. I'll have to do some more digging to see if I can find out why.

Comment by Daniel Black [ 2017-03-15 ]

On Jessie - look in the /usr/bin/dh_strip to see if there is an explicit disable.

Comment by Sergey Vojtovich [ 2017-03-17 ]

otto, you now have PR#336 assigned, please review.

Comment by Daniel Bartholomew [ 2017-03-17 ]

danblack: I took a look at the differences between the dh_strip in stretch (version 0.031-1) and the version currently in jessie-backports (version 0.031-1~bpo8+1) and yes, there is one difference:

--- dh_strip-stretch	2017-03-17 12:27:10.339611257 -0400
+++ dh_strip-jessie-0.031-1~bpo8+1	2017-03-17 12:57:01.018522537 -0400
@@ -166,6 +166,10 @@
 	error("--dbgsym-migration and --no-automatic-dbgsym are mutually exclusive");
 }
 
+# UNCONDITIONALLY disable this as we need a new version of dpkg-dev
+# for this to work
+$dh{ENABLE_DBGSYM} = 0;
+
 # This variable can be used to turn off stripping (see Policy).
 if (get_buildoption('nostrip')) {
 	exit;

Comment by Daniel Black [ 2017-03-19 ]

dbart, yes that would be the difference I mentioned in (3.) here https://jira.mariadb.org/browse/MDEV-658?focusedCommentId=92965&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-92965 . I couldn't see how the dpkg-dev versioning had an effect on this.

So have you all the information needed for debug packages on Debian and Ubuntu?

Although you observed compat 9 wasn't required for operation did you see added compression of the debug package as a result of it (https://www.mankier.com/7/debhelper#Compatibility_Levels)? Where filenames in the debug packages different?

Comment by Daniel Black [ 2017-06-18 ]

So 5.5 has no debug syms.
(Debian):
10.0 has a 10.0.30 debug package for x86_64/i386 but not for ppc64le or 10.0.31
10.1 has 10.1.22 and 10.1.23 (x86_64 only) but not 10.1.24
10.2 has recent debug symbols packages for recent releases of x86_64/i386 but not ppc64le.

Comment by Otto Kekäläinen [ 2017-06-19 ]

FYI: https://www.debian.org/releases/stable/amd64/release-notes/ch-whats-new.en.html#debug-archive

Comment by Daniel Black [ 2017-06-20 ]

Thanks otto, will use that in the next updated of the KB related to debugging.

Generated at Thu Feb 08 06:30:23 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.