On 09/24/12 15:14, David Coppa wrote: > > Hi, > > The following diff lets cmake build shared libraries without soname, > which is compliant to our policy for shared libraries. > > This should go in a bulk build. > I already know for example that net/libproxy is failing with this, > but I already have patches ready for it... > > Let me know about other eventual failures caused by this patch. > > Thanks! > David > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/cmake/Makefile,v > retrieving revision 1.64 > diff -u -p -r1.64 Makefile > --- Makefile 31 Aug 2012 12:28:31 -0000 1.64 > +++ Makefile 24 Sep 2012 14:06:42 -0000 > @@ -7,6 +7,7 @@ HOMEPAGE = http://www.cmake.org/ > CATEGORIES = devel > COMMENT = portable build system > DISTNAME = cmake-2.8.9 > +REVISION = 0 > MASTER_SITES = ${HOMEPAGE}files/v2.8/ > > MAINTAINER = David Coppa <dco...@openbsd.org> > Index: patches/patch-Source_cmComputeLinkInformation_cxx > =================================================================== > RCS file: patches/patch-Source_cmComputeLinkInformation_cxx > diff -N patches/patch-Source_cmComputeLinkInformation_cxx > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-Source_cmComputeLinkInformation_cxx 24 Sep 2012 14:06:43 > -0000 > @@ -0,0 +1,68 @@ > +$OpenBSD$ > +--- Source/cmComputeLinkInformation.cxx.orig Thu Aug 9 20:15:19 2012 > ++++ Source/cmComputeLinkInformation.cxx Tue Aug 28 14:27:03 2012 > +@@ -1059,12 +1059,18 @@ void > cmComputeLinkInformation::AddTargetItem(std::stri > + this->SharedLibrariesLinked.insert(target); > + } > + > +- // Handle case of an imported shared library with no soname. > +- if(this->NoSONameUsesPath && > +- target->IsImportedSharedLibWithoutSOName(this->Config)) > ++ if(this->OpenBSD) > + { > + this->AddSharedLibNoSOName(item); > + return; > ++ } else { > ++ // Handle case of an imported shared library with no soname. > ++ if(this->NoSONameUsesPath && > ++ target->IsImportedSharedLibWithoutSOName(this->Config)) > ++ { > ++ this->AddSharedLibNoSOName(item); > ++ return; > ++ } > + } > + > + // If this platform wants a flag before the full path, add it. > +@@ -1389,23 +1395,29 @@ void > cmComputeLinkInformation::AddFrameworkPath(std::s > + > //---------------------------------------------------------------------------- > + bool cmComputeLinkInformation::CheckSharedLibNoSOName(std::string const& > item) > + { > +- // This platform will use the path to a library as its soname if the > +- // library is given via path and was not built with an soname. If > +- // this is a shared library that might be the case. > +- std::string file = cmSystemTools::GetFilenameName(item); > +- if(this->ExtractSharedLibraryName.find(file)) > ++ if(this->OpenBSD) > + { > +- // If we can guess the soname fairly reliably then assume the > +- // library has one. Otherwise assume the library has no builtin > +- // soname. > +- std::string soname; > +- if(!cmSystemTools::GuessLibrarySOName(item, soname)) > ++ this->AddSharedLibNoSOName(item); > ++ return true; > ++ } else { > ++ // This platform will use the path to a library as its soname if the > ++ // library is given via path and was not built with an soname. If > ++ // this is a shared library that might be the case. > ++ std::string file = cmSystemTools::GetFilenameName(item); > ++ if(this->ExtractSharedLibraryName.find(file)) > + { > +- this->AddSharedLibNoSOName(item); > +- return true; > ++ // If we can guess the soname fairly reliably then assume the > ++ // library has one. Otherwise assume the library has no builtin > ++ // soname. > ++ std::string soname; > ++ if(!cmSystemTools::GuessLibrarySOName(item, soname)) > ++ { > ++ this->AddSharedLibNoSOName(item); > ++ return true; > ++ } > + } > ++ return false; > + } > +- return false; > + } > + > + > //---------------------------------------------------------------------------- > Index: patches/patch-Source_cmTarget_cxx > =================================================================== > RCS file: /cvs/ports/devel/cmake/patches/patch-Source_cmTarget_cxx,v > retrieving revision 1.13 > diff -u -p -r1.13 patch-Source_cmTarget_cxx > --- patches/patch-Source_cmTarget_cxx 31 Aug 2012 12:28:31 -0000 1.13 > +++ patches/patch-Source_cmTarget_cxx 24 Sep 2012 14:06:43 -0000 > @@ -1,7 +1,24 @@ > $OpenBSD: patch-Source_cmTarget_cxx,v 1.13 2012/08/31 12:28:31 dcoppa Exp $ > --- Source/cmTarget.cxx.orig Thu Aug 9 20:15:19 2012 > -+++ Source/cmTarget.cxx Thu Aug 23 11:25:48 2012 > -@@ -3380,9 +3380,43 @@ void cmTarget::GetLibraryNames(std::string& name, > ++++ Source/cmTarget.cxx Mon Aug 27 15:07:12 2012 > +@@ -3022,12 +3022,16 @@ std::string cmTarget::GetPDBName(const char* config) > + > //---------------------------------------------------------------------------- > + bool cmTarget::HasSOName(const char* config) > + { > ++#if !defined(__OpenBSD__) > + // soname is supported only for shared libraries and modules, > + // and then only when the platform supports an soname flag. > + return ((this->GetType() == cmTarget::SHARED_LIBRARY || > + this->GetType() == cmTarget::MODULE_LIBRARY) && > + !this->GetPropertyAsBool("NO_SONAME") && > + this->Makefile->GetSONameFlag(this->GetLinkerLanguage(config))); > ++#else > ++ return false; > ++#endif > + } > + > + > //---------------------------------------------------------------------------- > +@@ -3380,9 +3384,43 @@ void cmTarget::GetLibraryNames(std::string& name, > // The library name. > name = prefix+base+suffix; > > @@ -45,7 +62,7 @@ $OpenBSD: patch-Source_cmTarget_cxx,v 1. > > // The library's real name on disk. > this->ComputeVersionedName(realName, prefix, base, suffix, > -@@ -3415,7 +3449,23 @@ void cmTarget::ComputeVersionedName(std::string& vName > +@@ -3415,7 +3453,23 @@ void cmTarget::ComputeVersionedName(std::string& vName > if(version) > { > vName += "."; > >
failures on amd64 are:- databases/dbic++ www/nginx/devel,passenger www/nginx/stable,passenger sysutils/collectd,-rrdtool devel/hs-type-level devel/hs-vector graphics/hugin database/dbic++ - uses cmake. now has missing libraries in PLIST next 3 are missing bumps in REVISION (two appear to be ruby 1.9 related). last 3 are old ghc issues. openvas port in mystuff uses cmake, this rebuilt successfully main reason for checking. i386 machine is still running a build, security/libssh failed, which uses cmake, when tried on amd64 also failed with same error. These are not full builds, uses dpb -R to rebuilding only the required ports. Reverting back cmake, both dbic++ and libssh build on amd64.