Adapting FancyLibs & MinGW-Pkg from Debian 9 Stretch to 10 Buster, Mingw-7 to Mingw-8

Introduction

About every 2 years Debian introduces a new release.

At the time I'm writing this Debian Buster is on it's way from Full Freeze to GA.

The following notes shall provide the order in which FancyLibs shall be adapted and released for a new Debian release or maybe an Ubuntu release.

Adapting FancyLibs to new Debian Release

The steps per sub project are the same as described for "HelloWorld projects* in Adapting PBA to new Debian Release, with -o unix (before MinGW adaption) or -o "arch|unix|7" after MinGW adaption.

FancyLibs subproject rebuild order phase 1

The recommended order for phase 1 (before MinGW adaptions) is:

Project (subdir)Archs (-o parameter)Remarks generalStatus & Remarks stretch/busterVersion with Buster
fancylogarch|8
OK.
in pba-rpmrelease, call to rpmsign can be reduced to:
rpmsign --addsign -v --key-id 9...7 -D "%__gpg /usr/bin/gpg" ../foobar-1.2.3-1.src.rpm
1.0.3-5
cute-headersarch|8Data only, could be done anytimeOK1.6.1-9
fancylibsarch
OK. libstdc++-8-dev3.7.3-1
fancydb-Unix onlyOK0.6.5-7
fancydrawingarch
OK0.6.2-3
fancygpsdclientunix
OK0.4.3-5
fancyhttpdarch
OK0.8.0-2
fancylogdunix
OK0.1.0-3
fancylogview.Debian unix & amd64 onlyHalf OK: Does not build for armhf, maybe never did, libqt4-dev seems incomplete for arm0.3.0.5
fancypkcs11unixDebian unix & amd64 onlyHalf OK: Does not build for armhf, maybe never did0.4.1-1
fancypcscunixDebian unix & amd64 onlyHalf OK: Does not build for armhf, maybe never did0.2.5-2
fancymodbusunix
OK
Required minor adaption, with libmodbus-dev going from 3.0.6 to 3.1.4
0.2.4-3
fancysaxarch
OK0.6.1-7
fancyqt4arch
OK0.9.3-3
fancyqt4widgetsarch
OK0.5.2-2
fancysaneunix
OK, but libsane-dbg not available for buster. Reduced that to suggestion0.3.2-5
fancyqmiunixDebian unix & amd64 onlyHalf OK: Does not build for armhf, maybe never did0.2.1-5
fancyssl-toolsunix
OK?0.4.0-5

Tests with released Buster on 2019-08-02 showed that all unix builds work for amd64, most work for armhf.

MinGW-Pkg rebuilds

Stretch came with Mingw 7, Buster comes with Mingw 8, so we should rebuild that carefully, pulling up versions of libraries.

Order based on mingw 6 rebuild order

Project (mingw-pkg subdir pattern)Dep.Version in mingw-pkg MinGW-7 StretchVersion in mingw-pkg MinGW-8 BusterBuster status
(osslsigncode) ---ignored
mingw-w64-binutils / binutils-mingw-w64
- (2.27.90.20161231-1+7.4)- (2.31.1-11+8.3)provided by Debian now
(mingw-w64-libmysql)
- (6.1.11-1clazzespba1)- (6.1.11-1clazzespba2)obsolete since mingw-6, empty now
mingw-w64-libmariadb
--not required for now
mingw-w64-gcc-rt
6.3.0,
uses Debian's g++-mingw64-*
8.3.0 (-6+21.3~deb10u1),
uses Debian's g++-mingw64-*
OK
mingw-w64-zlibmingw-w64-gcc-rt1.2.111.2.11OK after rules changes:
common-build-indep to build-indep,
common-install-indep to install-indep
mingw-w64-opensslmingw-w64-zlib1.1.0f-01.1.1cOK
mingw-w64-libpngmingw-w64-zlib1.6.311.6.37OK?
libtool: link: x86_64-w64-mingw32-gcc -O2 -Wall -o .libs/pngfix.exe contrib/tools/pngfix.o ./.libs/libpng16.dll.a -lz -L/usr/x86_64-w64-mingw32/lib
libtool: error: Could not determine the host path corresponding to
libtool: error: '.../mingw-pkg/trunk/mingw-w64-deb/mingw-w64-libpng-1.6.37/build/.libs'
libtool: error: Continuing, but uninstalled executables may not work. ...
mingw-w64-libjpegmingw-w64-libpng9b9cOK
mingw-w64-libtiffmingw-w64-libjpeg4.0.84.0.10OK
mingw-w64-libmngmingw-w64-libjpeg2.0.3-22.0.3-3OK
mingw-w64-bzip2mingw-w64-gcc-rt1.0.6-31.0.6-4OK
mingw-w64-libboostmingw-w64-bzip2--- (ignored)
mingw-w64-libiconvmingw-w64-gcc-rt1.15-11.16-1OK
mingw-w64-libxml2mingw-w64-libiconv2.9.3-12.9.9-1OK
mingw-w64-gettextmingw-w64-libxml20.19.8-10.20.1-1

