Re: Qt5's libtool link scripts are unusable

2019-06-21 Thread Stuart Henderson
On 2019/06/21 16:45, Marc Espie wrote:
> On Thu, Jun 20, 2019 at 09:41:23PM +0200, Rafael Sadowski wrote:
> > This's what Qt 5.13 doas. They use "<< endl;" instead of "<< "\n";", I
> > would like to prefer that. std::endl calls std::flush which synchronizes
> > with the underlying storage device.
> > 
> > RS
> 
> 
> I agree with using endl if that's what Qt 5.13 does.
> 
> But it's one specific case where you really do not give a fuck about
> flushing.  After all you are generating a Makefile. Who cares about
> synchronizing after each single line ?

I just used the same as the other nearby lines in the file, for the code
that's there now it's irrelevant as none of the other lines use endl.



Re: Qt5's libtool link scripts are unusable

2019-06-21 Thread Marc Espie
On Thu, Jun 20, 2019 at 09:41:23PM +0200, Rafael Sadowski wrote:
> This's what Qt 5.13 doas. They use "<< endl;" instead of "<< "\n";", I
> would like to prefer that. std::endl calls std::flush which synchronizes
> with the underlying storage device.
> 
> RS


I agree with using endl if that's what Qt 5.13 does.

But it's one specific case where you really do not give a fuck about
flushing.  After all you are generating a Makefile. Who cares about
synchronizing after each single line ?



Re: Qt5's libtool link scripts are unusable

