Re: Error compiling live555 from Slackbuilds Repository

Robby Workman via slackware <[email protected]> Tue, 15 Aug 2017 16:51:46 -0500
Newsgroups gmane.linux.slackware
Organization Generally OCD
Message-ID <[email protected]>
On Tue, 15 Aug 2017 13:51:54 -0300
Ed Fletcher <[email protected]> wrote:

> On 08/14/2017 06:33 PM, Robby Workman via slackware wrote:
> > On Mon, 14 Aug 2017 11:50:10 -0300
> > Ed Fletcher via slackware <[email protected]> wrote:
> >   
> >> On 08/14/2017 02:06 AM, Robby Workman via slackware wrote:  
> >>> On Sun, 13 Aug 2017 15:47:52 -0300
> >>> Ed Fletcher via slackware <[email protected]> wrote:
> >>>      
> >>>> On 08/13/2017 03:02 PM, Robby Workman via slackware wrote:  
> >>>>> On Sun, 13 Aug 2017 14:35:11 -0300
> >>>>> Ed Fletcher via slackware <[email protected]> wrote:
> >>>>>         
> >>>>>> New install of slackware64-current yesterday.  Trying to get
> >>>>>> vlc and live555 is one of the dependencies.  I get this error
> >>>>>> whether I use sbopkg or download directly from Slackbuilds and
> >>>>>> run the script myself (as root).
> >>>>>>
> >>>>>> The following error message is taken
> >>>>>> from /var/log/sbopkg/sbopkg-build-log
> >>>>>>        
> >>>>>>     >>>>>>>>>>  
> >>>>>> g++ -c -Iinclude -I../UsageEnvironment/include
> >>>>>> -I../groupsock/include -I. -O2 -DSOCKLEN_T=socklen_t
> >>>>>> -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -fPIC -Wall
> >>>>>> -DBSD=1 MPEG4GenericRTPSink.cpp In file included from
> >>>>>> MPEG4GenericRTPSink.cpp:22:0: include/Locale.hh:47:10: fatal
> >>>>>> error: xlocale.h: No such file or directory #include
> >>>>>> <xlocale.h> // because, on some systems, <locale.h> doesn't
> >>>>>> include <xlocale.h>; this makes sure that we get both
> >>>>>> ^~~~~~~~~~~ compilation terminated.
> >>>>>> make[1]: *** [Makefile:60: MPEG4GenericRTPSink.o] Error 1
> >>>>>> make[1]: Leaving directory '/tmp/SBo/live/liveMedia'
> >>>>>> make: *** [Makefile:61: all] Error 2  
> >>>>>>     >>>>>>>>>>  
> >>>>>>
> >>>>>> I did a full install so I shouldn't be missing anything.  And
> >>>>>> live555 doesn't have any dependencies.
> >>>>>>
> >>>>>> I would very much appreciate any pointers as to how to fix
> >>>>>> this.  
> >>>>>
> >>>>>
> >>>>> There might be a fix in ponce's "current" branch:
> >>>>> https://github.com/Ponce/slackbuilds
> >>>>>
> >>>>> -RW
> >>>>>         
> >>>> Thanks, I didn't know that was there.  It's the same version as
> >>>> on Slackbuilds but I downloaded it anyway and gave it a try.
> >>>> Same error as before.
> >>>>
> >>>> I've been trying to figure out what the error message reference
> >>>> to locale.h and xlocale.h might mean but I'm not sure what they
> >>>> are. There are only two instances of include.h on my root
> >>>> filesystem, both in /usr/include.  Four copies of xlocale.h, one
> >>>> in /usr/include/wx-3.0 and the other three under /tmp/SBo.  I
> >>>> tried clearing the old data from /tmp/SBo and compiling again.
> >>>> Still getting the same error.
> >>>>
> >>>> Not sure where to go from here.  
> >>>
> >>>
> >>> Looks like it's as simple as removing the include; here's an
> >>> excerpt from the latest -current ChangeLog:
> >>>
> >>> l/libxslt-1.1.29-x86_64-2.txz:  Rebuilt.
> >>>     Don't include xlocale.h in libxslt/xsltlocale.h, as it has
> >>> been removed from glibc-2.26. Thanks to Matteo Bernardini.
> >>>
> >>> -RW
> >>>      
> >>
> >>
> >>
> >> I found libxslt-1.1.29-x86_64-2.txz in slackware64-current and
> >> downloaded it.  upgradepkg reported that it removed the -1 version
> >> and installed this one.
> >>
> >> Went back to sbopkg to try installing live555 again.  Nope, failed
> >> at the same place with the same error message.
> >>
> >> /usr/include/libxslt/xsltlocale.h now has just
> >> #include <locale.h>
> >> whereas the previous version also had
> >> #include <xlocale.h>
> >>
> >> So the file was changed but it didn't make a difference in this
> >> case.
> >>
> >> Thanks for looking at this.  
> > 
> > 
> > Yes, I wasn't very clear in my intentions, I guess. What I meant
> > was that a similar patch is likely needed for the live555 sources
> > -- there's almost surely one or more includes of xlocale.h in there
> > which need to be removed.
> > 
> > -RW
> >   
> 
> Ah, okay.  So if no patch for live555 sources then perhaps another 
> solution will work.
> 
> The original compile time error message said:
> 
> >>>>>>>>>>  
> In file included from MPEG4GenericRTPSink.cpp:22:0:
> include/Locale.hh:47:10: fatal error: xlocale.h: No such file or
> directory #include <xlocale.h> // because, on some systems,
> <locale.h> doesn't include <xlocale.h>; this makes sure that we get
> both
> >>>>>>>>>>  
> 
> So MPEG4GenericRTPSink.cpp doesn't mention xlocale.h but it does
> include Locale.hh and Locale.hh does mention xlocale.h but in a line
> that, to me, seems to be commented out.
> 
> #include <xlocale.h> // because, on some systems, <locale.h>
> 	doesn't include <xlocale.h>; this makes sure that we get both
> 
> which, I assume, is where the error message came from.
> 
> However, this is also in Locale.hh:
> 
> If you're on a system that (for whatever reason) has "setlocale()"
> but not "newlocale()", then add "-DXLOCALE_NOT_USED" to your
> "config.*" file.
> 
> Perhaps this is the change in glibc.  I believe that the config file
> is config.linux-64bit in the live555 so maybe add -DXLOCALE to
> COMPILE_OPTS?


In C-based languages, that "#" is not a comment -- the "//" indicates
a comment. Basically, remove that entire line you quoted from the
Locale.hh file, or apply the attached patch with "patch -p1" to the
live555 source in the build script.

-RW

-- 
slackware mailing list
[email protected]
https://mailman.lug.org.uk/mailman/listinfo/slackware
remove-xlocale_h-include.patch (text/x-patch, 464 B)
diff -Nur live.orig/liveMedia/include/Locale.hh live/liveMedia/include/Locale.hh
--- live.orig/liveMedia/include/Locale.hh	2017-07-18 01:40:15.000000000 -0500
+++ live/liveMedia/include/Locale.hh	2017-08-15 16:49:22.400951225 -0500
@@ -44,7 +44,6 @@
 #ifndef LOCALE_NOT_USED
 #include <locale.h>
 #ifndef XLOCALE_NOT_USED
-#include <xlocale.h> // because, on some systems, <locale.h> doesn't include <xlocale.h>; this makes sure that we get both
 #endif
 #endif