This is an update to the latest stable verion of NCO upstream.
As per usual it creates version-dependent -dev and -shlibs packages next to NCO package for the executables. Strangely enough, patches outlined in DescPort still apply.
Minor changes since the previous version:
New version number
Obvious updates of checksums
Conflicts/replaces updated
Compiled and tested successfully on 10.13.1 with "fink -m build".
Is there anything we can do to stop the propagation of ncoXXX-shlibs and ncoXXX-dev packages? For example, Ubuntu puts the dylib (versioned and unversioned) into the base package. They do kill the headers, which we don't.
https://packages.ubuntu.com/artful/amd64/nco/filelist
Hi Hanspeter,
I am also not happy with the proliferation of the ncoXXX-shlibs and ncoXXX-dev packages.
I just continued what Alexander used to do before me. I think he was concerned about removing a dylib that people would have linked to outside of the nco package.
Nco is not particularly clear about their backward compatibility of the dylib to older versions. That's probably why Alexander was cautious.
In Ubuntu, I assume that the unversioned dylib is just a symbolic link (as we do). So if I upgrade nco, I kill the connection to the versioned dylib, and users may be faced with an incompatible version.
However, as long WE (i.e. Fink) does not link to ncoXXX-shlibs in the first place (I don't think any package does), then why would be have these versioned shlibs?
And since we are concerned that linking to the dylib may not even be appropriate outside of nco itself, because there is little information that suggests that the dylib is compatible within minor revisions, then it makes sense to go the way Ubuntu does, and have no nco-shlibs at all.
In that case we should also not provide the headers either, as Ubuntu is also not doing.
In conclusion, if you agree that there is no Fink dependency on any ncoXXX-shlibs, I suggest we stop creating ncoXXX-shlibs and ncoXXX-dev, not even create nco-shlibs nor nco-dev. We would only create nco, with the dylib embedded, and remove the headers altogether.
If you agree, let me know, and I'll progress that way.
Thanks!
Since nothing seems to be using ncoXX-dev/shlibs, it's fine to take them out. Kill the headers, and move the versioned dylib to the main package (will need to
Replaces
the -shlibs packages though). If it has the ability to build a static lib, might want to build that instead, have the nco binary link against that, and then remove the .a library. This way there are no file collisions. Would still probably need to Conflicts/Replaces all the old -shlibs packages to keep them from being orphaned.It definitely can build a static lib. Upstream assumes that Darwin can't build shared libraries, and so the current packaging actually patches against that in the PatchScript. The prior monolithic packaging for nco used to have the static library, but also headers.
Finally got to work on this again. I followed up what Hanspeter suggested, minus the building of a static library. The reason for this is that nco contains a number of executables, all linked against this library and that would result in a much larger package.
So I kept the creation of /sw/lib/libnco-4.7.0-dylib, but removed libnco.dylib, libnco_c++....dylib and the whole include directory. There is thus no way a user can accidentally link against this library.
I also kept the Conflict/Replaces to the older -dev and -shlibs packages.
Hence, we now got rid of all the ncoXXX-dev and ncoXXX-shlibs packages.
$ dpkg -L nco
/.
/sw
/sw/bin
/sw/bin/ncrename
/sw/bin/ncwa
/sw/bin/ncremap
/sw/bin/ncatted
/sw/bin/ncks
/sw/bin/ncbo
/sw/bin/ncpdq
/sw/bin/ncra
/sw/bin/ncflint
/sw/bin/ncclimo
/sw/bin/ncap2
/sw/bin/ncecat
/sw/bin/ncap
/sw/lib
/sw/lib/libnco-4.7.0.dylib
/sw/share
/sw/share/man
/sw/share/man/man1
/sw/share/man/man1/ncclimo.1
/sw/share/man/man1/ncpdq.1
/sw/share/man/man1/ncap2.1
/sw/share/man/man1/ncbo.1
/sw/share/man/man1/ncrename.1
/sw/share/man/man1/ncecat.1
/sw/share/man/man1/nco.1
/sw/share/man/man1/ncremap.1
/sw/share/man/man1/nces.1
/sw/share/man/man1/ncatted.1
/sw/share/man/man1/ncrcat.1
/sw/share/man/man1/ncflint.1
/sw/share/man/man1/ncks.1
/sw/share/man/man1/ncap.1
/sw/share/man/man1/ncra.1
/sw/share/man/man1/ncwa.1
/sw/share/info
/sw/share/info/nco.info
/sw/share/info/nco.info-2
/sw/share/info/nco.info-3
/sw/share/info/nco.info-4
/sw/share/info/nco.info-1
/sw/share/doc
/sw/share/doc/nco
/sw/share/doc/nco/nco.png
/sw/share/doc/nco/README_Fedora.txt
/sw/share/doc/nco/nco.info
/sw/share/doc/nco/nces.txt
/sw/share/doc/nco/doe.jpg
/sw/share/doc/nco/ANNOUNCE
/sw/share/doc/nco/surfit.txt
/sw/share/doc/nco/LICENSE
/sw/share/doc/nco/alg_cf2_oog.pptx
/sw/share/doc/nco/endorsements.txt
/sw/share/doc/nco/ChangeLog
/sw/share/doc/nco/AUTHORS
/sw/share/doc/nco/nco.css
/sw/share/doc/nco/index.shtml
/sw/share/doc/nco/Makefile
/sw/share/doc/nco/logo_cog.png
/sw/share/doc/nco/nco.info-2
/sw/share/doc/nco/nco.texi
/sw/share/doc/nco/MANIFEST
/sw/share/doc/nco/tags_doc.sh
/sw/share/doc/nco/nco.info-3
/sw/share/doc/nco/logo_nco_stk.png
/sw/share/doc/nco/nco.info-4
/sw/share/doc/nco/surfit_2014.txt
/sw/share/doc/nco/valgrind.txt
/sw/share/doc/nco/netcdf4.sh
/sw/share/doc/nco/nco_ltr_spp.txt
/sw/share/doc/nco/build_hints.shtml
/sw/share/doc/nco/nsf.png
/sw/share/doc/nco/logo_srl.xcf
/sw/share/doc/nco/opendap.sh
/sw/share/doc/nco/acme.png
/sw/share/doc/nco/surfit_2013.txt
/sw/share/doc/nco/xmp
/sw/share/doc/nco/xmp/fgr1.eps
/sw/share/doc/nco/xmp/fgr2.eps
/sw/share/doc/nco/xmp/cmb_fl.sh
/sw/share/doc/nco/xmp/glb_avg.sh
/sw/share/doc/nco/xmp/ann_avg.sh
/sw/share/doc/nco/xmp/add_crd.sh
/sw/share/doc/nco/xmp/fgr3.eps
/sw/share/doc/nco/xmp/cmb_fl_grp.sh
/sw/share/doc/nco/xmp/mcc_grp.sh
/sw/share/doc/nco/xmp/crd.nco
/sw/share/doc/nco/xmp/gsl_rgr.nco
/sw/share/doc/nco/xmp/bi_interp.nco
/sw/share/doc/nco/xmp/grp.sh
/sw/share/doc/nco/xmp/mcc.sh
/sw/share/doc/nco/xmp/fgr1.txt
/sw/share/doc/nco/xmp/fgr3.txt
/sw/share/doc/nco/xmp/pmt_crd.sh
/sw/share/doc/nco/xmp/fgr2.txt
/sw/share/doc/nco/xmp/rgr.sh
/sw/share/doc/nco/xmp/fgr1.png
/sw/share/doc/nco/xmp/fgr2.png
/sw/share/doc/nco/xmp/fgr3.png
/sw/share/doc/nco/xmp/ann_avg_grp.sh
/sw/share/doc/nco/logo_pch.png
/sw/share/doc/nco/mpi.txt
/sw/share/doc/nco/README
/sw/share/doc/nco/TODO
/sw/share/doc/nco/ncap.txt
/sw/share/doc/nco/Makefile.am
/sw/share/doc/nco/logo_pch.xcf
/sw/share/doc/nco/beta.txt
/sw/share/doc/nco/nco_gsl.ods
/sw/share/doc/nco/man_srt.txt
/sw/share/doc/nco/nco_src_frg.txt
/sw/share/doc/nco/problems_old.shtml
/sw/share/doc/nco/nasa.png
/sw/share/doc/nco/alg_cf2_oog.png
/sw/share/doc/nco/soc_2006.txt
/sw/share/doc/nco/NEWS
/sw/share/doc/nco/VERSION
/sw/share/doc/nco/logo_srl.png
/sw/share/doc/nco/xmp_cesm.html
/sw/share/doc/nco/rtfm.txt
/sw/share/doc/nco/nco_authors.txt
/sw/share/doc/nco/logo_cog.odp
/sw/share/doc/nco/abs_igrid_2005.txt
/sw/share/doc/nco/dir
/sw/share/doc/nco/man_end.txt
/sw/share/doc/nco/cdtime.c
/sw/share/doc/nco/conda.txt
/sw/share/doc/nco/my-bib-macros.texi
/sw/share/doc/nco/milestones_old.shtml
/sw/share/doc/nco/highlights_old.shtml
/sw/share/doc/nco/nco.info-1
/sw/share/doc/nco/nco_news.shtml
/sw/share/doc/nco/logo_cog_nmr.png
/sw/share/doc/nco/help.txt
/sw/share/doc/nco/logo_cog_nmr.pdf
/sw/share/doc/nco/dods.sh
/sw/share/doc/nco/insure.txt
/sw/share/doc/nco/i18n.txt
/sw/share/doc/nco/logo_srl.svg
/sw/share/doc/nco/Makefile.in
/sw/share/doc/nco/TAG
/sw/share/doc/nco/debian.txt
/sw/share/doc/nco/nco.xcf
/sw/share/doc/nco/prs_pbl_old.shtml
/sw/share/doc/nco/netcdf.h.3.6.3
/sw/bin/nces
/sw/bin/ncea
/sw/bin/ncrcat
/sw/bin/ncdiff
If you have 'nco469-shlibs' installed, installing this nco fails like this:
But I'm not sure if there's any graceful way of handling this with the Fink dependency engine.
Also, the Shlibs: field only needs to be like this:
to mark the dylib as a private dylib. I can make this change locally before committing if no one has any suggestions on how to get a clean swap of the old nco469-shlibs package uninstalled.
What is in nco469-dev and nco469-shlibs that requires (new version) nco Conflicts/Replaces them? It sounds like we're scrapping headers and non-versioned .dylib links, and not building .a, and those are the usual -dev things. And by history, new nco*-shlibs have not C/R old ones.
Last edit: Daniel Macks 2017-12-10
The new parent (now only) package, has C/R on the old -dev and -shlibs. These are the goals of the current C/R:
1) C/R on -dev to remove any installed obsolete nco???-dev packages
2) C/R on -shlibs because versioned dylib has now changed the package that owns it.
But I just realized that the versioned dylib in (new) nco-4.7.0 has a different name than the versioned dylib in (old) nco-4.6.9. So the -shlibs package doesn't really need to be either Conflicted: or Replaced: due to a conflict. But it will be orphaned and need to be manually uninstalled later.
For the lack of any better solution I've removed the C/R on nco*-shlibs.
But I did change and better hightlight a little PostInstallScript that will display something like this:
*