all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Wisdom regarding packaging proxysql
@ 2020-02-05 15:59 Ellen Papsch
  2020-02-05 20:23 ` Leo Famulari
  0 siblings, 1 reply; 3+ messages in thread
From: Ellen Papsch @ 2020-02-05 15:59 UTC (permalink / raw)
  To: guix-devel

Hello Guix,

I'm currently packaging proxysql, of course with the goal of getting it
into Guix upstream as well. There are two hurdles, which I thought I
should discuss here.

The first is the rather unflexible Makefile based build system. It
would require some patching on Guix side. For example, the install
phase installs into a hard coded prefix (/usr). I played with the
thought of adding a meson build, but it would require forking and I
don't want to force something on upstream. 

The second hurdle is the extensive bundling of dependencies, all in all
16 libraries. I looked closely which libraries are modified in any way.
Luckily, 14 libraries are not modified and can be added directly as
inputs, of which 3 will need to be packaged (clickhouse-cpp,
libhttpserver, libinjection). Remaining ones are jemalloc and mariadb-
connector-c.

mariadb-connector-c is patched quite extensively, in ways that add
specific proxysql behavior documented in their wiki and relied upon by
users. For example, ma_password_c.patch changes the hashing behavior of
passwords, allowing users to specify passwords in a custom hash
presentation. I would keep this library bundled, because it constitutes
a fork, given the modifications.

The situation with jemalloc is better, only two small patches are
applied. issue823.patch solves a performance issue observed in a
benchmark. Authors of jemalloc declined the patch, noting that it
optimizes something they do not really want to support[0].
issue2358.patch fixes a bug which is also fixed upstream and slated for
the next release[1]. A minor proxysql feature is affected[2].

I'm inclined to use the jemalloc from Guix, although create a
customized version just for proxysql with the two patches applied.  If
I don't apply the first one, the main proxysql auhtor will personally
haunt me (he seems to value performance above all). The second patch
unbreaks an application feature.

Please let me in on your wisdom ;-)

Best regards
Ellen

[0] https://github.com/jemalloc/jemalloc/pull/523
[1] https://github.com/jemalloc/jemalloc/issues/1605
[2] https://github.com/sysown/proxysql/issues/2358

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Wisdom regarding packaging proxysql
  2020-02-05 15:59 Wisdom regarding packaging proxysql Ellen Papsch
@ 2020-02-05 20:23 ` Leo Famulari
  2020-02-06  8:55   ` Ellen Papsch
  0 siblings, 1 reply; 3+ messages in thread
From: Leo Famulari @ 2020-02-05 20:23 UTC (permalink / raw)
  To: Ellen Papsch; +Cc: guix-devel

On Wed, Feb 05, 2020 at 04:59:01PM +0100, Ellen Papsch wrote:
> The first is the rather unflexible Makefile based build system. It
> would require some patching on Guix side. For example, the install
> phase installs into a hard coded prefix (/usr). I played with the
> thought of adding a meson build, but it would require forking and I
> don't want to force something on upstream. 

It's not uncommon to see hard-coded installation prefixes. What else
would need to be changed? Is it doable?

> mariadb-connector-c is patched quite extensively, in ways that add
> specific proxysql behavior documented in their wiki and relied upon by
> users. For example, ma_password_c.patch changes the hashing behavior of
> passwords, allowing users to specify passwords in a custom hash
> presentation. I would keep this library bundled, because it constitutes
> a fork, given the modifications.

Agreed, this is a fork.

> The situation with jemalloc is better, only two small patches are
> applied. issue823.patch solves a performance issue observed in a
> benchmark. Authors of jemalloc declined the patch, noting that it
> optimizes something they do not really want to support[0].
> issue2358.patch fixes a bug which is also fixed upstream and slated for
> the next release[1]. A minor proxysql feature is affected[2].
> 
> I'm inclined to use the jemalloc from Guix, although create a
> customized version just for proxysql with the two patches applied.  If
> I don't apply the first one, the main proxysql auhtor will personally
> haunt me (he seems to value performance above all). The second patch
> unbreaks an application feature.

I think that's the right idea: use the upstream patches on our jemalloc
package.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Wisdom regarding packaging proxysql
  2020-02-05 20:23 ` Leo Famulari
@ 2020-02-06  8:55   ` Ellen Papsch
  0 siblings, 0 replies; 3+ messages in thread
From: Ellen Papsch @ 2020-02-06  8:55 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

Am Mittwoch, den 05.02.2020, 15:23 -0500 schrieb Leo Famulari:
> 
> It's not uncommon to see hard-coded installation prefixes. What else
> would need to be changed? Is it doable?

All dependencies are statically linked to the binary. I'll have to trim
down the build steps to just mariadb-connector-c. Additionally, I'll
have to patch include and library directories. It's very much doable.
As Jussi Pakkanen from meson recently said in a talk, it's hard as in
tedious rather than complicated. I'll jump in.

> > mariadb-connector-c [...]
> 
> Agreed, this is a fork.
> 
> > [...]
> 
> I think that's the right idea: use the upstream patches on our
> jemalloc package.

Thanks for your input!

Best regards

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-02-06  8:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-05 15:59 Wisdom regarding packaging proxysql Ellen Papsch
2020-02-05 20:23 ` Leo Famulari
2020-02-06  8:55   ` Ellen Papsch

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.