OK
New patch pthread_sigmask.m4.patch based on this post.

mingw-w64-qt4-qmake
4.8.7-0clazzespba14.8.7-1clazzespba0

OK
Builldep change: libstdc++-6-dev to libstdc++-6-dev

mingw-w64-qt4mingw-w64-qt4-qmake,
many of above
4.8.7-0clazzespba34.8.7-1clazzespba0

TBC ~
Building without SSL support since mingw-7.

Needed these:
dpkg --add-architecture i386
apt-get update
apt-get install wine32

mingw-w32-qt4-qmake
4.8.7-0clazzespba14.8.7-1clazzespba0Builldep change: libstdc++-6-dev to libstdc++-6-dev
OK
mingw-w32-qt4mingw-w32-qt4-qmake,
many of above
4.8.7-0clazzespba34.8.7-1clazzespba0TODO
Building without SSL support since mingw-7.
mingw-w64-jni-headers
1.6.0-4clazzespba51.6.0-4clazzespba6OK.
Using headers from OpenJDK-11 now.
Should we raise the version to 11?

TODO FancyLibs subproject rebuild order phase 3

The recommended order for phase 2 (before MinGW-8 adaptions) is:

Project (subdir)Archs (-o parameter)Buster StatusVersion with MinGW-8 package for BusterRemarks, changes
fancylog

- (arch|8)

OK

1.0.3-7
cute-headers- (arch|8)

OK

8_1.6.1-10
fancylibs- (arch|8)OK3.7.3-2

In debian-mingw-8/rules:
# see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
w32pcdir = /usr/i686-w64-mingw32/lib/pkgconfig
w64pcdir = /usr/x86_64-w64-mingw32/lib/pkgconfig
...
common-build-indep::
  cd $(w32builddir) && $(MAKE) arch="i686-w64-mingw32" PKG_CONFIG_LIBDIR=$(w32pcdir)
  cd $(w64builddir) && $(MAKE) arch="x86_64-w64-mingw32" PKG_CONFIG_LIBDIR=$(w64pcdir)

fancydrawing- (arch|8)OK
0.6.2-5
In debian-mingw-8/rules:
# see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=930492
w32pcdir = /usr/i686-w64-mingw32/lib/pkgconfig
w64pcdir = /usr/x86_64-w64-mingw32/lib/pkgconfig
...
common-build-indep::
  cd $(builddir) && PKG_CONFIG_LIBDIR=$(w64pcdir) $(MAKE) arch=$(arch)
  cd $(builddir32) && PKG_CONFIG_LIBDIR=$(w32pcdir) $(MAKE) arch=$(arch32)
fancygpsdclient- (unix|8)OK0.4.3-7debian-mingw-8/rules adapted like above
fancyhttpd- (arch|8)OK0.8.0-3debian-mingw-8/rules adapted like above
fancylogd- (unix|8)OK0.1.0-6

debian-mingw-8/rules adapted like above

Also had to add FANCYLOGD_COMMON_API in fancylogdVersion.cpp

fancylogview- (nsis directory)OK0.3.0.6Deferred, depends on QT
fancypkcs11- (unix only)--Probably never build for MinGW, despite debian-mingw-?/ directories
fancypcsc- (arch|8)OK0.2.5-4
fancymodbus- (unix only)--
fancysax- (arch|8)OK0.6.1-9debian-mingw-8/rules adapted like above
fancyqt4- (arch|8)OK0.9.3-5debian-mingw-8/rules adapted like above
fancyqt4widgets- (arch|8)OK0.5.2-3debian-mingw-8/rules adapted like above
fancysane- (unix only)--
fancyqmi- (unix only)--
fancyssl-tools- (arch|8)OK0.4.0-6debian-mingw-8/rules adapted like above

Obsolete subdirs

Project (subdir)Remarks

base64

never even built for stretch
gpsfake-runnershell scripts only
jnixnever even built for stretch
fancyxmlsockLooks lke old experimental code now in fancysock