/
Annotated mingw-6 changes to clazzes-org debian packages
Annotated mingw-6 changes to clazzes-org debian packages
summarizes the most important changes to debian packages
debian/control
Key changes:
- mingw-w32-pkg-config and mingw-w64-pkg-config are deprecated, use mingw-w64-tools, which contains tools for both architectures (w32/w64).
mingw-w32-gcc and mingw-w64-gcc are deprecated, simply use g++-mingw-w64, which contains all compilers for both architectures (w32/w64).
- Split packages to dev and runtime package
- Root runtime dependencies are mingw-w64-gcc-rt resp. mingw-w64-g++-rt and mingw-w32-gcc-rt resp. mingw-w32-g++-rt
- Root development dependencies are mingw-w64-i686-dev (w32) and mingw-w64-x86-64-dev (w64)
- Correctly refer to upstream dev/runtime packages like mingw-w64-zlib, mingw-w64-zlib-dev and other likewise dependencies of your package (not shown in the example below...)
- Depend on debhelper >= 9
- Distribution is jessie, generation is 6
Index: debian/control =================================================================== --- debian/control (.../mingw-w64-libiconv-1.13.1) (Revision 560) +++ debian/control (.../mingw-w64-libiconv-1.14) (Arbeitskopie) @@ -2,18 +2,28 @@ Priority: extra Section: devel Maintainer: Wolfgang Glas <wolfgang.glas@iteg.at> -Build-Depends: cdbs, debhelper (>> 5), mingw-w32-gcc, mingw-w64-gcc +Build-Depends: cdbs, debhelper (>= 9), g++-mingw-w64, mingw-w64-tools XBCS-PBA-Category: mingw -XBCS-PBA-Generation: 5 -XBCS-PBA-Distributions: squeeze wheezy +XBCS-PBA-Generation: 6 +XBCS-PBA-Distributions: jessie XBCS-PBA-Repositories: deb.clazzes.org Package: mingw-w64-libiconv Architecture: all -Depends: mingw-w64-gcc +Depends: mingw-w64-gcc-rt Description: This is the libiconv port to mingw-w64. +Package: mingw-w64-libiconv-dev +Architecture: all +Depends: mingw-w64-x86-64-dev, mingw-w64-libiconv (= ${Source-Version}) +Description: This package contain header files and import libraries of the libiconv port to mingw-w64. + Package: mingw-w32-libiconv Architecture: all -Depends: mingw-w32-gcc +Depends: mingw-w32-gcc-rt Description: This is the libiconv port to mingw-w32. + +Package: mingw-w32-libiconv-dev +Architecture: all +Depends: mingw-w64-i686-dev, mingw-w32-libiconv (= ${Source-Version}) +Description: This package contain header files and import libraries of the libiconv port to mingw-w32.
Result: http://svn.clazzes.org/svn/mingw-pkg/trunk/mingw-w64-deb/mingw-w64-libiconv-1.14/debian/control
debian/rules
Key changes:
- Split deb and runtime packages.
- Do not include /usr/share/cdbs/1/rules/debhelper.mk
- Use dh wildcard rule as described e.g. in https://wiki.debian.org/IntroDebianPackaging
- Define DEB_UPSTREAM_VERSION on your own as seen below, if you need it. (Not needed for most packages...)
- Move $(prefix)/lib and $(prefix)/include to $(devprefix) (likewise for w32...)
- IMPORTANT: Add debian/devhost.txt.gz, debian/*.substvars and debian/*.debhelper.log to the list of cleaned files. (If you don't do this, you will suffer from really crazy effects on rebuilds!!!)
- Do not clean debian/compat, add it to the svn repository.
The fiddling with libiconv.pc is specific to the libiconv example, most modern autoconf packages come with a suitable *.pc file installed in the correct location.
Index: debian/rules =================================================================== --- debian/rules (.../mingw-w64-libiconv-1.13.1) (Revision 560) +++ debian/rules (.../mingw-w64-libiconv-1.14) (Arbeitskopie) @@ -1,10 +1,11 @@ #!/usr/bin/make -f -include /usr/share/cdbs/1/rules/debhelper.mk +DEB_UPSTREAM_VERSION ?= $(shell dpkg-parsechangelog | sed -rne 's/^Version: ([0-9.]+)[-+].*$$/\1/p') prefix=/usr package = mingw-w64-libiconv +devpackage = mingw-w64-libiconv-dev target = x86_64-w64-mingw32 prefix = /usr/$(target) docdir = debian/$(package)/usr/share/doc/$(package) @@ -12,6 +13,7 @@ DESTDIR = $(shell /bin/pwd)/debian/$(package) package32 = mingw-w32-libiconv +devpackage32 = mingw-w32-libiconv-dev target32 = i686-w64-mingw32 prefix32 = /usr/$(target32) docdir32 = debian/$(package32)/usr/share/doc/$(package32) @@ -24,11 +26,23 @@ DEB_DH_ALWAYS_EXCLUDE := .svn + +%: + dh $@ + # do not strip anything. # call 'strip' on a mingw lib*.a file causes the ranlib information to # be discarded rendering the libraries useless. -DEB_DH_STRIP_ARGS := -Xlib +override_dh_strip: +override_dh_shlibdeps: + +export DEB_CFLAGS_MAINT_SET = -O2 -Wall +export DEB_LDFLAGS_MAINT_SET = + +build-indep: common-build-indep +install-indep: common-install-indep + INSTALL_PROGRAM = install common-build-indep:: @@ -44,7 +58,7 @@ clean:: rm -f compile common-install-indep common-build-indep - rm -rf *~ debian/$(package) debian/$(package32) debian/*~ debian/files* debian/substvars debian/compat + rm -rf *~ debian/$(package) debian/$(devpackage) debian/$(package32) debian/$(devpackage32) debian/*~ debian/files* debian/substvars debian/devhost.txt.gz debian/*.substvars debian/*.debhelper.log rm -rf $(builddir) rm -rf $(builddir32) @@ -55,15 +69,23 @@ common-install-indep:: rm -rf debian/$(package) + rm -rf debian/$(devpackage) mkdir debian/$(package) cd $(builddir) && make DESTDIR=$(DESTDIR) install - cd debian/$(package)$(prefix)/lib; ln -s ../bin/libiconv-2.dll libiconv.dll + mkdir -p debian/$(devpackage)/usr/$(target) + mv debian/$(package)/usr/$(target)/include debian/$(devpackage)/usr/$(target) + mv debian/$(package)/usr/$(target)/lib debian/$(devpackage)/usr/$(target) + rm -rf debian/$(package)/usr/$(target)/share rm -rf debian/$(package32) + rm -rf debian/$(devpackage32) mkdir debian/$(package32) cd $(builddir32) && make DESTDIR=$(DESTDIR32) install - cd debian/$(package32)$(prefix32)/lib; ln -s ../bin/libiconv-2.dll libiconv.dll - mkdir -p debian/$(package)/usr/x86_64-w64-mingw32/lib/pkgconfig - sed -e 's/__VERSION__/$(DEB_UPSTREAM_VERSION)/' -e 's/__arch__/x86_64-w64-mingw32/' < pc/libiconv.pc > debian/$(package)/usr/x86_64-w64-mingw32/lib/pkgconfig/libiconv.pc - mkdir -p debian/$(package32)/usr/i686-w64-mingw32/lib/pkgconfig - sed -e 's/__VERSION__/$(DEB_UPSTREAM_VERSION)/' -e 's/__arch__/i686-w64-mingw32/' < pc/libiconv.pc > debian/$(package32)/usr/i686-w64-mingw32/lib/pkgconfig/libiconv.pc + mkdir -p debian/$(devpackage32)/usr/$(target32) + mv debian/$(package32)/usr/$(target32)/include debian/$(devpackage32)/usr/$(target32) + mv debian/$(package32)/usr/$(target32)/lib debian/$(devpackage32)/usr/$(target32) + rm -rf debian/$(package32)/usr/$(target32)/share + mkdir -p debian/$(devpackage)/usr/$(target)/lib/pkgconfig + sed -e 's/__VERSION__/$(DEB_UPSTREAM_VERSION)/' -e 's/__arch__/$(target)/' < pc/libiconv.pc > debian/$(devpackage)/usr/$(target)/lib/pkgconfig/libiconv.pc + mkdir -p debian/$(devpackage32)/usr/$(target32)/lib/pkgconfig + sed -e 's/__VERSION__/$(DEB_UPSTREAM_VERSION)/' -e 's/__arch__/$(target32)/' < pc/libiconv.pc > debian/$(devpackage32)/usr/$(target32)/lib/pkgconfig/libiconv.pc touch common-install-indep
Result: http://svn.clazzes.org/svn/mingw-pkg/trunk/mingw-w64-deb/mingw-w64-libiconv-1.14/debian/rules
debian/compat
Please add a debian/compat file to svn with a singel line containing the number '9' and never delete this file with
Index: debian/compat =================================================================== --- debian/compat (.../mingw-w64-libiconv-1.13.1) (Revision 0) +++ debian/compat (.../mingw-w64-libiconv-1.14) (Revision 609) @@ -0,0 +1 @@ +9
Portable projects examples
- Simple app project: http://svn.clazzes.org/svn/pba/trunk/pba-helloworld-portable/ (mingw-6 applied and released as of 0.3.2)
- Simple lib project: http://svn.clazzes.org/svn/pba/trunk/pba-hellolib-portable/ (mingw-6 TBD)
- Multimodule app project: http://svn.clazzes.org/svn/pba/trunk/pba-hellobigworld-portable/ (mingw-6 TBD)
, multiple selections available,
Related content
debian-mingw-5 to debian-mingw-6 migration snippets
debian-mingw-5 to debian-mingw-6 migration snippets
More like this
Adapting FancyLibs & MinGW-Pkg from Debian 10 Buster to 11 Bullseye, MinGW-8 to MinGW-9
Adapting FancyLibs & MinGW-Pkg from Debian 10 Buster to 11 Bullseye, MinGW-8 to MinGW-9
More like this
Adapting FancyLibs from Debian 11 Bullseye to 12 Bookworm, later eventually MinGW-9 to MinGW-10
Adapting FancyLibs from Debian 11 Bullseye to 12 Bookworm, later eventually MinGW-9 to MinGW-10
More like this
mingw 6 rebuild order
mingw 6 rebuild order
More like this
Postfixadmin trunk packaged Clazzes.Org style
Postfixadmin trunk packaged Clazzes.Org style
More like this
Adapting PBA to new Debian Release
Adapting PBA to new Debian Release
More like this