I'm attaching a patch that solves the issue; verification steps below.
It disables -fexceptions when building multipath-udeb.

(I had in mind something more elegant, like only adding -fno-exceptions
from debian/rules into DEB_CFLAGS_MAINT_APPEND as done w/ -static-
libgcc, but that way it doesn't override the post-added -fexceptions in
Makefile.inc).. and found no other variable that would override it w/
less changes. So it's adding a patch to Makefile.inc and it does the
job.)

Some comments with more details/explanation of the issue were not
mirrored yet; should be on their way.


Build verification:
------------------

Checking the build log, the 2 tur.o objects are built correctly:
1) multipath-udeb: with -static-libgcc and without -fexceptions
2) multipath deb: without -static-libgcc and with -fexceptions (default)

        $ dpkg-buildpackage 2>&1 | tee ../dpkg-buildpackage.log

        $ grep -- '-o tur.o' ../dpkg-buildpackage.log
        cc -g -O3 -fPIE -fstack-protector-strong -Wformat 
-Werror=format-security -static-libgcc -D_FORTIFY_SOURCE=2 -O2 -g -pipe -Wall 
-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wunused 
-Wstrict-prototypes -fPIC -DLIB_STRING=\"lib\" -I.. -c -o tur.o tur.c
        cc -g -O3 -fPIE -fstack-protector-strong -Wformat 
-Werror=format-security -D_FORTIFY_SOURCE=2 -O2 -g -pipe -Wall 
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
--param=ssp-buffer-size=4 -Wunused -Wstrict-prototypes -fPIC 
-DLIB_STRING=\"lib\" -I.. -c -o tur.o tur.c

Checking the build output, the ELF objects (don't) dyn-link to libgcc_s as 
appropriate:
1) multipath-udeb: ELF objects don't dyn-link with libgcc_s
2) multipath deb: ELF objects dyn-link with libgcc_s

        $ find debian/tmp-multipath-udeb/ | while read file; do file $file | 
grep -q ELF && objdump -x $file | grep -q 'NEEDED.*libgcc_s' && echo $file 
needs libgcc_s; done
        $

        $ find debian/tmp/ | while read file; do file $file | grep -q ELF && 
objdump -x $file | grep -q 'NEEDED.*libgcc_s' && echo $file needs libgcc_s; done
        debian/tmp/lib/libmultipath.so.0 needs libgcc_s
        debian/tmp/lib/multipath/libchecktur.so needs libgcc_s
        debian/tmp/sbin/multipathd needs libgcc_s
        $


Installer verification:
-----------------------

Configure multipath.conf for using tur with QEMU/KVM SCSI disks:

        ~ # cat <<EOF >/etc/multipath.conf <<EOF
        defaults {
          user_friendly_names yes
          path_checker tur
        } 
        blacklist_exceptions {
          property ID_SERIAL
        }
        EOF

Test (Not OK):

        ~ # multipath -v3
        ...
        <...> | A dynamic linking error occurred: (libgcc_s.so.1: cannot open 
shared object file: No such file or directory)
        ...
        <...> | A dynamic linking error occurred: (libgcc_s.so.1: cannot open 
shared object file: No such file or directory)
        uuid hcil    dev dev_t pri dm_st chk_st vend/prod/rev      dev_st 
             0:0:1:0 sda 8:0   -1  undef faulty QEMU,QEMU HARDDISK running
             0:0:2:0 sdb 8:16  -1  undef faulty QEMU,QEMU HARDDISK running
        ...

Install the new udeb:

        ~ # udpkg -i multipath-
udeb_0.5.0-7ubuntu3fexceptions1_ppc64el.udeb

Re-test (now OK):

        ~ # multipath -v3
        ...
        ===== paths list =====
        uuid                           hcil    dev dev_t pri dm_st chk_st 
vend/prod/re
        0QEMU_QEMU_HARDDISK_helloworld 0:0:1:0 sda 8:0   1   undef ready  
QEMU,QEMU HA
        0QEMU_QEMU_HARDDISK_helloworld 0:0:2:0 sdb 8:16  1   undef ready  
QEMU,QEMU HA
        ...
        create: mpatha (0QEMU_QEMU_HARDDISK_helloworld) undef QEMU,QEMU HARDDISK
        size=128G features='0' hwhandler='0' wp=undef
        |-+- policy='round-robin 0' prio=1 status=undef
        | `- 0:0:1:0 sda 8:0  undef ready running
        `-+- policy='round-robin 0' prio=1 status=undef
          `- 0:0:2:0 sdb 8:16 undef ready running
        ...

** Patch added: "Disable -fexceptions when building multipath-udeb"
   
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+attachment/4457034/+files/multipath-tools_disable-fexceptions-udeb.debdiff

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1489379

Title:
  LTE: ISST:leeklp4 no mpath choices for install ubuntu 15.10

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1489379/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to