mysql build fails on d88b29d6b78482cdb05ac714984f6a27195e3d37

  • Done
  • quality assurance status badge
Details
4 participants
  • Marius Bakke
  • Tobias Geerinckx-Rice
  • Nils Gillmann
  • Ricardo Wurmus
Owner
unassigned
Submitted by
Nils Gillmann
Severity
normal

Debbugs page

Nils Gillmann wrote 7 years ago
(address . bug-guix@gnu.org)
20180705102434.odt3hlp3ghsxsmfs@abyayala
Attachment: file
Tobias Geerinckx-Rice wrote 7 years ago
(name . Nils Gillmann)(address . ng0@n0.is)(address . 32058@debbugs.gnu.org)
87y3epnck6.fsf@lapdog.tobias.gr
ng0,

Thanks!

Nils Gillmann wrote:
Toggle quote (7 lines)
> Since I do not have the time to work on this, but there seems to
> be no open bug:
>
> mysql started a couple of commits ago (since last core-updates
> merge?) to fail
> its build.

I noticed this yesterday, too. In the meantime, I've tried
updating MySQL to 5.7.22 (one never knows) and poking at some
random bits but that didn't help.

Toggle quote (2 lines)
> [build output snipped]

There's actually an error message[0]. Did it not show up in your
logs? I'd consider that a bug too.

If I had to guess I'd say that a GCC bump's to blame. Or maybe
Boost, though that seems unlikely.

Unfortunately, I also don't have the time to debug this now or
indeed the next month.

Kind regards,

T G-R

