Subject: Skytools for 10 — RPM missing

From: Victor Yegorov <[email-masked]>
Date: Wed, 13 Dec 2017 22:16:22 +0200

Greetings.

skytools package is missing from the PGDG 10 yum repository.

Still, in the source tree I can see `spec` file:
rpm/redhat/master/skytools/EL-7/skytools-10.init

Is it possible to include this RPM into the repo, please?

-- 
Victor Yegorov

---

From: Devrim Gündüz <[email-masked]>
Date: Thu, 14 Dec 2017 00:17:04 +0300

Hi,

> Is it possible to include this RPM into the repo, please?

Skytools does not compile against Postgres 10.

Regards,
-- 
Devrim Gündüz
EnterpriseDB: https://www.enterprisedb.com
PostgreSQL Consultant, Red Hat Certified Engineer
Twitter: @DevrimGunduz , @DevrimGunduzTR

---

From: Christoph Berg <[email-masked]>
Date: Thu, 14 Dec 2017 10:58:02 +0100

Re: Devrim Gündüz 2017-12-13 <[email-masked]>
> Skytools does not compile against Postgres 10.

On the Debian side, we started moving to the split packages from
https://github.com/pgq . Unfortunately, there's a whole bunch of them,
and we have only packaged pgq and pgqd yet. The whole thing there
looks like a big mess :(

Christoph

---

From: Victor Yegorov <[email-masked]>
Date: Fri, 15 Dec 2017 15:17:30 +0200

> and we have only packaged pgq and pgqd yet. The whole thing there

Indeed.

I've looked into the build process, things are crashing on
`sql/txid/txid.c` for me:

    txid.c: In function 'txid_current_snapshot':
    txid.c:207:6: error: 'SerializableSnapshot' undeclared (first use in
this function)
      if (SerializableSnapshot == NULL)
          ^

Poking around git on `git log -S SerializableSnapshot` and `git log --
contrib/txid/txid.c` I can see,
that stuff from `skytools` to expose snapshots had been integrated into
core years ago (commit 18e3fcc).

Looking at the `sql/txid/Makefile`, they do nothing for that directory if
we're on 8.3+.
Versions checks stopped working on 10:

    -bash-4.2$ export PGVER=10.1
    -bash-4.2$ test $PGVER "<" "8.3" && echo "false" || echo "true"
    false
    -bash-4.2$ export PGVER=9.6.6
    -bash-4.2$ test $PGVER "<" "8.3" && echo "false" || echo "true"
    true

I assume that this subdirectory can be excluded from the `Makefile`, 8.3
EOL came years ago.
Doing so makes things compile fine for me.

Patch is as simple as:

diff --git a/rpm/redhat/master/skytools/master/skytools.spec
b/rpm/redhat/master/skytools/master/skytools.spec
index dbdb423..bda4715 100644
--- a/rpm/redhat/master/skytools/master/skytools.spec
+++ b/rpm/redhat/master/skytools/master/skytools.spec
@@ -58,6 +58,7 @@ rmdir lib
 %if %{pgmajorversion} != 92
 sed -ie '/^#include
<parser\/keywords.h>/s:parser/keywords.h:common/keywords.h:'
sql/pgq/triggers/stringutil.c
 %endif
+sed -ie '/^SUBDIRS/s:ticker txid$:ticker:' sql/Makefile
 ./autogen.sh
 %configure --with-pgconfig=%{pginstdir}/bin/pg_config --with-asciidoc

Devrim, do you think it's possible to add this change and add `skytools` to
10 repo?

-- 
Victor Yegorov

---

From: Devrim Gündüz <[email-masked]>
Date: Fri, 15 Dec 2017 19:35:43 +0300

Hi,

> Devrim, do you think it's possible to add this change and add `skytools` to

I have no idea whether this patch may break other parts of Skytools or not, so
not sure.

Regards,

---

From: Victor Yegorov <[email-masked]>
Date: Mon, 18 Dec 2017 21:17:28 +0200

> I have no idea whether this patch may break other parts of Skytools or

I see.

I've made another change than, that fixes PG version detection in the
sql/txid/Makefile.
With this patch I got `skytools` build fine here.

-- 
Victor Yegorov
--- a/rpm/redhat/master/skytools/master/skytools.spec
+++ b/rpm/redhat/master/skytools/master/skytools.spec
@@ -12,7 +12,7 @@
 Summary:       PostgreSQL database management tools from Skype
 Name:          %{sname}-%{pgmajorversion}
 Version:       3.2.6
-Release:       1%{?dist}
+Release:       2%{?dist}
 License:       BSD
 Group:         Applications/Databases
 Source0:       https://github.com/markokr/%{sname}/archive/%{version}.tar.gz
@@ -58,6 +58,8 @@ rmdir lib
 %if %{pgmajorversion} != 92
 sed -ie '/^#include <parser\/keywords.h>/s:parser/keywords.h:common/keywords.h:' sql/pgq/triggers/stringutil.c
 %endif
+sed -ie '/^pg83/s:shell test.*$:shell [ $( echo -e "$PGVER\\n8.3"|sort -gt. -k1 -k2|head -n1 ) = $PGVER ] \&\& echo false || echo true):' sql/txid/Makefile
+sed -ie '/^pg82/s:shell test.*$:shell [ $( echo -e "$PGVER\\n8.2"|sort -gt. -k1 -k2|head -n1 ) = $PGVER ] \&\& echo false || echo true):' sql/txid/Makefile
 ./autogen.sh
 %configure --with-pgconfig=%{pginstdir}/bin/pg_config --with-asciidoc

@@ -189,6 +191,9 @@ sed -ie '/^#include <parser\/keywords.h>/s:parser/keywords.h:common/keywords.h:'
 %{pginstdir}/share/contrib/pgq_triggers.sql

 %changelog
+* Mon Dec 18 2017 Victor Yegorov <[email-masked]> - 3.2.6-2
+- Fix sql/txid/Makefile for new versioning scheme
+
 * Wed Sep 28 2016 Victor Yegorov <[email-masked]> - 3.2.6-1
 - Update to 3.2.6

---

From: Victor Yegorov <[email-masked]>
Date: Tue, 9 Jan 2018 13:09:56 +0200

> With this patch I got `skytools` build fine here.

Devrim,

Do you think my 2nd patch is good to be merged?

-- 
Victor Yegorov

---

From: Devrim Gündüz <[email-masked]>
Date: Tue, 09 Jan 2018 14:28:56 +0300

Hi,

> Do you think my 2nd patch is good to be merged?

Did you try to submit it to upstream for a new release?

Regards,