Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.1.67, 5.2.14, 5.3.12, 5.5.39, 10.0.14
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.
Attachments
Issue Links
Activity
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.
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.
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.
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/)
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?
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?
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.
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
Both Ubuntu and Debian have been shipping debug symbols for a while. This issue is no longer relevant.
> 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?
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 ?
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.
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.
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:
- Enable jessie backports (in above)
- Install debhelper from jessie backports
- 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
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
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
|
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.
On Jessie - look in the /usr/bin/dh_strip to see if there is an explicit disable.
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;
|
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?
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.
Thanks otto, will use that in the next updated of the KB related to debugging.
Launchpad bug id: 842688