Re: error building 2.0.7

Quentin Armitage <[email protected]> Tue, 16 Oct 2018 17:38:56 +0100
Newsgroups gmane.linux.keepalived.devel
Organization The Armitage family
Message-ID <[email protected]>
--===============2647821282455122650==
Content-Type: multipart/alternative; boundary="=-dzVn0GX0OYlZv933OH7m"


--=-dzVn0GX0OYlZv933OH7m
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

Paul,
It looks like bool, true and false are undeclared/undefined. So far as
I can see uClibc doesn't have a stdbool.h header file, but I'm not sure
why the #include <stdbool.h> isn't failing.
Quentin
On Tue, 2018-10-16 at 15:25 +0100, Paul Gildea wrote:
> Thanks Quentin, that cleared up the issue in my mind for me very
> well. Either solution worked fine and build is progressing further.It
> looks like there are some more issues for me so I'll see how I get on
> and let you know of what happens:
> 
> make[3]: Entering directory
> `/media/vmpart/vrrp/buildroot/output/build/keepalived-
> 2.0.7new/keepalived/core'
>   CC       main.o
>   CC       daemon.o
>   CC       pidfile.o
>   CC       layer4.o
>   CC       smtp.o
>   CC       global_data.o
>   CC       global_parser.o
>   CC       process.o
> process.c:41: error: expected '=', ',', ';', 'asm' or '__attribute__'
> before 'realtime_priority_set'
> process.c:49: error: expected '=', ',', ';', 'asm' or '__attribute__'
> before 'priority_set'
> process.c: In function 'set_process_priority':
> process.c:79: error: 'priority_set' undeclared (first use in this
> function)
> process.c:79: error: (Each undeclared identifier is reported only
> once
> process.c:79: error: for each function it appears in.)
> process.c:79: error: 'true' undeclared (first use in this function)
> process.c: In function 'reset_process_priority':
> process.c:91: error: 'priority_set' undeclared (first use in this
> function)
> process.c:91: error: 'false' undeclared (first use in this function)
> process.c: In function 'reset_process_priorities':
> process.c:141: error: 'realtime_priority_set' undeclared (first use
> in this function)
> process.c:150: error: 'false' undeclared (first use in this function)
> process.c:164: error: 'priority_set' undeclared (first use in this
> function)
> make[3]: *** [process.o] Error 1
> make[3]: *** Waiting for unfinished jobs....
> make[3]: Leaving directory
> `/media/vmpart/vrrp/buildroot/output/build/keepalived-
> 2.0.7new/keepalived/core'
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory
> `/media/vmpart/vrrp/buildroot/output/build/keepalived-
> 2.0.7new/keepalived'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory
> `/media/vmpart/vrrp/buildroot/output/build/keepalived-2.0.7new'
> make: *** [/media/vmpart/vrrp/buildroot/output/build/keepalived-
> 2.0.7new/.stamp_built] Error 2
> 
> 
> On Tue, 16 Oct 2018 at 14:26, Quentin Armitage <[email protected].
> uk> wrote:
> > Paul,
> > This appears probably to be due to a conflict between uClibc using
> > TIMER_MAX and keepalived defining TIMER_MAX. glibc doesn't have a
> > definition of, or use, TIMER_MAX, at least not on my systems, and
> > musl doesn't appear to either.
> > So the problem would appear to be namespace polution by uClibc.
> > Looking at the uClibc-ng source code, TIMER_MAX doesn't appear to
> > be used other than to define it if it is not defined, in
> > common/bits/uClibc_local_lim.h, so I suspect it is some historical
> > code in uClibc that should be removed.
> > It would be simple enough to rename the TIMER_MAX used in
> > keepalived to something else, and there are only 4 lines in
> > keepalived where it is used (all in read_timer in  lib/parser.c).
> > Could you just try moving the definition of TIMER_MAX from
> > lib/parser.h to lib/parser.c and see if that works. If not, could
> > you try changing it to TIMER_MAX_UL or something like that and
> > seeing if it resolves your problem. 
> > Please let me know what you work out, and we can then see if we can
> > push a commit to work around the problem in uClibc.
> > Quentin ArmitageOn Tue, 2018-10-16 at 12:22 +0100, Paul Gildea
> > wrote:
> > > Hi,
> > > I currently have 2.0.5 build and was trying to patch it with a
> > > fix I need by patching this commit to it:
> > > https://github.com/acassen/keepalived/commit/37d6b3bc22d307d09ab8
> > > bd75111c3645c742c792
> > > However the code change must be too great between 2.0.5 and
> > > master because doing so causes build errors. To make the code
> > > more similar before patching I decided to upgrade to the latest
> > > release, 2.0.7, however that is not building with the below
> > > error, do you know what might have changed to cause this or what
> > > is happening? I'm not sure from reading the changelog. I have
> > > also tried to build 2.0.6 to narrow it down,  which worked fine.
> > > 
> > > /media/vmpart/vrrp/buildroot/output/host/usr/x86_64-unknown-
> > > linux-uclibc/sysroot/usr/include/bits/uClibc_local_lim.h:15:3:
> > > error: #error local_lim.h was incorrectly updated, use the NPTL
> > > version from glibc
> > > make[3]: *** [parser.o] Error 1
> > > make[3]: *** Waiting for unfinished jobs....
> > >   CC       logger.o
> > > make[3]: Leaving directory
> > > `/media/vmpart/vrrp/buildroot/output/build/keepalived-2.0.7/lib'
> > > make[2]: *** [all] Error 2
> > > make[2]: Leaving directory
> > > `/media/vmpart/vrrp/buildroot/output/build/keepalived-2.0.7/lib'
> > > make[1]: *** [all-recursive] Error 1
> > > make[1]: Leaving directory
> > > `/media/vmpart/vrrp/buildroot/output/build/keepalived-2.0.7'
> > > make: *** [/media/vmpart/vrrp/buildroot/output/build/keepalived-
> > > 2.0.7/.stamp_built] Error 2
> > > 
> > > 
> > > Looking at the file with that error I see:
> > > 
> > > #if !defined PTHREAD_KEYS_MAX || defined TIMER_MAX || !defined
> > > SEM_VALUE_MAX
> > > # error local_lim.h was incorrectly updated, use the NPTL version
> > > from glibc
> > > #endif
> > > 
> > > 
> > > Regards,
> > > 
> > > 
> > > --
> > > Paul
> > > 
> > > _______________________________________________
> > > Keepalived-devel mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/keepalived-devel
--=-dzVn0GX0OYlZv933OH7m
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<html><head></head><body bgcolor=3D"#ffffff" text=3D"#2e3436" link=3D"#2a76=
c6" vlink=3D"#2e3436"><div>Paul,</div><div><br></div><div>It looks like boo=
l, true and false are undeclared/undefined. So far as I can see uClibc does=
n't have a stdbool.h header file, but I'm not sure why the #include &lt;std=
bool.h&gt; isn't failing.</div><div><br></div><div>Quentin</div><div><br></=
div><div>On Tue, 2018-10-16 at 15:25 +0100, Paul Gildea wrote:</div><blockq=
uote type=3D"cite" style=3D"margin:0 0 0 .8ex; border-left:2px #729fcf soli=
d;padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr">Thanks Quentin, that =
cleared up the issue in my mind for me very well. Either solution worked fi=
ne and build is progressing further.<div>It looks like there are some more =
issues for me so I'll see how I get on and let you know of what happens:</d=
iv><div><br></div><div><div><font face=3D"monospace, monospace">make[3]: En=
tering directory `/media/vmpart/vrrp/buildroot/output/build/keepalived-2.0.=
7new/keepalived/core'</font></div><div><font face=3D"monospace, monospace">=
&nbsp; CC &nbsp; &nbsp; &nbsp; main.o</font></div><div><font face=3D"monosp=
ace, monospace">&nbsp; CC &nbsp; &nbsp; &nbsp; daemon.o</font></div><div><f=
ont face=3D"monospace, monospace">&nbsp; CC &nbsp; &nbsp; &nbsp; pidfile.o<=
/font></div><div><font face=3D"monospace, monospace">&nbsp; CC &nbsp; &nbsp=
; &nbsp; layer4.o</font></div><div><font face=3D"monospace, monospace">&nbs=
p; CC &nbsp; &nbsp; &nbsp; smtp.o</font></div><div><font face=3D"monospace,=
 monospace">&nbsp; CC &nbsp; &nbsp; &nbsp; global_data.o</font></div><div><=
