Hi Shayan,

On Wed, Aug 21, 2019 at 11:12:55PM +0100, Shayan Doust wrote:
> Hello Andreas,
> 
> For multiarch, I decided to move the shared object and static lib into
> directory defined by DEB_HOST_MULTIARCH.

I think this is correct and I did not observed any problems with this in
the past.

> As a result, during the dpkg_shlibdeps invoke when dh_shlibdeps is
> reached in the package build process, I see a lot of errors. A snippet
> is denoted as below:
> 
> dpkg-shlibdeps: error: cannot continue due to the errors listed above
> Note: libraries are not searched in other binary packages that do not
> have any shlibs or symbols file.
> To help dpkg-shlibdeps find private libraries, you might need to use -l.
> dh_shlibdeps: dpkg-shlibdeps -Tdebian/fast.substvars
> debian/fast/usr/lib/fast/OpenIGTLinkClient
> debian/fast/usr/lib/fast/OpenIGTLinkServer returned exit code 2
> dpkg-shlibdeps: error: cannot find library libFAST.so.0 needed by
> debian/libfast-examples/usr/lib/fast/streamImagesFromDisk (ELF format:
> 'elf64-x86-64' abi: '0201003e00000000'; RPATH: '/usr/lib/fast/../lib')
> 
> Is the RPATH to blame?

I did not yet managed to do a test build - hope to do this today.
In any case your libs should not set RPATH:

   https://wiki.debian.org/RpathIssue

> I'm not too sure what I should do and I would
> rather not trial and error with how long each build takes. The latest
> commit reflects the state of my current workspace. Maybe I should have
> looked into using include(GNUInstallDirs).

I admit I do not have any advise at hand for the moment before I tried.
If I do not come up with any clue later asking on
debian-ment...@lists.debian.org is a promising approach.

> Best Regards,
> Shayan Doust

Kind regards

      Andreas.
 
