Bug 1083962 - Review Request: maxscale - A database-centric proxy that works with MariaDB and MySQL
Review Request: maxscale - A database-centric proxy that works with MariaDB a...
Status: NEW
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
unspecified Severity medium
: ---
: ---
Assigned To: Honza Horak
Fedora Extras Quality Assurance
:
Depends On:
Blocks: FE-NEEDSPONSOR
  Show dependency treegraph
 
Reported: 2014-04-03 06:15 EDT by Oden Eriksson
Modified: 2016-03-23 09:14 EDT (History)
4 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed:
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
hhorak: fedora‑review+


Attachments (Terms of Use)

  None (edit)
Description Oden Eriksson 2014-04-03 06:15:16 EDT
Spec URL: http://n25.nux.se/maxscale/fedora/maxscale.spec
SRPM URL: http://n25.nux.se/maxscale/fedora/maxscale-0.5.0-1.fc20.src.rpm
Description: A database-centric proxy that works with MariaDB and MySQL
Fedora Account System Username: oden
Comment 1 Oden Eriksson 2014-04-03 06:18:15 EDT
http://koji.fedoraproject.org/koji/taskinfo?taskID=6701944

It won't build on arm though, and I'm not able to fix it.

However, it builds on rhel6 with sysv and fedora with systemd using conditionals.
Comment 2 Volker Fröhlich 2014-04-03 09:05:48 EDT
Drop "%defattr(-,root,root)"; no longer necessary, as it is default.

Use %global instead of %define.

I assume you can drop "Requires: (mariadb|mysql)-libs and -embedded" and leave the dependency generation to rpmbuild.

"%if 0%{?fedora} >= 18" is outdated.

"Requires:	/sbin/ldconfig" doesn't have to be specified.

Should you add a user to run the service at?

The clean section was only necessary up to and including EL5. Same goes for buildroot and "rm -rf %{buildroot}".
Comment 3 Oden Eriksson 2014-04-03 10:15:36 EDT
Fixed now, thanks.

It has to pull in (mariadb|mysql)-libs as there's no autodeps generated on the required %{_datadir}/mysql/english/errmsg.sys file.