font face=3D"monospace, monospace">&nbsp; CC &nbsp; &nbsp; &nbsp; global_pa=
rser.o</font></div><div><font face=3D"monospace, monospace">&nbsp; CC &nbsp=
; &nbsp; &nbsp; process.o</font></div><div><font face=3D"monospace, monospa=
ce">process.c:41: error: expected '=3D', ',', ';', 'asm' or '__attribute__'=
 before 'realtime_priority_set'</font></div><div><font face=3D"monospace, m=
onospace">process.c:49: error: expected '=3D', ',', ';', 'asm' or '__attrib=
ute__' before 'priority_set'</font></div><div><font face=3D"monospace, mono=
space">process.c: In function 'set_process_priority':</font></div><div><fon=
t face=3D"monospace, monospace">process.c:79: error: 'priority_set' undecla=
red (first use in this function)</font></div><div><font face=3D"monospace, =
monospace">process.c:79: error: (Each undeclared identifier is reported onl=
y once</font></div><div><font face=3D"monospace, monospace">process.c:79: e=
rror: for each function it appears in.)</font></div><div><font face=3D"mono=
space, monospace">process.c:79: error: 'true' undeclared (first use in this=
 function)</font></div><div><font face=3D"monospace, monospace">process.c: =
In function 'reset_process_priority':</font></div><div><font face=3D"monosp=
ace, monospace">process.c:91: error: 'priority_set' undeclared (first use i=
n this function)</font></div><div><font face=3D"monospace, monospace">proce=
ss.c:91: error: 'false' undeclared (first use in this function)</font></div=
><div><font face=3D"monospace, monospace">process.c: In function 'reset_pro=
cess_priorities':</font></div><div><font face=3D"monospace, monospace">proc=
ess.c:141: error: 'realtime_priority_set' undeclared (first use in this fun=
ction)</font></div><div><font face=3D"monospace, monospace">process.c:150: =
error: 'false' undeclared (first use in this function)</font></div><div><fo=
nt face=3D"monospace, monospace">process.c:164: error: 'priority_set' undec=
lared (first use in this function)</font></div><div><font face=3D"monospace=
, monospace">make[3]: *** [process.o] Error 1</font></div><div><font face=
=3D"monospace, monospace">make[3]: *** Waiting for unfinished jobs....</fon=
t></div><div><font face=3D"monospace, monospace">make[3]: Leaving directory=
 `/media/vmpart/vrrp/buildroot/output/build/keepalived-2.0.7new/keepalived/=
core'</font></div><div><font face=3D"monospace, monospace">make[2]: *** [al=
l-recursive] Error 1</font></div><div><font face=3D"monospace, monospace">m=
ake[2]: Leaving directory `/media/vmpart/vrrp/buildroot/output/build/keepal=
ived-2.0.7new/keepalived'</font></div><div><font face=3D"monospace, monospa=
ce">make[1]: *** [all-recursive] Error 1</font></div><div><font face=3D"mon=
ospace, monospace">make[1]: Leaving directory `/media/vmpart/vrrp/buildroot=
/output/build/keepalived-2.0.7new'</font></div><div><font face=3D"monospace=
, monospace">make: *** [/media/vmpart/vrrp/buildroot/output/build/keepalive=
d-2.0.7new/.stamp_built] Error 2</font></div></div><div><br></div></div></d=
iv><br><div class=3D"gmail_quote"><div dir=3D"ltr">On Tue, 16 Oct 2018 at 1=
4:26, Quentin Armitage &lt;<a href=3D"mailto:[email protected]">quent=
[email protected]</a>&gt; wrote:<br></div><blockquote type=3D"cite" style=
=3D"margin:0 0 0 .8ex; border-left:2px #729fcf solid;padding-left:1ex"><div=
 bgcolor=3D"#ffffff" text=3D"#2e3436" link=3D"#2a76c6" vlink=3D"#2e3436"><d=