2019-06-20 Thread Rafael Sadowski
On Thu Jun 20, 2019 at 04:46:59PM +0100, Stuart Henderson wrote:
> Thanks for the report,
> 
> On 2019/06/20 17:30, Vadim Penzin wrote:
> > I admit that I am not familiar with the release process of pre-built binary
> > packages; I might be writing to a wrong mailing list and I apologize in
> > advance.
> 
> ports@ is the better list for this, I've CC'd and set reply-to.
> 
> > All libtool scripts from qt5 (/usr/local/lib/qt5/*.la) contain the following
> > on their third line:
> > 
> >   LIBQt5XXX_VERSION=5.9# The name that we can dlopen(3).
> > 
> > (XXX above stands for the name of a particular library, such as Core,
> > Network, etc.)
> > 
> > Since shell scripts (that libtool generates) source .la files, sh(1) fails
> > on unexpected '(' because someone, somewhere omitted a space before the
> > comment.
> > 
> > Patching /usr/local/lib/qt5/*.la files programmatically by tucking a space
> > before the hash character brings linking with Qt5 assisted (encumbered?) by
> > libtool back to life.
> > 
> > --Vadim
> > 
> 
> This patch to the qtbase port should fix the problem at source (I'll leave
> it building and test later). However it will also require REVISION bumps
> on all ports including .la files produced by this.
> 
> Index: Makefile
> ===
> RCS file: /cvs/ports/x11/qt5/qtbase/Makefile,v
> retrieving revision 1.29
> diff -u -p -w -u -r1.29 Makefile
> --- Makefile  20 May 2019 22:15:29 -  1.29
> +++ Makefile  20 Jun 2019 15:43:00 -
> @@ -15,13 +15,13 @@ PKGNAME-global =  qt5-global-${VERSION}
>  PKGNAME-psql =   qt5-postgresql-${VERSION}
>  PKGNAME-sqlite2 =qt5-sqlite2-${VERSION}
>  PKGNAME-tds =qt5-tds-${VERSION}
> +
>  REVISION-global =   0
> +REVISION-main =  5
>  REVISION-mysql = 0
>  REVISION-psql =  0
>  REVISION-sqlite2 =   0
>  REVISION-tds =   0
> -
> -REVISION-main =  4
>  
>  PKG_ARCH-global =*
>  PKG_ARCH-examples =  *
> Index: patches/patch-qmake_generators_unix_unixmake2_cpp
> ===
> RCS file: 
> /cvs/ports/x11/qt5/qtbase/patches/patch-qmake_generators_unix_unixmake2_cpp,v
> retrieving revision 1.3
> diff -u -p -w -u -r1.3 patch-qmake_generators_unix_unixmake2_cpp
> --- patches/patch-qmake_generators_unix_unixmake2_cpp 5 Jul 2018 09:49:13 
> -   1.3
> +++ patches/patch-qmake_generators_unix_unixmake2_cpp 20 Jun 2019 15:43:00 
> -
> @@ -136,13 +136,14 @@ Index: qmake/generators/unix/unixmake2.c
>   } else if (!project->isEmpty("QMAKE_AIX_SHLIB")) {
>   
> project->values("TARGET_").append(project->first("QMAKE_PREFIX_STATICLIB") + 
> project->first("TARGET")
>   + "." + project->first("QMAKE_EXTENSION_STATICLIB"));
> -@@ -1465,18 +1498,32 @@ UnixMakefileGenerator::writeLibtoolFile()
> +@@ -1465,18 +1498,33 @@ UnixMakefileGenerator::writeLibtoolFile()
> << QT_VERSION_STR << ")";
>   t << "\n";
>   
>  +if (!project->isEmpty("QMAKE_OPENBSD_SHLIB"))
>  +  t << "LIB" << fileVar("QMAKE_ORIG_TARGET") << "_VERSION="
> -+<< project->first("VER_MAJ") << "." << project->first("VER_MIN");
> ++<< project->first("VER_MAJ") << "." << project->first("VER_MIN")
> ++<< "\n";

This's what Qt 5.13 doas. They use "<< endl;" instead of "<< "\n";", I
would like to prefer that. std::endl calls std::flush which synchronizes
with the underlying storage device.

RS

>  +
>   t << "# The name that we can dlopen(3).\n"
>  -  << "dlname='" << fileVar(project->isActiveConfig("plugin") ? "TARGET" 
> : "TARGET_x")
> 



Re: Qt5's libtool link scripts are unusable

2019-06-20 Thread Stuart Henderson
Thanks for the report,

On 2019/06/20 17:30, Vadim Penzin wrote:
> I admit that I am not familiar with the release process of pre-built binary
> packages; I might be writing to a wrong mailing list and I apologize in
> advance.

ports@ is the better list for this, I've CC'd and set reply-to.

> All libtool scripts from qt5 (/usr/local/lib/qt5/*.la) contain the following
> on their third line:
> 
>   LIBQt5XXX_VERSION=5.9# The name that we can dlopen(3).
> 
> (XXX above stands for the name of a particular library, such as Core,
> Network, etc.)
> 
> Since shell scripts (that libtool generates) source .la files, sh(1) fails
> on unexpected '(' because someone, somewhere omitted a space before the
> comment.
> 
> Patching /usr/local/lib/qt5/*.la files programmatically by tucking a space
> before the hash character brings linking with Qt5 assisted (encumbered?) by
> libtool back to life.
> 
> --Vadim
> 

This patch to the qtbase port should fix the problem at source (I'll leave
it building and test later). However it will also require REVISION bumps
on all ports including .la files produced by this.

Index: Makefile
===
RCS file: /cvs/ports/x11/qt5/qtbase/Makefile,v
retrieving revision 1.29
diff -u -p -w -u -r1.29 Makefile
--- Makefile20 May 2019 22:15:29 -  1.29
+++ Makefile20 Jun 2019 15:43:00 -
@@ -15,13 +15,13 @@ PKGNAME-global =qt5-global-${VERSION}
 PKGNAME-psql = qt5-postgresql-${VERSION}
 PKGNAME-sqlite2 =  qt5-sqlite2-${VERSION}
 PKGNAME-tds =  qt5-tds-${VERSION}
+
 REVISION-global =   0
+REVISION-main =5
 REVISION-mysql =   0
 REVISION-psql =0
 REVISION-sqlite2 = 0
 REVISION-tds = 0
-
-REVISION-main =4
 
 PKG_ARCH-global =  *
 PKG_ARCH-examples =*
Index: patches/patch-qmake_generators_unix_unixmake2_cpp
===
RCS file: 
/cvs/ports/x11/qt5/qtbase/patches/patch-qmake_generators_unix_unixmake2_cpp,v
retrieving revision 1.3
diff -u -p -w -u -r1.3 patch-qmake_generators_unix_unixmake2_cpp
--- patches/patch-qmake_generators_unix_unixmake2_cpp   5 Jul 2018 09:49:13 
-   1.3
+++ patches/patch-qmake_generators_unix_unixmake2_cpp   20 Jun 2019 15:43:00 
-
@@ -136,13 +136,14 @@ Index: qmake/generators/unix/unixmake2.c
  } else if (!project->isEmpty("QMAKE_AIX_SHLIB")) {
  
project->values("TARGET_").append(project->first("QMAKE_PREFIX_STATICLIB") + 
project->first("TARGET")
  + "." + project->first("QMAKE_EXTENSION_STATICLIB"));
-@@ -1465,18 +1498,32 @@ UnixMakefileGenerator::writeLibtoolFile()
+@@ -1465,18 +1498,33 @@ UnixMakefileGenerator::writeLibtoolFile()
<< QT_VERSION_STR << ")";
  t << "\n";
  
 +if (!project->isEmpty("QMAKE_OPENBSD_SHLIB"))
 +  t << "LIB" << fileVar("QMAKE_ORIG_TARGET") << "_VERSION="
-+<< project->first("VER_MAJ") << "." << project->first("VER_MIN");
++<< project->first("VER_MAJ") << "." << project->first("VER_MIN")
++<< "\n";
 +
  t << "# The name that we can dlopen(3).\n"
 -  << "dlname='" << fileVar(project->isActiveConfig("plugin") ? "TARGET" : 
"TARGET_x")