> On 20/08/2019 20:42, Shayan Doust wrote:
> > Hello Andreas,
> > 
> >> Yes.  I'll have a look and may be I'll turn this into a d-shlibs call.
> >> Thank you have an example.
> > 
> > Sounds good. Although for my attempt I used install command to assign
> > 755 permission to *.so when moved.
> > 
> > I've sometimes found that maintainer consistency is fairly poor.
> > Although there is a policy in place it seems like sometimes maintainers
> > go their own ways which is fairly confusing, especially if that
> > particular thing is not well documented.
> > 
> > I will also push a couple more patches shortly with regards to the
> > opencl header issue once this builds. That, and the ~rc version mangle.
> > 
> >> May be we finalise this package in the next days.  I'll have a look and
> >> might finish it if you don't mind.
> > 
> > I'll still be as active as I am for the next couple of weeks, but it's
> > just an advanced heads up as there is uncertainty with the whole moving
> > out factor.
> > 
> > Additionally, I am wondering how many packages to maintain before it
> > gets "too much". Although I guess the hard work is just the initial
> > packaging attempt. Apart from the whole week I was on holiday, I think
> > this package just took its time in terms of its size but also
> > understanding (from scratch) how libraries should be installed, and the
> > 1 hr 30 mins of build times :).
> > 
> > Best Regards,
> > Shayan Doust
> > 
> > On 20/08/2019 20:21, Andreas Tille wrote:
> >> Hi Shayan,
> >>
> >> On Tue, Aug 20, 2019 at 07:14:33PM +0100, Shayan Doust wrote:
> >>>
> >>> Welcome back :).
> >>
> >> :-)
> >>  
> >>> I've probably checked gatb-core at least a dozen times before you sent
> >>> this to me. I just never checked debian/patch as I didn't think this was
> >>> some cmake thing :). Talked to upstream and they will take care of
> >>> soversion within the next release and package update, but for now I just
> >>> added this as a patch.
> >>
> >> Cool!
> >>  
> >>>> ...In this case the dynamic lib is added but you get the idea how to
> >>>> add a static one from this patch...
> >>>
> >>> Thank you. This is done.
> >>>
> >>> If you have time, do you mind just checking fast package for me? There
> >>> are still a few things I need to do with libfast-dev as I haven't done
> >>> this yet. Where should *.a go? Should this go under
> >>> /usr/lib/<arch>-linux-gnu?
> >>
> >> Yes.  I'll have a look and may be I'll turn this into a d-shlibs call.
> >> Thank you have an example.
> >>
> >>> I know this can be set accordingly in
> >>> debian/rules but I have seen *.a both in /usr/lib and
> >>> /usr/lib/<arch>-linux-gnu. Same for *.so.
> >>
> >> The latter is the modern (=multiarch) one.  /usr/lib is just a left over
> >> by not so properly maintaines packages.
> >>
> >>> I also see
> >>> rc-version-greater-than-expected-version, presumably from how upstream
> >>> brands the version. Should this be ignored or can this be safely 
> >>> rectified?
> >>
> >> You need to use
> >>
> >>    opts="uversionmangle=s/-rc/~rc/"
> >>
> >> in debian/watch and use ~rc in d/changelog.  The rationale is that '~'
> >> sorts lower with `dpkg --compare-versions`.  So if upstream is issuing a
> >> real release it is in correct alphabethic sequence and considered a
> >> higher version if you drop ~rc (or ~beta or whatever upstream might
> >> invent to mark a pre-release).
> >>
> >>> Additionally, productivity will start to decrease for only a few weeks
> >>> to a month as I prepare to move out and into university accommodation.
> >>
> >> May be we finalise this package in the next days.  I'll have a look and
> >> might finish it if you don't mind.
> >>
> >> Thanks for your great work
> >>
> >>      Andreas.
> >>  
> >>> On 19/08/2019 07:39, Andreas Tille wrote:
> >>>> Hi Shayan,
> >>>>
> >>>> On Sun, Aug 18, 2019 at 05:53:01PM +0100, Shayan Doust wrote:
> >>>>> Hello,
> >>>>>
> >>>>> Please disregard the previous email entirely just to save you time from
> >>>>> writing, as I have finally figured things out.
> >>>>
> >>>> I'm slowly recovering from last week need to cope with some backlog.
> >>>> Thus saving my time is pretty welcome. ;-)
> >>>>
> >>>>> fast should contain only executable binaries which in this case are
> >>>>> openigt fast client and server binaries.
> >>>>
> >>>> Yes.
> >>>>
> >>>>> libfastSOVERSION should contain the shared / *.so only although grepping
> >>>>> libFAST.so, there is no soversion. Is this libfast0 then?
> >>>>
> >>>> Several upstreams do not know about SOVERSION and once you contact them
> >>>> you could try to talk about this as well.  If upstream does not set a
> >>>> soversion we should do this.  In gatb-core you can find a simple example:
> >>>>
> >>>>    
> >>>> https://salsa.debian.org/med-team/gatb-core/blob/master/debian/patches/set_soversion.patch
> >>>>
> >>>> Yes, 0 is a good choice here and we need to bump the SOVERSION once
> >>>> upstream might change the ABI (which frequently happens without any
> >>>> notice - you see we are at version 2 in gatb-core meanwhile).
> >>>>
> >>>>> libfast-dev contains only the header files and the static library (*.a).
> >>>>> I realised this can be done with the ar tool. Is it sensible to traverse
> >>>>> the build directory and add all object files to archive to create a
> >>>>> libfast.a?
> >>>>
> >>>> There is no need for manual intervention with ar.  CMake can do this
> >>>> easily.  Once we have used gatb-core as an example we might stick to
> >>>> this one:
> >>>>
> >>>>    
> >>>> https://salsa.debian.org/med-team/gatb-core/blob/master/debian/patches/dynamic_lib.patch
> >>>>
> >>>> In this case the dynamic lib is added but you get the idea how to
> >>>> add a static one from this patch.
> >>>>  
> >>>>> I will now just slightly modify the existing debian/ files to
> >>>>> accommodate these changes.
> >>>>>
> >>>>> Additionally, I will stick to modifying fast so I will not need the
> >>>>> additional CL header files, so the dependency is now just opencl. I will
> >>>>> talk to upstream about this.
> >>>>
> >>>> If this approach will work out that sounds like a good alternative
> >>>> which was missing in my list.
> >>>>
> >>>>> Many thanks & hopefully this isn't an inconvenience,
> >>>>
> >>>> Definitely not.  Its a pleasure to see you growing into way more
> >>>> complex packages.
> >>>>
> >>>> Kind regards
> >>>>
> >>>>        Andreas.
> >>>>
> >>>>> Shayan Doust
> >>>>>
> >>>>>
> >>>>> -------- Forwarded Message --------
> >>>>> Subject: Re: [MoM] Re: fast: Add further dependencies to enable chroot /
> >>>>> cowbuilder to build
> >>>>> Resent-Date: Sat, 17 Aug 2019 13:16:24 +0000 (UTC)
> >>>>> Resent-From: debian-med@lists.debian.org
> >>>>> Date: Sat, 17 Aug 2019 14:16:05 +0100
> >>>>> From: Shayan Doust <he...@shayandoust.me>
> >>>>> To: debian-med@lists.debian.org
> >>>>>
> >>>>> Hello Andreas,
> >>>>>
> >>>>> Many thanks for taking the time to reply.
> >>>>>
> >>>>> Just a few side comments for whenever you next have the free time to
> >>>>> reply :).
> >>>>>
> >>>>>> I had no time to check the packaging.  In any case I think if this is
> >>>>>> a library package we usually ship libfast-dev (with header files and
> >>>>>> static lib (*.a file(s) )), a dynamic library package libfastSOVERSION
> >>>>>> and the executable in a fast package.
> >>>>>
> >>>>> I retained the original name as the package name "fast" and not
> >>>>> "libfast". Maybe I should change this. Initially I was unsure as fast
> >>>>> stands to framework and was unsure as to this relationship with a 
> >>>>> library.
> >>>>>
> >>>>> CMake only generates FAST as a shared object / *.so. I assume this is
> >>>>> just what upstream wanted. Referring to deb policy 8.3, I don't see this
> >>>>> as mandatory. If it is, maybe I'd need to use some tool or modify cmake
> >>>>> to output *.a. Fast did however generate example binaries to which I
> >>>>> split this off into fast-examples to install under /usr/lib/fast.
> >>>>>
> >>>>> There is no soversion when doing an objdump and grepping the SONAME from
> >>>>> the generated *.so file. Does this therefore mean a soversion of simply
> >>>>> 0 or does this now reflect upstream version. I think it's simply a
> >>>>> mistake to simply move libFAST.so into /usr/lib as this doesn't have a
> >>>>> soversion and has to be a symlink instead.
> >>>>>
> >>>>> I may have picked a fairly time consuming and confusing package until I
> >>>>> wrap my head around how a library / "framework" should be packaged.
> >>>>>
> >>>>> Best Regards,
> >>>>> Shayan Doust
> >>>>>
> >>>>> On 17/08/2019 10:17, Andreas Tille wrote:
> >>>>>> Hi Shayan,
> >>>>>>
> >>>>>> I've found some spare minutes for a more explicit answer.  This week I
> >>>>>> was pretty busy with real life (nursing my two grandsons is pretty much
> >>>>>> a full time job :-P).
> >>>>>>
> >>>>>> On Wed, Aug 14, 2019 at 04:49:00PM +0100, Shayan Doust wrote:
> >>>>>>> Hello,
> >>>>>>>
> >>>>>>> So I contacted upstream regarding the failed test binary generation 
> >>>>>>> and
> >>>>>>> they've acknowledged and fixed it. A query regarding test data needed
> >>>>>>> for autopkgtest. As you said to avoid git or any downloading tools
> >>>>>>> (curl, wget, ...) as a dependency,
> >>>>>>
> >>>>>> Its not a matter of trying to avoid some of these tools.  Per policy a
> >>>>>> package needs to build on a machine that's disconnected from the
> >>>>>> internet.  So it will just not work technically to download anything.
> >>>>>> Its the same with autopkgtests.  So we need to provide everything we
> >>>>>> need either as Debian package or inside the source tree.
> >>>>>>
> >>>>>>> how can I add the test datas to
> >>>>>>> autopkgtest. The test data is zipped and is just over 2 GB large, so I
> >>>>>>> didn't think patching this in would be sensible. The test data are to 
> >>>>>>> be
> >>>>>>> downloaded from https://folk.idi.ntnu.no/smistad/FAST_Test_Data.zip
> >>>>>>
> >>>>>> I think 2GB data are to much to just move it to the debian/ dir.  So 
> >>>>>> the
> >>>>>> best idea would be to provide the test data in a separate package for
> >>>>>> instance fast-data (or fast-test-data / fast-examples).  
> >>>>>>
> >>>>>>> Additionally, I've got another query regarding opencl. Upstream have
> >>>>>>> their own modified version of the CL headers. Using diff, the only
> >>>>>>> change they have done is add two *.hpp files into the CL header
> >>>>>>> directory in /usr/include. Is it sensible to ever have opencl as a
> >>>>>>> prerequisite / package dependency and then move over the two missing
> >>>>>>> files into the CL directory when the user installs the fast package or
> >>>>>>> should this sort of modification to external packages be avoided at 
> >>>>>>> all
> >>>>>>> costs. I assume the other way would just be to have the fast opencl
> >>>>>>> headers inside /usr/include/FAST and then patch all the fast headers 
> >>>>>>> to
> >>>>>>> use the fast opencl headers in the new directory. CMake also generated
> >>>>>>> some opencl *.cl files in a directory called "kernel" so I am not sure
> >>>>>>> as to what I should do with this directory and its significance to 
> >>>>>>> FAST.
> >>>>>>
> >>>>>> I agree that having a full copy of OpenCL just to ship two extra files
> >>>>>> makes no sense.  I see several options to consider:
> >>>>>>
> >>>>>>   1. May be it makes sense to forward these two files to OpenCL 
> >>>>>> upstream.
> >>>>>>      In any case it might make sense to talk to fast upstream / opencl
> >>>>>>      Debian maintainers.
> >>>>>>
> >>>>>> You proposed yourself which does not involve others and thus is a 
> >>>>>> faster
> >>>>>> solution for the moment
> >>>>>>
> >>>>>>   2. Move these missing files inside a libfast-dev package and feed
> >>>>>>      it into the opencl headers.  I admit while this would work I have
> >>>>>>      a bad gut feeling about this.
> >>>>>>
> >>>>>>   3. Patch the files and ship the two additional files somewhere in
> >>>>>>      /usr/include/fast
> >>>>>>
> >>>>>> I admit I prefer option 3. as a temporaty means until may be 1. can
> >>>>>> be implemented.
> >>>>>>  
> >>>>>>> Looks like everything else is going fine. With this being the first
> >>>>>>> library I've packaged I do expect some mistakes but luckily they won't
> >>>>>>> be replicated within the next library I package :).
> >>>>>>
> >>>>>> I had no time to check the packaging.  In any case I think if this is
> >>>>>> a library package we usually ship libfast-dev (with header files and
> >>>>>> static lib (*.a file(s) )), a dynamic library package libfastSOVERSION
> >>>>>> and the executable in a fast package.
> >>>>>>
> >>>>>> I have no time to verify whether these hints might make sense in this
> >>>>>> actual case.
> >>>>>>
> >>>>>> Kind regards
> >>>>>>
> >>>>>>       Andreas.
> >>>>>>
> >>>>>>> On 11/08/2019 21:49, Shayan Doust wrote:
> >>>>>>>> Hi Andreas,
> >>>>>>>>
> >>>>>>>>> I'm occupied by real life until next weekend - so my response time
> >>>>>>>>> is way longer than usual.
> >>>>>>>>
> >>>>>>>> Not a worry at all & thanks for the needed information!
> >>>>>>>>
> >>>>>>>>> May be you can ask on debian-ment...@lists.debian.org meanwhile.
> >>>>>>>>
> >>>>>>>> As this is 3.0.0rc1 I will probably try out 3.0.0rc3 and then ask 
> >>>>>>>> just
> >>>>>>>> in case this was some upstream issue.
> >>>>>>>>
> >>>>>>>> Best regards,
> >>>>>>>> Shayan Doust
> >>>>>>>>
> >>>>>>>> On 11/08/2019 21:44, Andreas Tille wrote:
> >>>>>>>>> Hi Shayan,
> >>>>>>>>>
> >>>>>>>>> I'm occupied by real life until next weekend - so my response time
> >>>>>>>>> is way longer than usual.
> >>>>>>>>>
> >>>>>>>>> On Sun, Aug 11, 2019 at 01:25:22AM +0100, Shayan Doust wrote:
> >>>>>>>>>> Hello Andreas,
> >>>>>>>>>>
> >>>>>>>>>> A few things changed since the previous email. I found a way of 
> >>>>>>>>>> getting
> >>>>>>>>>> the dependencies via another chroot environment and now the package
> >>>>>>>>>> builds in cowbuilder with no troubles. My work routine usually goes
> >>>>>>>>>> along the lines of getting stuck on something for a couple of 
> >>>>>>>>>> hours,
> >>>>>>>>>> emailing here on the mailing list then 30 mins later somehow 
> >>>>>>>>>> managing to
> >>>>>>>>>> fix whatever issue I was stuck on :).
> >>>>>>>>>
> >>>>>>>>> That's not very different to what happened quite frequently to me. 
> >>>>>>>>> ;-)
> >>>>>>>>>
> >>>>>>>>>> I am having some issues with moving libFAST.so. I am not sure if I
> >>>>>>>>>> should simply use mv or use d-shlibmove. d-shlibmove just throws an
> >>>>>>>>>> error with regards to dependencies not existing so if I am meant 
> >>>>>>>>>> to use
> >>>>>>>>>> d-shlibmove, please have a look at this in fast.
> >>>>>>>>>
> >>>>>>>>> I personally like to use d-shlibmove since it prevents you from 
> >>>>>>>>> making
> >>>>>>>>> several mistakes in library packaging.  However, since I habe no 
> >>>>>>>>> time
> >>>>>>>>> to provide technical help this week its fine if you find any 
> >>>>>>>>> solution.
> >>>>>>>>> Usually d-shlibmove turns out a bit tricky.  If something is missing
> >>>>>>>>> you can try '--override' as for instance in the package libdisorder.
> >>>>>>>>>
> >>>>>>>>>> Lintian is reporting package-name-doesnt-match-sonames. I believe 
> >>>>>>>>>> this
> >>>>>>>>>> is where I have to rename "fast" to "libFAST" for the package 
> >>>>>>>>>> name. I am
> >>>>>>>>>> also getting shlib-without-versioned-soname and I am unsure as to 
> >>>>>>>>>> how
> >>>>>>>>>> this is rectified.
> >>>>>>>>>
> >>>>>>>>> I usually ignore these lintian issues when its not an actual library
> >>>>>>>>> package.
> >>>>>>>>>  
> >>>>>>>>>> Compilation of the test binaries fail and I am even unable to build
> >>>>>>>>>> these in an isolated system just using cmake so I assume this is 
> >>>>>>>>>> some
> >>>>>>>>>> sort of an upstream bug or even an incomplete wiki page with some
> >>>>>>>>>> dependency not documented. I'll figure out something for this as 
> >>>>>>>>>> usual.
> >>>>>>>>>> Luckily all other informational lintian outputs can simply be 
> >>>>>>>>>> fixed by
> >>>>>>>>>> removing the unneeded directories like fonts. I can't think of 
> >>>>>>>>>> anything
> >>>>>>>>>> else to write at this time of night.
> >>>>>>>>>
> >>>>>>>>> May be you can ask on debian-ment...@lists.debian.org meanwhile.
> >>>>>>>>>  
> >>>>>>>>>> Thanks for your time & best regards,
> >>>>>>>>>
> >>>>>>>>> Good luck
> >>>>>>>>>
> >>>>>>>>>      Andreas.
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>
> >>
> >>
> >>
> > 
> 




-- 
http://fam-tille.de

Reply via email to