iv>Paul,</div><div><br></div><div>This appears probably to be due to a conf=
lict between uClibc using TIMER_MAX and keepalived defining TIMER_MAX. glib=
c doesn't have a definition of, or use, TIMER_MAX, at least not on my syste=
ms, and musl doesn't appear to either.</div><div><br></div><div>So the prob=
lem would appear to be namespace polution by uClibc. Looking at the uClibc-=
ng source code, TIMER_MAX doesn't appear to be used other than to define it=
 if it is not defined, in common/bits/uClibc_local_lim.h, so I suspect it i=
s some historical code in uClibc that should be removed.</div><div><br></di=
v><div>It would be simple enough to rename the TIMER_MAX used in keepalived=
 to something else, and there are only 4 lines in keepalived where it is us=
ed (all in read_timer in  lib/parser.c).</div><div><br></div><div>Could you=
 just try moving the definition of TIMER_MAX from lib/parser.h to lib/parse=
r.c and see if that works. If not, could you try changing it to TIMER_MAX_U=
L or something like that and seeing if it resolves your problem. </div><div=
><br></div><div>Please let me know what you work out, and we can then see i=
f we can push a commit to work around the problem in uClibc.</div><div><br>=
</div><div>Quentin Armitage</div><div>On Tue, 2018-10-16 at 12:22 +0100, Pa=
ul Gildea wrote:</div><blockquote type=3D"cite" style=3D"margin:0 0 0 .8ex;=
 border-left:2px #729fcf solid;padding-left:1ex"><div dir=3D"ltr"><div dir=
=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr">Hi,<div><br></div><div>I current=
ly have 2.0.5 build and was trying to patch it with a fix I need by patchin=
g this commit to it:</div><div><a href=3D"https://github.com/acassen/keepal=
ived/commit/37d6b3bc22d307d09ab8bd75111c3645c742c792" target=3D"_blank">htt=
ps://github.com/acassen/keepalived/commit/37d6b3bc22d307d09ab8bd75111c3645c=
742c792</a><br></div><div>However the code change must be too great between=
 2.0.5 and master because doing so causes build errors. To make the code mo=
