Details

      Description

      As seen at https://buildd.debian.org/status/package.php?p=mariadb-5.5 the Debian MariaDB packages do not build on architecture kfreebsd (both i386 and amd64). Builds fail with the error:

      mysql-test-run: *** ERROR: Socket path '/tmp/0rfd4fI37_' too long, it would be  truncated and thus not possible to use for connection to  MySQL Server. Set a shorter with --tmpdir=<path> option
      

      Equivalent MySQL packages build successfully as seen on https://buildd.debian.org/status/package.php?p=mysql-5.5

      Maybe there are some patches in MySQL that could be imported into MariaDB?

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

              Hide
              elenst Elena Stepanova added a comment -

              I don't see anything obvious in MTR that could cause the difference between MySQL and MariaDB, the fragments of code that do the check for socket path length are identical.
              If you could apply (temporarily!) the patch below, we might gather more information about what is going on. The patch itself cannot fix anything, it just adds more logging.

              === modified file 'mysql-test/lib/My/Platform.pm'
              --- mysql-test/lib/My/Platform.pm	2011-06-30 15:37:13 +0000
              +++ mysql-test/lib/My/Platform.pm	2014-02-20 10:51:00 +0000
              @@ -120,6 +120,16 @@
                 my $len = length($path) - length($tmpdir) - 1;
                 my $testfile = $tmpdir . "/" . "x" x ($len  > 0 ? $len : 1);
                 my $sock;
              +  print("Trying to create socket with name $testfile\n");
              +  if (-e $testfile) {
              +    print("...but $testfile already exists\n");
              +    if (-d $testfile) {
              +      print("...and $testfile is a directory\n");
              +    }
              +    if (! -w $testfile) {
              +      print("...and $testfile is not writable\n");
              +    }
              +  }
                 eval {
                   $sock= new IO::Socket::UNIX
                     (
              @@ -128,10 +138,10 @@
                     );
                   $truncated= 1; # Be negatvie
               
              -    die "Could not create UNIX domain socket: $!"
              +    print("Could not create socket\n") && die "Could not create UNIX domain socket: $!"
                     unless defined $sock;
               
              -    die "UNIX domain socket path was truncated"
              +    print("Socket path was truncated to ".$sock->hostpath()."\n") && die "UNIX domain socket path was truncated"
                     unless ($testfile eq $sock->hostpath());
               
                   $truncated= 0; # Yes, it worked!
              
              
              Show
              elenst Elena Stepanova added a comment - I don't see anything obvious in MTR that could cause the difference between MySQL and MariaDB, the fragments of code that do the check for socket path length are identical. If you could apply (temporarily!) the patch below, we might gather more information about what is going on. The patch itself cannot fix anything, it just adds more logging. === modified file 'mysql-test/lib/My/Platform.pm' --- mysql-test/lib/My/Platform.pm 2011-06-30 15:37:13 +0000 +++ mysql-test/lib/My/Platform.pm 2014-02-20 10:51:00 +0000 @@ -120,6 +120,16 @@ my $len = length($path) - length($tmpdir) - 1; my $testfile = $tmpdir . "/" . "x" x ($len > 0 ? $len : 1); my $sock; + print("Trying to create socket with name $testfile\n"); + if (-e $testfile) { + print("...but $testfile already exists\n"); + if (-d $testfile) { + print("...and $testfile is a directory\n"); + } + if (! -w $testfile) { + print("...and $testfile is not writable\n"); + } + } eval { $sock= new IO::Socket::UNIX ( @@ -128,10 +138,10 @@ ); $truncated= 1; # Be negatvie - die "Could not create UNIX domain socket: $!" + print("Could not create socket\n") && die "Could not create UNIX domain socket: $!" unless defined $sock; - die "UNIX domain socket path was truncated" + print("Socket path was truncated to ".$sock->hostpath()."\n") && die "UNIX domain socket path was truncated" unless ($testfile eq $sock->hostpath()); $truncated= 0; # Yes, it worked!
              Hide
              elenst Elena Stepanova added a comment -

              The reason of the failure is the debian bug
              https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670722
              A simple script using hostpath() reproduces it on kFreeBSD.

              I couldn't understand why it passes with MySQL in the official build system. I cloned the git tree from git://git.debian.org/git/pkg-mysql/mysql-5.5.git, and they fail exact same way. Possibly during installation of dependencies some experimental package which fixes the bug is pulled, but it's just a guess. it's hard for me to reproduce the entire process, because apparently it uses some closed repositories (and besides currently i can't use unstable for kFreeBSD at all, it complains about hash sum mismatch at least on two different mirrors). In any case, it is a hypothetical question because the real solution is to get the upstream bug fixed.

              Show
              elenst Elena Stepanova added a comment - The reason of the failure is the debian bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=670722 A simple script using hostpath() reproduces it on kFreeBSD. I couldn't understand why it passes with MySQL in the official build system. I cloned the git tree from git://git.debian.org/git/pkg-mysql/mysql-5.5.git, and they fail exact same way. Possibly during installation of dependencies some experimental package which fixes the bug is pulled, but it's just a guess. it's hard for me to reproduce the entire process, because apparently it uses some closed repositories (and besides currently i can't use unstable for kFreeBSD at all, it complains about hash sum mismatch at least on two different mirrors). In any case, it is a hypothetical question because the real solution is to get the upstream bug fixed.
              Show
              otto Otto Kekäläinen added a comment - This is still valid for 5.5.38: https://buildd.debian.org/status/fetch.php?pkg=mariadb-5.5&arch=kfreebsd-amd64&ver=5.5.38-1&stamp=1405681151 https://buildd.debian.org/status/fetch.php?pkg=mariadb-5.5&arch=kfreebsd-i386&ver=5.5.38-1&stamp=1405684324 MySQL in Debian does however build ( https://buildd.debian.org/status/package.php?p=mysql-5.5 ) on this architecture and I think we should get to the same level.
              Hide
              otto Otto Kekäläinen added a comment -

              This MTR issue is now fixed with this patch http://anonscm.debian.org/cgit/pkg-mysql/mariadb-5.5.git/commit/?id=7a4997284b903cb281f9107a781fa2bf16ff7ac2 and verified in build log at https://buildd.debian.org/status/fetch.php?pkg=mariadb-5.5&arch=kfreebsd-amd64&ver=5.5.39-1&stamp=1407788422

              However, MariaDB does not yet fully build on kfreebsd due to another error (auth_socket.so missing) but for that I'll open another issue.

              Please copy the patch to MariaDB trunk and release the fix in upstream 5.5.40.

              Show
              otto Otto Kekäläinen added a comment - This MTR issue is now fixed with this patch http://anonscm.debian.org/cgit/pkg-mysql/mariadb-5.5.git/commit/?id=7a4997284b903cb281f9107a781fa2bf16ff7ac2 and verified in build log at https://buildd.debian.org/status/fetch.php?pkg=mariadb-5.5&arch=kfreebsd-amd64&ver=5.5.39-1&stamp=1407788422 However, MariaDB does not yet fully build on kfreebsd due to another error (auth_socket.so missing) but for that I'll open another issue. Please copy the patch to MariaDB trunk and release the fix in upstream 5.5.40.

                People

                • Assignee:
                  serg Sergei Golubchik
                  Reporter:
                  otto Otto Kekäläinen
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved:

                    Time Tracking

                    Estimated:
                    Original Estimate - Not Specified
                    Not Specified
                    Remaining:
                    Remaining Estimate - 0 minutes
                    0m
                    Logged:
                    Time Spent - 5 minutes
                    5m