It does not support running as a unpriv user yet, maybe future versions will and then I fix that.
Comment 4 Honza Horak 2014-04-03 10:49:59 EDT
(In reply to Oden Eriksson from comment #3)
> Fixed now, thanks.
> 
> It has to pull in (mariadb|mysql)-libs as there's no autodeps generated on
> the required %{_datadir}/mysql/english/errmsg.sys file.

It sounds like a good time to introduce such a provide name, in case some packages need it. Say something like 'mysql(errmsg.sys)'?

> It does not support running as a unpriv user yet, maybe future versions will
> and then I fix that.

What exactly the daemon needs to have root privileges for? Wouldn't mysql user's privileges be enough? I mean the daemon would run under mysql user.
Comment 5 Oden Eriksson 2014-04-03 11:27:34 EDT
(In reply to Honza Horak from comment #4)
> (In reply to Oden Eriksson from comment #3)
> > Fixed now, thanks.
> > 
> > It has to pull in (mariadb|mysql)-libs as there's no autodeps generated on
> > the required %{_datadir}/mysql/english/errmsg.sys file.
> 
> It sounds like a good time to introduce such a provide name, in case some
> packages need it. Say something like 'mysql(errmsg.sys)'?

No please don't clutter the rpm database with that. This package is an exception. The problem is that softwares using the embedded mysql server (libmysqld.x) directly needs the errmsg.sys file, otherwise libmysqld barfs. In redhat these (except english) are also under %lang control.

> > It does not support running as a unpriv user yet, maybe future versions will
> > and then I fix that.
> 
> What exactly the daemon needs to have root privileges for? Wouldn't mysql
> user's privileges be enough? I mean the daemon would run under mysql user.

If so preferably under a new user (maxscale), but I don't really know how to do that in a good way. Using su? How to do that in systemd?
Comment 6 Honza Horak 2014-04-04 02:37:53 EDT
(In reply to Oden Eriksson from comment #5)
> (In reply to Honza Horak from comment #4)
> > (In reply to Oden Eriksson from comment #3)
> > > Fixed now, thanks.
> > > 
> > > It has to pull in (mariadb|mysql)-libs as there's no autodeps generated on
> > > the required %{_datadir}/mysql/english/errmsg.sys file.
> > 
> > It sounds like a good time to introduce such a provide name, in case some
> > packages need it. Say something like 'mysql(errmsg.sys)'?
> 
> No please don't clutter the rpm database with that. This package is an
> exception. The problem is that softwares using the embedded mysql server
> (libmysqld.x) directly needs the errmsg.sys file, otherwise libmysqld barfs.
> In redhat these (except english) are also under %lang control.

OK, so shouldn't we instead solve this in the mariadb/mysql packages, i.e. to ensure that as soon as the embedded server (libmysqld.so) is installed, there will be also the errmsg file present?

> > > It does not support running as a unpriv user yet, maybe future versions will
> > > and then I fix that.
> > 
> > What exactly the daemon needs to have root privileges for? Wouldn't mysql
> > user's privileges be enough? I mean the daemon would run under mysql user.
> 
> If so preferably under a new user (maxscale), but I don't really know how to
> do that in a good way. Using su? How to do that in systemd?

In systemd unit file it is very simple, just set the User= and Group= in the [Service] section of your unit file:
http://www.freedesktop.org/software/systemd/man/systemd.exec.html#User=

For creating the user, consult the Users and Groups section of the Guidelines:
https://fedoraproject.org/wiki/Packaging:UsersAndGroups
Comment 7 Oden Eriksson 2014-04-04 03:48:38 EDT
Yes, the dangling symlink will be resolved once (mariadb|mysql)-libs is pulled in.

Fixed now as well as permissions where needed.

(same release number)
Comment 8 Paulo Andrade 2014-04-05 12:36:26 EDT
On a quick look, I can say that I do not like when
one does not run a proper "make install" in %install,
this can easily break in subtle ways, if not in the
first spec write, whenever the package is updated.
I see the Makefile at least appears to respect
$DESTDIR for the install target.

You should run "make testall" in %check and give
good reasons if it does not work. This way both you
and reviewer will at least have a good hint the
package is functional if it pass %check.

Please post a link to the failed arm build, to
have an idea of why it fails.

I suggest renaming the patches to maxscale-xyz.patch,
and use "PatchN: %{name}-xyz.patch", but this is a
cosmetic change, just a common pattern in fedora
packages.

Instead of using CFLAGS="%{optflags} -fpie" you
should use https://fedoraproject.org/wiki/Packaging:Guidelines#PIE
that automatically does it for you; could then just need
to force CFLAGS="%{optflags} and LDFLAGS="%{__global_ldflags}"
But I am not sure if it is handled the same way for rhel.
Comment 9 Oden Eriksson 2014-04-07 02:41:38 EDT
(In reply to Paulo Andrade from comment #8)
> On a quick look, I can say that I do not like when
> one does not run a proper "make install" in %install,
> this can easily break in subtle ways, if not in the
> first spec write, whenever the package is updated.
> I see the Makefile at least appears to respect
> $DESTDIR for the install target.

I know. The problem is that libtool for some reason swaps linking order when relinking while doing make install. I'm not a autopoo or libtool guru enough to fix that. Upstream knows that autopoo should be implemented and this might happen in a future release.
 
> You should run "make testall" in %check and give
> good reasons if it does not work. This way both you
> and reviewer will at least have a good hint the
> package is functional if it pass %check.

Same here. Poor autopoo support.
 
> Please post a link to the failed arm build, to
> have an idea of why it fails.

http://koji.fedoraproject.org/koji/taskinfo?taskID=6713406
 
> I suggest renaming the patches to maxscale-xyz.patch,
> and use "PatchN: %{name}-xyz.patch", but this is a
> cosmetic change, just a common pattern in fedora
> packages.
> 
> Instead of using CFLAGS="%{optflags} -fpie" you
> should use https://fedoraproject.org/wiki/Packaging:Guidelines#PIE
> that automatically does it for you; could then just need
> to force CFLAGS="%{optflags} and LDFLAGS="%{__global_ldflags}"
> But I am not sure if it is handled the same way for rhel.

No it doesn't. Sure, I could use conditionals here but...
Comment 10 Christopher Meng 2014-04-07 05:13:37 EDT
1. LDFLAGS? Try %{__global_ldflags} macro.

2. MaxScale is an open-source, database-centric proxy that works with MariaDB and
MySQL

Dot should be at the end, right?

3. Do you manage your software with no configure system? I hope you can persuade someone to do that(CMake or autocrap, up to you :)

--------------------ARM--------------------

Error output:

skygw_utils.cc: In function 'int atomic_add(int*, int)':
skygw_utils.cc:144:15: error: impossible constraint in 'asm'
   : "memory" );

Code block:

int atomic_add(
        int *variable,
        int value)
{
	asm volatile(
		"lock; xaddl %%eax, %2;"
		:"=a" (value)
		: "a" (value), "m" (*variable)
		: "memory" );
	return value;
}

Looks like it used some special hacks to suppress the compiler? I think that volatile may bring some drastic effects to ARM platform.
Comment 11 Paulo Andrade 2014-04-07 13:33:46 EDT
(In reply to Christopher Meng from comment #10)
> 1. LDFLAGS? Try %{__global_ldflags} macro.
> 
> 2. MaxScale is an open-source, database-centric proxy that works with
> MariaDB and
> MySQL
> 
> Dot should be at the end, right?
> 
> 3. Do you manage your software with no configure system? I hope you can
> persuade someone to do that(CMake or autocrap, up to you :)
> 
> --------------------ARM--------------------
> 
> Error output:
> 
> skygw_utils.cc: In function 'int atomic_add(int*, int)':
> skygw_utils.cc:144:15: error: impossible constraint in 'asm'
>    : "memory" );
> 
> Code block:
> 
> int atomic_add(
>         int *variable,
>         int value)
> {
> 	asm volatile(
> 		"lock; xaddl %%eax, %2;"
> 		:"=a" (value)
> 		: "a" (value), "m" (*variable)
> 		: "memory" );
> 	return value;
> }
> 
> Looks like it used some special hacks to suppress the compiler? I think that
> volatile may bring some drastic effects to ARM platform.

This looks bad.
$ grep -r atomic_add maxscale-0.5.0/ | wc -l
68
$ grep -l -r atomic_add maxscale-0.5.0|wc -l
18
Used 68 times in 18 files.

The problem obviously is that it is ix86/x86_64 code.
For arm AFAIK there are two way to implement it in asm,
depending on if using arm or thumb instruction set. But
the proper solution would be using gcc __atomic_add_fetch,
untested should be to rewrite atomic_add body as:

__atomic_add_fetch(variable, value, MEMMODEL_ACQ_REL);

but this is "relatively" new, for gcc4 family it was named

__sync_fetch_and_add.

Obviously could make it conditional and only support other
architectures if using a gcc new enough that supports it.
Comment 12 Paulo Andrade 2014-04-07 14:16:50 EDT
(In reply to Oden Eriksson from comment #9)
> (In reply to Paulo Andrade from comment #8)
> > On a quick look, I can say that I do not like when
> > one does not run a proper "make install" in %install,
> > this can easily break in subtle ways, if not in the
> > first spec write, whenever the package is updated.
> > I see the Makefile at least appears to respect
> > $DESTDIR for the install target.
> 
> I know. The problem is that libtool for some reason swaps linking order when
> relinking while doing make install. I'm not a autopoo or libtool guru enough
> to fix that. Upstream knows that autopoo should be implemented and this
> might happen in a future release.

  Can you give a few more details, like an example of what
it does wrong?
  Anyway, let me do it :-)
<my test>
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.dP7HCf
+ umask 022
+ cd /home/pcpa/rpmbuild/BUILD
+ '[' /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64 '!=' / ']'
+ rm -rf /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64
++ dirname /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64
+ mkdir -p /home/pcpa/rpmbuild/BUILDROOT
+ mkdir /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64
+ cd maxscale-0.5.0
+ make install DESTDIR=/home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64
(cd server; make DESTDIR=/home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64 install)
make[1]: Entering directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server'
install -b MaxScale_template.cnf /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/etc
install ../Documentation/*.pdf /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/share/doc/maxscale
(cd core; make DESTDIR=/home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64 install)
make[2]: Entering directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server/core'
install -c -d /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin
libtool --mode=install install -c -m 755 maxscale /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin
libtool: install: install -c -m 755 maxscale /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin/maxscale
libtool --mode=install install -c -m 755 maxkeys /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin
libtool: install: install -c -m 755 maxkeys /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin/maxkeys
libtool --mode=install install -c -m 755 maxpasswd /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin
libtool: install: install -c -m 755 maxpasswd /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/bin/maxpasswd
#install -c -d /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib
#install -c -D /home/pcpa/usr/lib64/libmysqld.a /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib
#install -c -d /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/MaxScale/mysql
#install -c /home/pcpa/usr/share/mysql/errmsg.sys /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/MaxScale/mysql
make[2]: Leaving directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server/core'
(cd modules/routing; make DESTDIR=/home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64 install)
make[2]: Entering directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server/modules/routing'
install -c -d /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib/maxscale/modules
libtool --mode=install install -c libtestroute.la /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib/maxscale/modules
libtool: install: error: cannot install `libtestroute.la' to a directory not ending in /usr/lib64/maxscale/modules
make[2]: *** [install] Error 1
make[2]: Leaving directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server/modules/routing'
make[1]: *** [install] Error 2
make[1]: Leaving directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server'
make: *** [install] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.dP7HCf (%install)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.dP7HCf (%install)
</my test>

  At first, apparently it is not properly replacing $(libdir), i.e.
lib != lib64 (probably make install would work on i586).

> > You should run "make testall" in %check and give
> > good reasons if it does not work. This way both you
> > and reviewer will at least have a good hint the
> > package is functional if it pass %check.
> 
> Same here. Poor autopoo support.

  Do you mean "make testall" only works after installing
to / instead of %{buildroot}?

<my test>
+ make testall
make -C test HAVE_SRV=Y testall
make[1]: Entering directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/test'
make cleantests
make[2]: Entering directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/test'
rm -fr *~
make -C /home/pcpa/src/bazaar/tmp/maxscale/log_manager          cleantests
make: Entering an unknown directory
make: *** /home/pcpa/src/bazaar/tmp/maxscale/log_manager: No such file or directory.  Stop.
make: Leaving an unknown directory
make[2]: *** [cleantests] Error 2
make[2]: Leaving directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/test'
make[1]: *** [testall] Error 2
make[1]: Leaving directory `/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/test'
make: *** [testall] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.FbAJsu (%check)
</my test>

  Looks like something is improperly hardcoded
($HOME/src/bazaar/tmp/maxscale)

> > Please post a link to the failed arm build, to
> > have an idea of why it fails.
> 
> http://koji.fedoraproject.org/koji/taskinfo?taskID=6713406
>  
> > I suggest renaming the patches to maxscale-xyz.patch,
> > and use "PatchN: %{name}-xyz.patch", but this is a
> > cosmetic change, just a common pattern in fedora
> > packages.
> > 
> > Instead of using CFLAGS="%{optflags} -fpie" you
> > should use https://fedoraproject.org/wiki/Packaging:Guidelines#PIE
> > that automatically does it for you; could then just need
> > to force CFLAGS="%{optflags} and LDFLAGS="%{__global_ldflags}"
> > But I am not sure if it is handled the same way for rhel.
> 
> No it doesn't. Sure, I could use conditionals here but...

  My instinct says epel6 supports it :-) Do you need it this
package in rhel5?
Comment 13 Oden Eriksson 2014-04-25 05:48:19 EDT
I'm back.

There is nothing more I can do to the source code to make it conform to the requests made in this bugreport. The source surely needs good autopoo but for now there is none. It builds, it installs, it works, should be enough, no?

$ cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.5 (Santiago)

$ rpm --eval %{__global_ldflags}
%{__global_ldflags}

The intended target was RHEL6, RHEL7 and fedora+ using just one source rpm package. But, on RHEL6 I just realized it needs a newer mariadb version so I removed RHEL6 support from this package. I think when I worked with this I must have had the yum.mariadb.org mariadb packages installed. Heh.

New spec and src.rpm files up at the same location.
Comment 14 Christopher Meng 2014-04-25 05:57:26 EDT
(In reply to Oden Eriksson from comment #13)
> $ rpm --eval %{__global_ldflags}
> %{__global_ldflags}

Remember using this:

%{?__global_ldflags}

EL systems don't contain this macro(don't ask me why).
Comment 15 Paulo Andrade 2014-05-02 12:02:48 EDT
(In reply to Oden Eriksson from comment #13)
> I'm back.

  Sorry for the delay, did not reply earlier because I did want
to try to help and work a bit on it to help it getting fixed...

> There is nothing more I can do to the source code to make it conform to the
> requests made in this bugreport. The source surely needs good autopoo but
> for now there is none. It builds, it installs, it works, should be enough,
> no?

  I cannot confirm it works, %check (make testall) does not work
either :-)

  I started patching it a bit to get "make install" to work, but
it really is quite broken... starting with a simple:

%if %__isa_bits == 64
    sed -i 's|\(libdir = \).*|\1%{_libdir}|' makefile.inc
%endif

I got past the first error I noticed in #12, but then, in
make install there are bad dependencies, so I started running
make install in subdirectories, at first "log_manager" and
"query_classifier", but the problem is that it fails to
link because it installs query_classifier stuff in
/home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib64/maxscale/modules/
instead of
home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib64/
and then fails to link; sample error message from where I stopped:

---%<---
libtool: install: (cd /home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/server/modules/routing/readwritesplit; /bin/sh /usr/bin/libtool  --tag CC --mode=relink cc -c -fPIC -I/usr/include -I../../include -I../../../include -I/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/log_manager -I/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/utils -I/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/query_classifier -I/usr/include/mysql/ -I/usr/include/mysql/private/ -I/usr/include/mysql/extra/ -Wall -g -Wall -fPIC -shared -L/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/log_manager -L/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/query_classifier -L/usr/lib64 -rpath /usr/lib64/maxscale/modules -avoid-version -module -o libreadwritesplit.la readwritesplit.o /home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/utils/skygw_utils.o -lssl -pthread -L/usr/lib64/mysql -lmysqld /home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/query_classifier/libquery_classifier.la /home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/log_manager/liblog_manager.la -inst-prefix-dir /home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64)

*** Warning: Linking the shared library libreadwritesplit.la against the non-libtool
*** objects  readwritesplit.o /home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/utils/skygw_utils.o is not portable!
libtool: relink: gcc -shared  -fPIC -DPIC   readwritesplit.o /home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/utils/skygw_utils.o   -L/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/log_manager -L/home/pcpa/rpmbuild/BUILD/maxscale-0.5.0/query_classifier -L/usr/lib64 -lssl -L/usr/lib64/mysql -L/home/pcpa/rpmbuild/BUILDROOT/maxscale-0.5.0-1.fc21.x86_64/usr/lib64 -lquery_classifier -lpthread -lmysqld -llog_manager  -pthread   -pthread -Wl,-soname -Wl,libreadwritesplit.so -o .libs/libreadwritesplit.so
/usr/bin/ld: cannot find -lquery_classifier
collect2: error: ld returned 1 exit status
---%<---

BTW, I also made a this quick/hacked patch to get a bit further in
%install:
---%<---
diff -up maxscale-0.5.0/query_classifier/query_classifier.cc.orig maxscale-0.5.0/query_classifier/query_classifier.cc
--- maxscale-0.5.0/query_classifier/query_classifier.cc.orig	2014-05-02 12:16:02.583431844 -0300
+++ maxscale-0.5.0/query_classifier/query_classifier.cc	2014-05-02 12:19:05.693438856 -0300
@@ -35,21 +35,19 @@
 #include "../utils/skygw_debug.h"
 #include <log_manager.h>
 
-#include <mysql.h>
-#include <my_sys.h>
-#include <my_global.h>
-#include <my_dbug.h>
-#include <my_base.h>
-#include <sql_list.h>
-#include <mysqld_error.h>
-#include <sql_class.h>
-#include <sql_lex.h>
-#include <embedded_priv.h>
-#include <sql_class.h>
-#include <sql_lex.h>
-#include <sql_parse.h>
-#include <errmsg.h>
-#include <client_settings.h>
+#include <mysql/mysql.h>
+#include <mysql/my_sys.h>
+#include <mysql/my_global.h>
+#include <mysql/my_dbug.h>
+#include <mysql/private/my_base.h>
+#include <mysql/private/sql_list.h>
+#include <mysql/mysqld_error.h>
+#include <mysql/private/sql_class.h>
+#include <mysql/private/sql_lex.h>
+#include <mysql/private/embedded_priv.h>
+#include <mysql/private/sql_parse.h>
+#include <mysql/errmsg.h>
+#include <mysql/private/client_settings.h>
 
 #include <item_func.h>
 
---%<---

as well as a quick/hacked patch to build_gateway.inc, i.e.

sed -i 's|$(HOME)||g' build_gateway.inc
sed -i "s|\(ROOT_PATH := \).*|\1$PWD|" build_gateway.inc
%if %__isa_bits == 32
    sed -i 's|lib64|lib|g' build_gateway.inc
%endif

> $ cat /etc/redhat-release 
> Red Hat Enterprise Linux Server release 6.5 (Santiago)
> 
> $ rpm --eval %{__global_ldflags}
> %{__global_ldflags}
> 
> The intended target was RHEL6, RHEL7 and fedora+ using just one source rpm
> package. But, on RHEL6 I just realized it needs a newer mariadb version so I
> removed RHEL6 support from this package. I think when I worked with this I
> must have had the yum.mariadb.org mariadb packages installed. Heh.
> 
> New spec and src.rpm files up at the same location.

You should bump the release when asking for a new review.

For the moment, I am sorry but I cannot give a positive review if
"make install" and "make testall" are not patched to work.
Comment 16 Oden Eriksson 2014-06-18 04:14:04 EDT
Back. Sorry for the delay.

I will try to solve that make install problem.

However:

%check
make testall

Wouldn't be a problem but requires quite a few steps that one needs to do manually as of the README file:

********************************************************

\section Testing  Running MaxScale testsuite

To run "make testall" you need to have three mysqld servers running
on localhost:

* a master on port 3000, with server_id=2
* a slave on port 3001, server_id doesn't matter
* a slave on port 2002, server_id doesn't matter

On the master full privileges on the databases "test" and "FOO"
are needed, on the saves SELECT permissions on test.* should
be sufficient.

You can use different port numbers but you'll have to change
the server settings at the end of server/test/MaxScale_test.cnf then.

You also always need to edit the top level test.inc file,
this file contains appropriate default values for the 
test setup as described above, these are only given as
comments though ...

You can then run the full testsuite using 

  make testall

in the top level directory. After testing has finished you
can find a full testlog in test/test_maxscale.log

You may also find additional information in the following
component specific logs:

  utils/test/testutils.log
  query_classifier/test/testqclass.log
  server/test/MaxScale/log/skygw_msg1.log
  server/test/MaxScale/log/skygw_err1.log
  server/test/MaxScale/log/skygw_trace1.log
  server/test/MaxScale/log/skygw_debug1.log
  server/test/testserver.log
  server/core/test/testhash.log
  test/test_maxscale.log

********************************************************
Comment 18 Paulo Andrade 2014-11-26 08:10:32 EST
Sorry for the delay looking into it again.
It is failing to build. Note that reviews usually should be done on rawhide,
so, I suppose you tested it on fedora 20.

$ fedora-review -b 1083962
INFO: Processing bugzilla bug: 1083962
INFO: Getting .spec and .srpm Urls from : 1083962
INFO:   --> SRPM url: http://nux.se/maxscale/maxscale-1.0.1-0.0.be$ fedora-review -b 1083962
INFO: Processing bugzilla bug: 1083962
INFO: Getting .spec and .srpm Urls from : 1083962
INFO:   --> SRPM url: http://nux.se/maxscale/maxscale-1.0.1-0.0.beta.1.fc20.src.rpm
INFO:   --> Spec url: http://nux.se/maxscale/maxscale.spec
INFO: Using review directory: /home/pcpa/rpmbuild/1083962-maxscale
INFO: Downloading .spec and .srpm files
INFO: No upstream for (Source2): maxscale.logrotate.systemd
INFO: No upstream for (Source3): maxscale.profile.d
INFO: Downloading (Source0): https://downloads.mariadb.com/files/SkySQL/MaxScale/maxscale-1.0.1-beta/maxscale.src.1.0.1-beta.tar.gz
INFO: No upstream for (Source1): maxscale.service
INFO: No upstream for (Source4): maxscale.sysconfig
INFO: No upstream for (Source5): maxscale.tmpfiles.d
INFO: Running checks and generating report
ERROR: Exception(/home/pcpa/rpmbuild/1083962-maxscale/srpm/maxscale-1.0.1-0.0.beta.1.fc20.src.rpm) Config(fedora-rawhide-x86_64) 4 minutes 41 seconds
INFO: Results and/or logs in: /home/pcpa/rpmbuild/1083962-maxscale/results
ERROR: Command failed. See logs for output.
ERROR: 'mock build failed, see /home/pcpa/rpmbuild/1083962-maxscale/results/build.log'ta.1.fc20.src.rpm
INFO:   --> Spec url: http://nux.se/maxscale/maxscale.spec
INFO: Using review directory: /home/pcpa/rpmbuild/1083962-maxscale
INFO: Downloading .spec and .srpm files
INFO: No upstream for (Source2): maxscale.logrotate.systemd
INFO: No upstream for (Source3): maxscale.profile.d
INFO: Downloading (Source0): https://downloads.mariadb.com/files/SkySQL/MaxScale/maxscale-1.0.1-beta/maxscale.src.1.0.1-beta.tar.gz
INFO: No upstream for (Source1): maxscale.service
INFO: No upstream for (Source4): maxscale.sysconfig
INFO: No upstream for (Source5): maxscale.tmpfiles.d
INFO: Running checks and generating report
ERROR: Exception(/home/pcpa/rpmbuild/1083962-maxscale/srpm/maxscale-1.0.1-0.0.beta.1.fc20.src.rpm) Config(fedora-rawhide-x86_64) 4 minutes 41 seconds
INFO: Results and/or logs in: /home/pcpa/rpmbuild/1083962-maxscale/results
ERROR: Command failed. See logs for output.
ERROR: 'mock build failed, see /home/pcpa/rpmbuild/1083962-maxscale/results/build.log'

The build log is:
---%<---
Mock Version: 1.2.2
ENTER do(['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/maxscale.spec'], user='mockbuild'timeout=0uid=1000gid=986chrootPath='/var/lib/mock/fedora-rawhide-x86_64/root'env={'PROMPT_COMMAND': 'printf "\x1b]0;<mock-chroot>\x07<mock-chroot>"', 'CCACHE_UMASK': '002', 'HOSTNAME': 'mock', 'LANG': 'en_US.UTF-8', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'SHELL': '/bin/bash', 'CCACHE_DIR': '/tmp/ccache', 'HOME': '/builddir', 'TERM': 'vt100'}logger=<mockbuild.trace_decorator.getLog object at 0x7f1de1875518>shell=FalseprintOutput=False)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/maxscale.spec'] with env {'PROMPT_COMMAND': 'printf "\x1b]0;<mock-chroot>\x07<mock-chroot>"', 'CCACHE_UMASK': '002', 'HOSTNAME': 'mock', 'LANG': 'en_US.UTF-8', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'SHELL': '/bin/bash', 'CCACHE_DIR': '/tmp/ccache', 'HOME': '/builddir', 'TERM': 'vt100'}
Building target platforms: x86_64
Building for target x86_64
Wrote: /builddir/build/SRPMS/maxscale-1.0.1-0.0.beta.1.fc22.src.rpm
Child return code was: 0
LEAVE do --> 

ENTER do(['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps  /builddir/build/SPECS/maxscale.spec '], user='mockbuild'timeout=0uid=1000gid=986chrootPath='/var/lib/mock/fedora-rawhide-x86_64/root'env={'PROMPT_COMMAND': 'printf "\x1b]0;<mock-chroot>\x07<mock-chroot>"', 'CCACHE_UMASK': '002', 'HOSTNAME': 'mock', 'LANG': 'en_US.UTF-8', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'SHELL': '/bin/bash', 'CCACHE_DIR': '/tmp/ccache', 'HOME': '/builddir', 'TERM': 'vt100'}logger=<mockbuild.trace_decorator.getLog object at 0x7f1de1875518>shell=FalseprintOutput=False)
Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target x86_64 --nodeps  /builddir/build/SPECS/maxscale.spec '] with env {'PROMPT_COMMAND': 'printf "\x1b]0;<mock-chroot>\x07<mock-chroot>"', 'CCACHE_UMASK': '002', 'HOSTNAME': 'mock', 'LANG': 'en_US.UTF-8', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'SHELL': '/bin/bash', 'CCACHE_DIR': '/tmp/ccache', 'HOME': '/builddir', 'TERM': 'vt100'}
Building target platforms: x86_64
Building for target x86_64
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.qKP9hn
+ umask 022
+ cd /builddir/build/BUILD
+ cd /builddir/build/BUILD
+ rm -rf maxscale-1.0.1-beta
+ /usr/bin/gzip -dc /builddir/build/SOURCES/maxscale.src.1.0.1-beta.tar.gz
+ /usr/bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd maxscale-1.0.1-beta
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
Patch #0 (maxscale-1.0.1-beta-pidfile.diff):
+ echo 'Patch #0 (maxscale-1.0.1-beta-pidfile.diff):'
+ /usr/bin/cat /builddir/build/SOURCES/maxscale-1.0.1-beta-pidfile.diff
+ /usr/bin/patch -p0 --fuzz=0
patching file server/core/gateway.c
+ perl -pi -e 's|-Wall -fPIC|-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -fPIC|g' CMakeLists.txt
+ find -type f -name '*.c'
+ xargs perl -pi -e 's|/usr/local/skysql/MaxScale|/var/log/maxscale|g'
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.o5cZiV
+ umask 022
+ cd /builddir/build/BUILD
+ cd maxscale-1.0.1-beta
+ CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
+ export CFLAGS
+ CXXFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
+ export CXXFLAGS
+ FFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
+ export FFLAGS
+ FCFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -I/usr/lib64/gfortran/modules'
+ export FCFLAGS
+ LDFLAGS='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld'
+ export LDFLAGS
+ /usr/bin/cmake -DCMAKE_C_FLAGS_RELEASE:STRING=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEASE:STRING=-DNDEBUG -DCMAKE_Fortran_FLAGS_RELEASE:STRING=-DNDEBUG -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib64 -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DLIB_SUFFIX=64 -DBUILD_SHARED_LIBS:BOOL=ON -DSTATIC_EMBEDDED=false -DEMBEDDED_LIB=/usr/lib64/mysql -DINSTALL_DIR=/builddir/build/BUILDROOT/maxscale-1.0.1-0.0.beta.1.fc22.x86_64/var/lib/maxscale -DCMAKE_INSTALL_PREFIX=/builddir/build/BUILDROOT/maxscale-1.0.1-0.0.beta.1.fc22.x86_64/var/lib/maxscale -DINSTALL_SYSTEM_FILES=0 -DCMAKE_SKIP_INSTALL_RPATH=1 -DCMAKE_SKIP_RPATH=1
-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/lib64/ccache/cc
-- Check for working C compiler: /usr/lib64/ccache/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/lib64/ccache/c++
-- Check for working CXX compiler: /usr/lib64/ccache/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using MySQL headers found at: 
CMake Error at macros.cmake:111 (message):
  Fatal Error: The errmsg.sys file was not found, please define the path to
  it by using -DERRMSG=<path>
Call Stack (most recent call first):
  CMakeLists.txt:14 (check_dirs)
-- Configuring incomplete, errors occurred!
See also "/builddir/build/BUILD/maxscale-1.0.1-beta/CMakeFiles/CMakeOutput.log".
RPM build errors:
error: Bad exit status from /var/tmp/rpm-tmp.o5cZiV (%build)
    Bad exit status from /var/tmp/rpm-tmp.o5cZiV (%build)
Child return code was: 1
EXCEPTION: Command failed. See logs for output.
 # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps  /builddir/build/SPECS/maxscale.spec 
Traceback (most recent call last):
  File "/usr/lib/python3.4/site-packages/mockbuild/trace_decorator.py", line 84, in trace
    result = func(*args, **kw)
  File "/usr/lib/python3.4/site-packages/mockbuild/util.py", line 481, in do
    raise mockbuild.exception.Error("Command failed. See logs for output.\n # %s" % (command,), child.returncode)
mockbuild.exception.Error: Command failed. See logs for output.
 # bash --login -c /usr/bin/rpmbuild -bb --target x86_64 --nodeps  /builddir/build/SPECS/maxscale.spec 
LEAVE do --> EXCEPTION RAISED
---%<---
Comment 19 Honza Horak 2015-09-21 04:16:18 EDT
Heya, I've prepared a reworked maxscale package, basically reworked Oden's spec.. Feel free to look at it:
http://hhorak.fedorapeople.org/maxscale

Builds in copr:
https://copr.fedoraproject.org/coprs/hhorak/MaxScale/

It has currently still some issues:
* it uses rpath to link with modules under /usr/lib64/maxscale
* the test-suite is not running
Comment 20 Oden Eriksson 2016-02-29 09:04:00 EST
Heya to you too :-)

Years later, based on http://hhorak.fedorapeople.org/maxscale and the Mageia package maxscale-1.3.0-3.mga6.src.rpm I have a new candidate up on my site here:

http://nux.se/maxscale/
http://nux.se/maxscale/maxscale-1.3.0-1.el7.centos.src.rpm
http://nux.se/maxscale/maxscale.spec

Please test this one.

Cheers.
Comment 21 Honza Horak 2016-03-01 09:08:07 EST
Does it build fine for you in koji/mock? Because it does not for me:

In rawhide I see this error: "Could not find liblzma"

In f23 I see this error instead: "/builddir/build/BUILD/MaxScale-1.3.0/server/include/maxscale_pcre2.h:26:19: fatal error: pcre2.h: No such file or directory
"
Comment 22 Oden Eriksson 2016-03-01 13:08:02 EST
No, I didn't try to build it until now. I was unable to install rawhide so used f23, but I get:

cd /home/oden/RPM/BUILD/MaxScale-1.3.0/server/core && /usr/bin/cmake -E cmake_link_script CMakeFiles/maxkeys.dir/link.txt --verbose=1
/usr/bin/c++   -Wall -Wno-unused-variable -Wno-unused-function -fPIC -ggdb   -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld CMakeFiles/maxkeys.dir/maxkeys.c.o CMakeFiles/maxkeys.dir/spinlock.c.o CMakeFiles/maxkeys.dir/secrets.c.o CMakeFiles/maxkeys.dir/utils.c.o CMakeFiles/maxkeys.dir/gwdirs.c.o CMakeFiles/maxkeys.dir/random_jkiss.c.o CMakeFiles/maxkeys.dir/__/__/log_manager/log_manager.cc.o  -o maxkeys -rdynamic ../../utils/libutils.a -lpthread -lcrypt -lcrypto ../../pcre2/libpcre2-8.a -lstdc++ -Wl,-rpath,:::::::::::::::::::: 
/usr/bin/ld: ../../pcre2/libpcre2-8.a(pcre2_compile.c.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
../../pcre2/libpcre2-8.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
server/core/CMakeFiles/maxkeys.dir/build.make:255: recipe for target 'server/core/maxkeys' failed


I added "BuildRequires: xz-devel" to pull in liblzma devel.
Comment 23 Oden Eriksson 2016-03-03 02:49:05 EST
FYI: https://jira.mariadb.org/browse/MXS-597
Comment 24 Oden Eriksson 2016-03-03 02:55:53 EST
That -fPIC problem is fixed with:

https://github.com/mariadb-corporation/MaxScale/commit/c8253cc7676aca3a748309b33bb877bb291b11aa

The package builds fine in rawhide now, but I prefer to wait until they fix MXS-597.
Comment 25 Oden Eriksson 2016-03-08 04:24:41 EST
Okidoki. New package:

http://nux.se/maxscale/maxscale.spec
http://nux.se/maxscale/maxscale-1.3.0-2.fc24.src.rpm

* Tue 08 Mar 2016 01:00:00 PM CET Oden Eriksson <oe@nux.se> 1.3.0-2
- sync with maxscale-1.3.0-5.mga6.src.rpm:
 - build against system pcre2 libs



$ rpm -qp --requires /home/oden/RPM/RPMS/x86_64/maxscale-1.3.0-2.fc24.x86_64.rpm | grep pcre
libpcre.so.1()(64bit)
libpcre2-8.so.0()(64bit)
Comment 26 Honza Horak 2016-03-09 15:42:58 EST
There are only couple of issues, but it looks good generally.

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
- Package does not contain duplicates in %files.
  Note: warning: File listed twice: /usr/share/maxscale/COPYRIGHT
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#DuplicateFiles
- All build dependencies are listed in BuildRequires, except for any that
  are listed in the exceptions section of Packaging Guidelines.
  Note: These BR are not needed: redhat-rpm-config
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2
- ldconfig called in %post and %postun if required.
  Note: /sbin/ldconfig not called in maxscale
  See: http://fedoraproject.org/wiki/Packaging/Guidelines#Shared_Libraries
- Package must own all directories that it creates.
  Note: Directories without known owners: /etc/logrotate.d,
  /var/lib/maxscale/etc


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[!]: Rpath absent or only used for internal libs.
     Note: See rpmlint output

RPATH is actually defined in binaries and libraries (plugins)

[x]: Header files in -devel subpackage, if present.
[x]: Package does not contain any libtool archives (.la)

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "GPL (v2 or later) (with incorrect FSF address)", "GPL (v2 or
     later)", "LGPL (v2.1)", "Unknown or generated". 41 files have unknown
     license. Detailed output of licensecheck in /home/hhorak/tmp/maxscale-
     review/1083962-maxscale/licensecheck.txt

This combination is valid.

[x]: License file installed when any subpackage combination is installed.
[!]: Package requires other packages for directories it uses.
     Note: No known owner of /var/lib/maxscale/etc

This should be fixed.

[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /etc/logrotate.d,
     /var/lib/maxscale/etc

This should be fixed.

[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.

It would be better to remove bundled pcre2 from source to be sure it is not used during build.

[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[x]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: No %config files under /usr.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Perl:
[x]: Package contains the mandatory BuildRequires and Requires:.
     Note: Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`";
     echo $version)) missing?

===== SHOULD items =====

Generic:
[x]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[-]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     maxscale-debuginfo
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[!]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[?]: Package should compile and build into binary rpms on all supported
     architectures.
[!]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Files in /run, var/run and /var/lock uses tmpfiles.d when appropriate
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Uses parallel make %{?_smp_mflags} macro.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: maxscale-1.3.0-2.fc23.x86_64.rpm
          maxscale-debuginfo-1.3.0-2.fc23.x86_64.rpm
          maxscale-1.3.0-2.fc23.src.rpm
maxscale.x86_64: E: explicit-lib-dependency mariadb-libs
maxscale.x86_64: W: spelling-error Summary(en_US) centric -> eccentric, centrist, concentric
maxscale.x86_64: W: spelling-error %description -l en_US centric -> eccentric, centrist, concentric
maxscale.x86_64: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
maxscale.x86_64: W: spelling-error %description -l en_US customisation -> customization, accusation
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libmaxinfo.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtestfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libdebugcli.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libhintfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxscale ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: missing-call-to-setgroups-before-setuid /usr/bin/maxscale
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libmysqlmon.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libschemarouter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtee.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/liblog_manager.so.1.0.0 ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libgaleramon.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxbinlogcheck ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxpasswd ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libreadwritesplit.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libshardrouter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxkeys ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libHTTPD.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libMySQLBackend.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libnamedserverfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libqlafilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libreadconnroute.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libbinlogrouter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtopfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtelnetd.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libMySQLClient.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libndbclustermon.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libregexfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libdbfwfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/libquery_classifier.so.1.0.0 ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libmaxscaled.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxadmin ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libcli.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: W: dangling-symlink /var/lib/maxscale/errmsg.sys /usr/share/mariadb/english/errmsg.sys
maxscale.x86_64: E: postin-without-ldconfig /usr/lib64/liblog_manager.so.1.0.0
maxscale.x86_64: E: postun-without-ldconfig /usr/lib64/liblog_manager.so.1.0.0
maxscale.x86_64: W: non-standard-uid /var/run/maxscale maxscale
maxscale.x86_64: W: non-standard-gid /var/run/maxscale maxscale
maxscale.x86_64: E: dir-or-file-in-var-run /var/run/maxscale
maxscale.x86_64: W: non-standard-uid /var/lib/maxscale/etc/.secrets maxscale
maxscale.x86_64: W: non-standard-gid /var/lib/maxscale/etc/.secrets maxscale
maxscale.x86_64: W: hidden-file-or-dir /var/lib/maxscale/etc/.secrets
maxscale.x86_64: E: non-readable /var/lib/maxscale/etc/.secrets 400
maxscale.x86_64: E: zero-length /var/lib/maxscale/etc/.secrets
maxscale.x86_64: E: non-executable-script /usr/share/maxscale/plugins/nagios/check_maxscale_monitors.pl 644 /usr/bin/perl
maxscale.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblog_manager.so
maxscale.x86_64: W: non-standard-uid /var/lib/maxscale maxscale
maxscale.x86_64: W: non-standard-gid /var/lib/maxscale maxscale
maxscale.x86_64: E: non-standard-dir-perm /var/lib/maxscale 750
maxscale.x86_64: W: devel-file-in-non-devel-package /usr/lib64/libquery_classifier.so
maxscale.x86_64: E: non-executable-script /usr/share/maxscale/plugins/nagios/check_maxscale_threads.pl 644 /usr/bin/perl
maxscale.x86_64: W: non-standard-uid /var/log/maxscale maxscale
maxscale.x86_64: W: non-standard-gid /var/log/maxscale maxscale
maxscale.x86_64: E: non-standard-dir-perm /var/log/maxscale 750
maxscale.x86_64: E: postin-without-ldconfig /usr/lib64/libquery_classifier.so.1.0.0
maxscale.x86_64: E: postun-without-ldconfig /usr/lib64/libquery_classifier.so.1.0.0
maxscale.x86_64: W: non-standard-gid /etc/maxscale.cnf maxscale
maxscale.x86_64: E: non-readable /etc/maxscale.cnf 640
maxscale.x86_64: E: non-executable-script /usr/share/maxscale/plugins/nagios/check_maxscale_resources.pl 644 /usr/bin/perl
maxscale.x86_64: W: no-manual-page-for-binary maxkeys
maxscale.x86_64: W: no-manual-page-for-binary maxpasswd
maxscale.x86_64: W: no-manual-page-for-binary maxbinlogcheck
maxscale.x86_64: W: no-manual-page-for-binary maxadmin
maxscale.x86_64: W: percent-in-%post
maxscale.x86_64: W: dangerous-command-in-%post chmod
maxscale.src: W: spelling-error Summary(en_US) centric -> eccentric, centrist, concentric
maxscale.src: W: spelling-error %description -l en_US centric -> eccentric, centrist, concentric
maxscale.src: W: spelling-error %description -l en_US pluggable -> plug gable, plug-gable, plugged
maxscale.src: W: spelling-error %description -l en_US customisation -> customization, accusation
maxscale.src:104: W: macro-in-comment %check
maxscale.src:107: W: make-check-outside-check-section # make testcore || :
3 packages and 0 specfiles checked; 46 errors, 29 warnings.




Rpmlint (debuginfo)
-------------------
Checking: maxscale-debuginfo-1.3.0-2.fc23.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
maxscale.x86_64: E: explicit-lib-dependency mariadb-libs
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 my_charset_bin
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mxs_log_tls
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 PSI_server
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 unknown_sqlstate
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 system_charset_info
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 bool_typelib
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 embedded_methods
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mxs_log_enabled_priorities
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 Sys_autocommit_ptr
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 sql_command_flags
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mxs_log_session_count
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 set_mysql_error
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mysql_options
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 THD::reset_for_next_command()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 free_old_query
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mysql_init
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 is_log_table_write_query(enum_sql_command)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 THD::end_statement()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 my_strdup
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 gwbuf_get_buffer_object_data
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 check_embedded_connection
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 find_type(st_typelib const*, char const*, unsigned int, bool)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 is_update_query(enum_sql_command)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mysql_close
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 Yacc_state::~Yacc_state()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 my_strndup
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 THD::clear_data_list()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 init_embedded_mysql
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 parse_sql(THD*, Parser_state*, Object_creation_ctx*, bool)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mysql_error
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 my_free
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 THD::store_globals()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 Lex_input_stream::init(THD*, char*, unsigned int)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 gwbuf_add_buffer_object
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 replace_quoted
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 Set_signal_information::clear()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mysql_errno
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 replace_literal
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 mxs_log_message
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 create_embedded_thd
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/libquery_classifier.so.1.0.0 alloc_query(THD*, char const*, unsigned int)
maxscale.x86_64: W: unused-direct-shlib-dependency /usr/lib64/libquery_classifier.so.1.0.0 /lib64/libm.so.6
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/libquery_classifier.so.1.0.0 ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libreadwritesplit.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libMySQLClient.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxadmin ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxbinlogcheck ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtopfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libHTTPD.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libregexfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxscale ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: missing-call-to-setgroups-before-setuid /usr/bin/maxscale
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxkeys ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libMySQLBackend.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libhintfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libqlafilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libshardrouter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libgaleramon.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libreadconnroute.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libcli.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_thread_done(skygw_thread_st*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 simple_mutex_lock
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 release_lock
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_file_init(char*, char*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_message_done
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 mlist_init(mlist_st*, mlist_cursor_st**, char*, void (*)(void*), int)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_thread_start(skygw_thread_st*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 mlist_done(mlist_st*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_file_alloc(char*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_file_close(skygw_file_st*, bool)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_message_send
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_thread_must_exit
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 snprint_timestamp_hp(char*, unsigned long)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 get_decimal_len
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 snprint_timestamp(char*, unsigned long)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_file_free(skygw_file_st*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_message_init
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 atomic_add
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_file_write(skygw_file_st*, void*, unsigned long, bool)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 simple_mutex_done
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 get_timestamp_len_hp()
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 simple_mutex_unlock
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 simple_mutex_init
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 mlist_add_data_nomutex(mlist_st*, void*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_thread_init(char const*, void* (*)(void*), void*)
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 acquire_lock
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_thread_get_data
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_message_wait
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 skygw_thread_set_exitflag
maxscale.x86_64: W: undefined-non-weak-symbol /usr/lib64/liblog_manager.so.1.0.0 get_timestamp_len()
maxscale.x86_64: W: unused-direct-shlib-dependency /usr/lib64/liblog_manager.so.1.0.0 /lib64/libaio.so.1
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/liblog_manager.so.1.0.0 ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtelnetd.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libmysqlmon.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/maxpasswd ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtestfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libtee.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libdebugcli.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libndbclustermon.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libschemarouter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libmaxinfo.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libbinlogrouter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libnamedserverfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libmaxscaled.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/maxscale/libdbfwfilter.so ['', '/usr/lib64/maxscale']
maxscale.x86_64: E: postin-without-ldconfig /usr/lib64/libquery_classifier.so.1.0.0
maxscale.x86_64: E: postun-without-ldconfig /usr/lib64/libquery_classifier.so.1.0.0
maxscale.x86_64: W: devel-file-in-non-devel-package /usr/lib64/libquery_classifier.so
maxscale.x86_64: W: non-standard-uid /var/lib/maxscale maxscale
maxscale.x86_64: W: non-standard-gid /var/lib/maxscale maxscale
maxscale.x86_64: E: non-standard-dir-perm /var/lib/maxscale 750
maxscale.x86_64: W: non-standard-uid /var/lib/maxscale/etc/.secrets maxscale
maxscale.x86_64: W: non-standard-gid /var/lib/maxscale/etc/.secrets maxscale
maxscale.x86_64: W: hidden-file-or-dir /var/lib/maxscale/etc/.secrets
maxscale.x86_64: E: non-readable /var/lib/maxscale/etc/.secrets 400
maxscale.x86_64: E: zero-length /var/lib/maxscale/etc/.secrets
maxscale.x86_64: W: devel-file-in-non-devel-package /usr/lib64/liblog_manager.so
maxscale.x86_64: W: dangling-symlink /var/lib/maxscale/errmsg.sys /usr/share/mariadb/english/errmsg.sys
maxscale.x86_64: E: non-executable-script /usr/share/maxscale/plugins/nagios/check_maxscale_resources.pl 644 /usr/bin/perl
maxscale.x86_64: E: postin-without-ldconfig /usr/lib64/liblog_manager.so.1.0.0
maxscale.x86_64: E: postun-without-ldconfig /usr/lib64/liblog_manager.so.1.0.0
maxscale.x86_64: W: non-standard-uid /var/log/maxscale maxscale
maxscale.x86_64: W: non-standard-gid /var/log/maxscale maxscale
maxscale.x86_64: E: non-standard-dir-perm /var/log/maxscale 750
maxscale.x86_64: W: non-standard-gid /etc/maxscale.cnf maxscale
maxscale.x86_64: E: non-readable /etc/maxscale.cnf 640
maxscale.x86_64: E: non-executable-script /usr/share/maxscale/plugins/nagios/check_maxscale_monitors.pl 644 /usr/bin/perl
maxscale.x86_64: W: non-standard-uid /var/run/maxscale maxscale
maxscale.x86_64: W: non-standard-gid /var/run/maxscale maxscale
maxscale.x86_64: E: dir-or-file-in-var-run /var/run/maxscale
maxscale.x86_64: E: non-executable-script /usr/share/maxscale/plugins/nagios/check_maxscale_threads.pl 644 /usr/bin/perl
maxscale.x86_64: W: no-manual-page-for-binary maxkeys
maxscale.x86_64: W: no-manual-page-for-binary maxpasswd
maxscale.x86_64: W: no-manual-page-for-binary maxbinlogcheck
maxscale.x86_64: W: no-manual-page-for-binary maxadmin
maxscale.x86_64: W: percent-in-%post
maxscale.x86_64: W: dangerous-command-in-%post chmod
2 packages and 0 specfiles checked; 46 errors, 92 warnings.



Requires
--------
maxscale-debuginfo (rpmlib, GLIBC filtered):

maxscale (rpmlib, GLIBC filtered):
    /bin/sh
    config(maxscale)
    ld-linux-x86-64.so.2()(64bit)
    libaio.so.1()(64bit)
    libc.so.6()(64bit)
    libcrypt.so.1()(64bit)
    libcrypto.so.10()(64bit)
    libcrypto.so.10(libcrypto.so.10)(64bit)
    libcurl.so.4()(64bit)
    libdl.so.2()(64bit)
    libedit.so.0()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    liblog_manager.so.1.0.0()(64bit)
    libm.so.6()(64bit)
    libmysqld.so.18()(64bit)
    libpcre.so.1()(64bit)
    libpcre2-8.so.0()(64bit)
    libpthread.so.0()(64bit)
    libquery_classifier.so.1.0.0()(64bit)
    librt.so.1()(64bit)
    libssl.so.10()(64bit)
    libssl.so.10(libssl.so.10)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libz.so.1()(64bit)
    mariadb-errmsg
    mariadb-libs
    rtld(GNU_HASH)
    sh-utils
    shadow-utils
    systemd



Provides
--------
maxscale-debuginfo:
    maxscale-debuginfo
    maxscale-debuginfo(x86-64)

maxscale:
    config(maxscale)
    libHTTPD.so()(64bit)
    libMySQLBackend.so()(64bit)
    libMySQLClient.so()(64bit)
    libbinlogrouter.so()(64bit)
    libcli.so()(64bit)
    libdbfwfilter.so()(64bit)
    libdebugcli.so()(64bit)
    libgaleramon.so()(64bit)
    libhintfilter.so()(64bit)
    liblog_manager.so.1.0.0()(64bit)
    libmaxinfo.so()(64bit)
    libmaxscaled.so()(64bit)
    libmysqlmon.so()(64bit)
    libnamedserverfilter.so()(64bit)
    libndbclustermon.so()(64bit)
    libqlafilter.so()(64bit)
    libquery_classifier.so.1.0.0()(64bit)
    libreadconnroute.so()(64bit)
    libreadwritesplit.so()(64bit)
    libregexfilter.so()(64bit)
    libschemarouter.so()(64bit)
    libshardrouter.so()(64bit)
    libtee.so()(64bit)
    libtelnetd.so()(64bit)
    libtestfilter.so()(64bit)
    libtopfilter.so()(64bit)
    maxscale
    maxscale(x86-64)



Unversioned so-files
--------------------
maxscale: /usr/lib64/liblog_manager.so
maxscale: /usr/lib64/libquery_classifier.so
maxscale: /usr/lib64/maxscale/libHTTPD.so
maxscale: /usr/lib64/maxscale/libMySQLBackend.so
maxscale: /usr/lib64/maxscale/libMySQLClient.so
maxscale: /usr/lib64/maxscale/libbinlogrouter.so
maxscale: /usr/lib64/maxscale/libcli.so
maxscale: /usr/lib64/maxscale/libdbfwfilter.so
maxscale: /usr/lib64/maxscale/libdebugcli.so
maxscale: /usr/lib64/maxscale/libgaleramon.so
maxscale: /usr/lib64/maxscale/libhintfilter.so
maxscale: /usr/lib64/maxscale/libmaxinfo.so
maxscale: /usr/lib64/maxscale/libmaxscaled.so
maxscale: /usr/lib64/maxscale/libmysqlmon.so
maxscale: /usr/lib64/maxscale/libnamedserverfilter.so
maxscale: /usr/lib64/maxscale/libndbclustermon.so
maxscale: /usr/lib64/maxscale/libqlafilter.so
maxscale: /usr/lib64/maxscale/libreadconnroute.so
maxscale: /usr/lib64/maxscale/libreadwritesplit.so
maxscale: /usr/lib64/maxscale/libregexfilter.so
maxscale: /usr/lib64/maxscale/libschemarouter.so
maxscale: /usr/lib64/maxscale/libshardrouter.so
maxscale: /usr/lib64/maxscale/libtee.so
maxscale: /usr/lib64/maxscale/libtelnetd.so
maxscale: /usr/lib64/maxscale/libtestfilter.so
maxscale: /usr/lib64/maxscale/libtopfilter.so

Source checksums
----------------
https://github.com/mariadb-corporation/MaxScale/archive/1.3.0/MaxScale-1.3.0.tar.gz :
  CHECKSUM(SHA256) this package     : 6ee9d157d78cb963419b6eb3cca7e3f288cd2aa02c66caf98d72e3069b1d932b
  CHECKSUM(SHA256) upstream package : 6ee9d157d78cb963419b6eb3cca7e3f288cd2aa02c66caf98d72e3069b1d932b


Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20
Command line :/usr/bin/fedora-review -b 1083962
Buildroot used: fedora-23-x86_64
Active plugins: Generic, Shell-api, C/C++, Perl
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
Comment 27 Oden Eriksson 2016-03-10 04:32:37 EST
Wow!

OK. I have addressed much of that in a new package here:

http://nux.se/maxscale/maxscale.spec
http://nux.se/maxscale/maxscale.spec.diff
http://nux.se/maxscale/maxscale-1.3.0-3.fc24.src.rpm
Comment 28 Honza Horak 2016-03-10 08:58:21 EST
I'd rather suggest to call ldconfig like this:

  %post -p /sbin/ldconfig

but your current way doesn't seem to be wrong either.

Otherwise it looks fine to me, so providing fedora_review+.
Comment 29 Oden Eriksson 2016-03-10 09:07:35 EST
As I remember "%post -p /sbin/ldconfig" will mean %post will only do ldconfig and ignore the rest, but could be wrong.
Comment 30 Honza Horak 2016-03-10 12:21:56 EST
Oh, I'm not sure now, so feel free to keep it.
Comment 31 Oden Eriksson 2016-03-23 09:14:01 EDT
Incredible. I just pushed so that you can build it against system pcre2 libs and now with 1.4.0 they force git download and build of MariaDB Connector-C

[...]
-- Building MariaDB Connector-C from source.
-- Could NOT find Git (missing:  GIT_EXECUTABLE) 
[...]

This is truly a moving target.

Note You need to log in before you can comment on or make changes to this bug.