re similar before patching I decided to upgrade to the latest release, 2.0.=
7, however that is not building with the below error, do you know what migh=
t have changed to cause this or what is happening? I'm not sure from readin=
g the changelog. I have also tried to build 2.0.6 to narrow it down, &nbsp;=
which worked fine.</div><div><br></div><div><div><font face=3D"monospace, m=
onospace">/media/vmpart/vrrp/buildroot/output/host/usr/x86_64-unknown-linux=
-uclibc/sysroot/usr/include/bits/uClibc_local_lim.h:15:3: error: #error loc=
al_lim.h was incorrectly updated, use the NPTL version from glibc</font></d=
iv><div><font face=3D"monospace, monospace">make[3]: *** [parser.o] Error 1=
</font></div><div><font face=3D"monospace, monospace">make[3]: *** Waiting =
for unfinished jobs....</font></div><div><font face=3D"monospace, monospace=
">&nbsp; CC &nbsp; &nbsp; &nbsp; logger.o</font></div><div><font face=3D"mo=
nospace, monospace">make[3]: Leaving directory `/media/vmpart/vrrp/buildroo=
t/output/build/keepalived-2.0.7/lib'</font></div><div><font face=3D"monospa=
ce, monospace">make[2]: *** [all] Error 2</font></div><div><font face=3D"mo=
nospace, monospace">make[2]: Leaving directory `/media/vmpart/vrrp/buildroo=
t/output/build/keepalived-2.0.7/lib'</font></div><div><font face=3D"monospa=
ce, monospace">make[1]: *** [all-recursive] Error 1</font></div><div><font =
face=3D"monospace, monospace">make[1]: Leaving directory `/media/vmpart/vrr=
p/buildroot/output/build/keepalived-2.0.7'</font></div><div><font face=3D"m=
onospace, monospace">make: *** [/media/vmpart/vrrp/buildroot/output/build/k=
eepalived-2.0.7/.stamp_built] Error 2</font></div></div><div><br></div><div=
><br></div><div>Looking at the file with that error I see:</div><div><br></=
div><div><div class=3D"m_6887387999980913702gmail-add" style=3D"color:green=
;font-size:13.3333px;white-space:pre-wrap"><font face=3D"monospace, monospa=
ce">#if !defined PTHREAD_KEYS_MAX || defined TIMER_MAX || !defined SEM_VALU=
E_MAX</font></div><div class=3D"m_6887387999980913702gmail-ctx" style=3D"co=
lor:rgb(51,51,51);font-size:13.3333px;white-space:pre-wrap"><font face=3D"m=
onospace, monospace"># error local_lim.h was incorrectly updated, use the N=
PTL version from glibc</font></div><div class=3D"m_6887387999980913702gmail=
-ctx" style=3D"color:rgb(51,51,51);font-size:13.3333px;white-space:pre-wrap=
"><font face=3D"monospace, monospace">#endif</font></div></div><div class=
=3D"m_6887387999980913702gmail-ctx" style=3D"color:rgb(51,51,51);font-size:=
13.3333px;white-space:pre-wrap"><font face=3D"monospace, monospace"><br></f=
ont></div><div class=3D"m_6887387999980913702gmail-ctx" style=3D"color:rgb(=
51,51,51);font-size:13.3333px;white-space:pre-wrap"><font face=3D"monospace=
, monospace">Regards,</font></div><div class=3D"m_6887387999980913702gmail-=
ctx" style=3D"color:rgb(51,51,51);font-size:13.3333px;white-space:pre-wrap"=
><font face=3D"monospace, monospace"><br></font></div><div class=3D"m_68873=
87999980913702gmail-ctx" style=3D"color:rgb(51,51,51);font-size:13.3333px;w=
hite-space:pre-wrap"><font face=3D"monospace, monospace">--</font></div><di=
v class=3D"m_6887387999980913702gmail-ctx" style=3D"color:rgb(51,51,51);fon=
t-size:13.3333px;white-space:pre-wrap"><font face=3D"monospace, monospace">=
Paul</font></div></div></div></div></div>
<pre>_______________________________________________
Keepalived-devel mailing list
<a href=3D"mailto:[email protected]" target=3D"_blank"=
>[email protected]</a>
<a href=3D"https://lists.sourceforge.net/lists/listinfo/keepalived-devel" t=
arget=3D"_blank">https://lists.sourceforge.net/lists/listinfo/keepalived-de=
vel</a>
</pre></blockquote></div></blockquote></div>
</blockquote></body></html>
--=-dzVn0GX0OYlZv933OH7m--



--===============2647821282455122650==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============2647821282455122650==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Keepalived-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/keepalived-devel

--===============2647821282455122650==--