[0]:
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:
In function ‘void handle_gis_exception(const char*)’:
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:37:81:
error: expected unqualified-id before ‘&’ token
catch (const
boost::geometry::detail::self_get_turn_points::self_ip_exception
&)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:37:81:
error: expected ‘)’ before ‘&’ token
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:37:81:
error: expected ‘{’ before ‘&’ token
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:37:82:
error: expected primary-expression before ‘)’ token
catch (const
boost::geometry::detail::self_get_turn_points::self_ip_exception
&)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:42:3:
error: expected primary-expression before ‘catch’
catch (const boost::geometry::empty_input_exception &)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:46:3:
error: expected primary-expression before ‘catch’
catch (const boost::geometry::inconsistent_turns_exception &)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:50:3:
error: expected primary-expression before ‘catch’
catch (const boost::geometry::exception &)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:54:3:
error: expected primary-expression before ‘catch’
catch (const std::bad_alloc &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:58:3:
error: expected primary-expression before ‘catch’
catch (const std::domain_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:62:3:
error: expected primary-expression before ‘catch’
catch (const std::length_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:66:3:
error: expected primary-expression before ‘catch’
catch (const std::invalid_argument &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:70:3:
error: expected primary-expression before ‘catch’
catch (const std::out_of_range &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:74:3:
error: expected primary-expression before ‘catch’
catch (const std::overflow_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:78:3:
error: expected primary-expression before ‘catch’
catch (const std::range_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:82:3:
error: expected primary-expression before ‘catch’
catch (const std::underflow_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:86:3:
error: expected primary-expression before ‘catch’
catch (const std::logic_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:90:3:
error: expected primary-expression before ‘catch’
catch (const std::runtime_error &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:94:3:
error: expected primary-expression before ‘catch’
catch (const std::exception &e)
^
/tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:98:3:
error: expected primary-expression before ‘catch’
catch (...)
^
make[2]: *** [sql/CMakeFiles/sql.dir/build.make:583:
sql/CMakeFiles/sql.dir/item_geofunc_internal.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory
'/tmp/guix-build-mysql-5.7.21.drv-0/build'
Nils Gillmann wrote 7 years ago
(name . Tobias Geerinckx-Rice)(address . me@tobias.gr)(address . 32058@debbugs.gnu.org)(name . Nils Gillmann)(address . ng0@n0.is)
20180705134700.ircz6fz3cuzb5cks@abyayala
Attachment: file
Ricardo Wurmus wrote 7 years ago
(name . Nils Gillmann)(address . ng0@n0.is)(address . 32058@debbugs.gnu.org)
87601t29x2.fsf@elephly.net
Nils Gillmann <ng0@n0.is> writes:

Toggle quote (5 lines)
> Since I do not have the time to work on this, but there seems to be no open bug:
>
> mysql started a couple of commits ago (since last core-updates merge?) to fail
> its build.

It looks like you omitted the actual error message that caused make to exit.

--
Ricardo
Nils Gillmann wrote 7 years ago
(name . Ricardo Wurmus)(address . rekado@elephly.net)(name . Tobias Geerinckx-Rice)(address . me@tobias.gr)(address . 32058@debbugs.gnu.org)(name . Nils Gillmann)(address . ng0@n0.is)
20180705210344.damzidj3uq6dko3v@abyayala
Ricardo Wurmus transcribed 1.7K bytes:
Toggle quote (51 lines)
>
> Nils Gillmann <ng0@n0.is> writes:
>
> > Tobias Geerinckx-Rice transcribed 5.0K bytes:
> >> ng0,
> >>
> >> Thanks!
> >>
> >> Nils Gillmann wrote:
> >> > Since I do not have the time to work on this, but there seems to be no
> >> > open bug:
> >> >
> >> > mysql started a couple of commits ago (since last core-updates merge?)
> >> > to fail
> >> > its build.
> >>
> >> I noticed this yesterday, too. In the meantime, I've tried updating MySQL to
> >> 5.7.22 (one never knows) and poking at some random bits but that didn't
> >> help.
> >>
> >> > [build output snipped]
> >>
> >> There's actually an error message[0]. Did it not show up in your logs? I'd
> >> consider that a bug too.
> >
> > Odd. I think this was by accident. Here it is:
>
> This happens when building in parallel; the actual error that caused the
> build to terminate could have occurred hundreds of lines earlier when
> another independent make processes is still running.
>
> Anyway, thanks for providing the error message.
>
> > /tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc: In function ‘void
> > handle_gis_exception(const char*)’:
> > /tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:37:81: error: expected
> > unqualified-id before ‘&’ token
> > catch (const boost::geometry::detail::self_get_turn_points::self_ip_exception &)
>
> The Internet tells me that mysql is very picky about which versions of
> boost it build with. We use boost 1.66.0 now.
>
> The mysql package definition contains this comment:
>
> ;; Mysql wants boost-1.59.0 specifically
>
> and then we proceed to just replace 59 for whatever minor version it is
> we are using.
>
> Should we just upgrade to the latest version 8.0.11?

It's worth a try. Given that we just have 4 dependent packages for mysql
it could simply be applied.
Since mariadb usually just works in place of
could we attempt to replace and support mysql in kodi with mariadb?

They seem to support mariadb (https://kodi.wiki/view/MySQL):

MySQL Protocol & MariaDB
When setting up shared Library databases either MySQL or Maria DB can be used as they both use the same MySQL protocol. Since many Linux distributions have dropped including MySQL and now instead now ship MariaDB it is being more common to use MariaDB for shared Library databases.

Toggle quote (3 lines)
> --
> Ricardo
>
Ricardo Wurmus wrote 7 years ago
(name . Nils Gillmann)(address . ng0@n0.is)(name . Tobias Geerinckx-Rice)(address . me@tobias.gr)(address . 32058@debbugs.gnu.org)
87601ttpnf.fsf@elephly.net
Nils Gillmann <ng0@n0.is> writes:

Toggle quote (24 lines)
> Tobias Geerinckx-Rice transcribed 5.0K bytes:
>> ng0,
>>
>> Thanks!
>>
>> Nils Gillmann wrote:
>> > Since I do not have the time to work on this, but there seems to be no
>> > open bug:
>> >
>> > mysql started a couple of commits ago (since last core-updates merge?)
>> > to fail
>> > its build.
>>
>> I noticed this yesterday, too. In the meantime, I've tried updating MySQL to
>> 5.7.22 (one never knows) and poking at some random bits but that didn't
>> help.
>>
>> > [build output snipped]
>>
>> There's actually an error message[0]. Did it not show up in your logs? I'd
>> consider that a bug too.
>
> Odd. I think this was by accident. Here it is:

This happens when building in parallel; the actual error that caused the
build to terminate could have occurred hundreds of lines earlier when
another independent make processes is still running.

Anyway, thanks for providing the error message.

Toggle quote (6 lines)
> /tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc: In function ‘void
> handle_gis_exception(const char*)’:
> /tmp/guix-build-mysql-5.7.21.drv-0/mysql-5.7.21/sql/item_geofunc_internal.cc:37:81: error: expected
> unqualified-id before ‘&’ token
> catch (const boost::geometry::detail::self_get_turn_points::self_ip_exception &)

The Internet tells me that mysql is very picky about which versions of
boost it build with. We use boost 1.66.0 now.

The mysql package definition contains this comment:

;; Mysql wants boost-1.59.0 specifically

and then we proceed to just replace 59 for whatever minor version it is
we are using.

Should we just upgrade to the latest version 8.0.11?

--
Ricardo
Tobias Geerinckx-Rice wrote 7 years ago
[PATCH] gnu: mysql: Fix build.
(address . 32058@debbugs.gnu.org)
20180815231516.10758-1-me@tobias.gr
MySQL demands boost@1.59.0, and lying about it no longer works:

sql/item_geofunc_internal.cc: In function ‘void handle_gis_exception(const char*)’:
sql/item_geofunc_internal.cc:37:81: error: expected unqualified-id before ‘&’ token
catch (const boost::geometry::detail::self_get_turn_points::self_ip_exception &)
^
[...]

* gnu/packages/databases.scm (boost-for-mysql): New variable.
(mysql)[inputs]: Use that instead of the regular boost.
[arguments]: Remove now-unnecessary ‘patch-boost-version’ phase.
---

ng0, Ricardo,

I went on holiday and forgot about this bug. A healthy sign.

Here's the straightforward fix to unbreak the current build.

I suggest we get 5.x working soon (I'll bump it to 5.7.23 if this fix
is acceptable) and update to 8.x later, when/if somebody's willing to
work on it. I'm not.

Kind regards,

T G-R

gnu/packages/databases.scm | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)

Toggle diff (54 lines)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 87c925a6b..cb77edeaf 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -548,6 +548,22 @@ RDBMS systems (which are deep in functionality).")
;; Some parts are licensed under the Apache License
license:asl2.0))))
+(define boost-for-mysql
+ (package
+ (inherit boost)
+ (version "1.59.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://sourceforge/boost/boost/" version "/boost_"
+ (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
+ ".tar.bz2"))
+ (sha256
+ (base32
+ "1jj1aai5rdmd72g90a3pd8sw9vi32zad46xv5av8fhnr48ir6ykj"))))))
+
+;; XXX When updating, check whether boost-for-mysql is still needed.
+;; It might suffice to patch ‘cmake/boost.cmake’ as done in the past.
(define-public mysql
(package
(name "mysql")
@@ -588,15 +604,6 @@ RDBMS systems (which are deep in functionality).")
"-DINSTALL_MYSQLTESTDIR="
"-DINSTALL_SQLBENCHDIR=")
#:phases (modify-phases %standard-phases
- (add-after
- 'unpack 'patch-boost-version
- (lambda _
- ;; Mysql wants boost-1.59.0 specifically
- (substitute* "cmake/boost.cmake"
- (("59")
- ,(match (string-split (package-version boost) #\.)
- ((_ minor . _) minor))))
- #t))
(add-after
'install 'remove-extra-binaries
(lambda* (#:key outputs #:allow-other-keys)
@@ -611,7 +618,7 @@ RDBMS systems (which are deep in functionality).")
`(("bison" ,bison)
("perl" ,perl)))
(inputs
- `(("boost" ,boost)
+ `(("boost" ,boost-for-mysql)
("libaio" ,libaio)
("ncurses" ,ncurses)
("openssl" ,openssl)
--
2.18.0
Marius Bakke wrote 7 years ago
(name . Tobias Geerinckx-Rice)(address . me@tobias.gr)(address . 32058@debbugs.gnu.org)
87wosq8h1p.fsf@fastmail.com
Tobias Geerinckx-Rice <me@tobias.gr> writes:

Toggle quote (12 lines)
> MySQL demands boost@1.59.0, and lying about it no longer works:
>
> sql/item_geofunc_internal.cc: In function ‘void handle_gis_exception(const char*)’:
> sql/item_geofunc_internal.cc:37:81: error: expected unqualified-id before ‘&’ token
> catch (const boost::geometry::detail::self_get_turn_points::self_ip_exception &)
> ^
> [...]
>
> * gnu/packages/databases.scm (boost-for-mysql): New variable.
> (mysql)[inputs]: Use that instead of the regular boost.
> [arguments]: Remove now-unnecessary ‘patch-boost-version’ phase.

Ouch. Boost is a *huge* library, but now that we no longer use the
MySQL package as the main MySQL library (e.g. for Qt), giving it a
different boost version seems reasonable to me.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlt1mLIACgkQoqBt8qM6
VPqz1Qf+MAE0jgVjrf4tv8hUg3AZ9ItD1bS8E2NjKC9l92TK0BZ3otSFf+TqN/MP
pagHHyha07AeCf7HT1Vb5GqLJLpQPdhMcQE/+WjjeEan+4g21sHnjhcvV4mtiUao
1GLF8art+PdEmsg/jz06cy+4ldUcOnCI8iJ9M/RpICPokZidCcYI+KvUUhL++OiK
eB+Anu2k1UOGvN328RZqmoV83BQQAvUSO0UMibxNIUB3TnxHtbJt2riqY9hAzXT/
NFjXXShGU2ZhZ9sZo/p/2SPx39qkzp/f9yROFV0HXK4Nx0oswjeu7lH7CpO0IWel
8eLGuvh3pjN4/3trLp+TWpYDb2hw1Q==
=BRYj
-----END PGP SIGNATURE-----

Tobias Geerinckx-Rice wrote 7 years ago
(address . 32058-done@debbugs.gnu.org)
876004sxb5.fsf@tobias.gr
Marius Bakke wrote:
Toggle quote (2 lines)
> Tobias Geerinckx-Rice <me@tobias.gr> writes:

[...]

Toggle quote (11 lines)
>> * gnu/packages/databases.scm (boost-for-mysql): New variable.
>> (mysql)[inputs]: Use that instead of the regular boost.
>> [arguments]: Remove now-unnecessary ‘patch-boost-version’
>> phase.
>
> Ouch. Boost is a *huge* library, but now that we no longer use
> the
> MySQL package as the main MySQL library (e.g. for Qt), giving it
> a
> different boost version seems reasonable to me.

Pushed in 7cbf06d8c2935abfc6c688cf3f9b99e0e5393960,
bumped in 8ecf3f7ea515d555e978bea3c1610d44345a44ee.

Thanks!

T G-R
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 32058@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 32058
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help