Compile issue with glibc-2.27 (copy_file_range)

Started by Thomas Treplover 8 years ago3 messagesbugs
Beta feature

Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.

never appliedCI history
Jump to latest
#1Thomas Trepl
thomas@linuxfromscratch.org

Hi,

according to changlelog of glibc-2.27 they introduced a new function
named "copy_file_range".

There is a static function in src/bin/pg_rewind/copy_fetch.c with the
same name and therefore compilation fails with

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-
statement -Wendif-labels -Wmissing-format-attribute -Wformat-security
-fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2
-I../../../src/interfaces/libpq -DFRONTEND -I../../../src/include -
D_GNU_SOURCE -c -o copy_fetch.o copy_fetch.c
copy_fetch.c:159:1: Fehler: In Konflikt stehende Typen für
»copy_file_range«
copy_file_range(const char *path, off_t begin, off_t end, bool trunc)
^~~~~~~~~~~~~~~
In file included from copy_fetch.c:15:0:
/usr/include/unistd.h:1110:9: Anmerkung: Vorherige Deklaration von
»copy_file_range« war hier
ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
^~~~~~~~~~~~~~~
make[3]: *** [<eingebaut>: copy_fetch.o] Fehler 1
make[3]: Verzeichnis „/tmp/postgresql/build/postgresql-
10.1/src/bin/pg_rewind“ wird verlassen
make[2]: *** [Makefile:40: all-pg_rewind-recurse] Fehler 2
make[2]: Verzeichnis „/tmp/postgresql/build/postgresql-10.1/src/bin“
wird verlassen
make[1]: *** [Makefile:37: all-bin-recurse] Fehler 2
make[1]: Verzeichnis „/tmp/postgresql/build/postgresql-10.1/src“ wird
verlassen
make: *** [GNUmakefile:11: all-src-recurse] Fehler 2
<<<<<<<<

Since postgresql's copy_file_range is static/local to only one file,
its easy to fix:

sed -e "s/copy_file_range/pg_&/" \
-i src/bin/pg_rewind/copy_fetch.c

which renames "copy_file_range" to "pg_copy_file_range". Find attached
a patch doing the same.

System: Linux (LFS 20180202)
glibc: 2.27
gcc: 7.3
Kernel: 4.15.1
PgSql: 10.1

--
Thomas

Attachments:

postgresql-10.1-fix_glibc_clash-1.patchtext/x-patch; charset=UTF-8; name=postgresql-10.1-fix_glibc_clash-1.patchDownload+4-4
#2Dmitry Dolgov
9erthalion6@gmail.com
In reply to: Thomas Trepl (#1)
Re: Compile issue with glibc-2.27 (copy_file_range)

On 4 February 2018 at 14:21, Thomas Trepl <thomas@linuxfromscratch.org> wrote:
according to changlelog of glibc-2.27 they introduced a new function
named "copy_file_range".

There is a static function in src/bin/pg_rewind/copy_fetch.c with the
same name and therefore compilation fails with

It was already renamed some time ago, see commit [1]https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=3e68686e2c55799234ecd020bd1621f913d65475;hp=99d5a3ffb9fe61a5a8b01a4759d93c627f018923

[1]: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=3e68686e2c55799234ecd020bd1621f913d65475;hp=99d5a3ffb9fe61a5a8b01a4759d93c627f018923

#3Michael Paquier
michael@paquier.xyz
In reply to: Thomas Trepl (#1)
Re: Compile issue with glibc-2.27 (copy_file_range)

On Sun, Feb 04, 2018 at 02:21:38PM +0100, Thomas Trepl wrote:

according to changlelog of glibc-2.27 they introduced a new function
named "copy_file_range".

Yes, some buildfarm machines caught that already. Here is the commit
fixing it, which will be available in next week's round of minor
releases:

commit: 3e68686e2c55799234ecd020bd1621f913d65475
author: Andres Freund <andres@anarazel.de>
date: Wed, 3 Jan 2018 12:40:32 -0800
Rename pg_rewind's copy_file_range() to avoid conflict with new linux syscall.

Upcoming versions of glibc will contain copy_file_range(2), a wrapper
around a new linux syscall for in-kernel copying of data ranges. This
conflicts with pg_rewinds function of the same name.

Therefore rename pg_rewinds version. As our version isn't a generic
copying facility we decided to choose a rewind specific function name.

Per buildfarm animal caiman and subsequent discussion with Tom Lane.

Author: Andres Freund
Discussion:
/messages/by-id/20180103033425.w7jkljth3e26sduc@alap3.anarazel.de
/messages/by-id/31122.1514951044@sss.pgh.pa.us
Backpatch: 9.5-, where pg_rewind was introduced

This report reminds me that I haven't patched yet the version of
pg_rewind for REL9_4_STABLE and REL9_3_STABLE that I maintain for
VMware. Will do that now..
--
Michael