[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Proposed MBF: wxwidgets3.2 transition



On Thu, 15 Sep 2022, gregor herrmann wrote:

On Wed, 14 Sep 2022 20:48:30 +0200, gregor herrmann wrote:

libalien-wxwidgets-perl (.69+dfsg-4 uploaded to experimental.

(0.69 …)

Next step: check what libwx-perl [0] says

Building libwx-perl against the libalien-wxwidgets-perl in
experimental ends rather quickly with:

  dh_auto_configure
	/usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -ffile-prefix-map=/build/libwx-perl-0.9932=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -ffile-prefix-map=/build/libwx-perl-0.9932=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -Wl,-z,now"
No such 'link' library: 'adv' at /build/libwx-perl-0.9932/build/Wx/build/MakeMaker.pm line 212.

======================================================================
For installation instructions and further help please see
docs/INSTALL.pod

For command line switches help use:
perl Makefile.PL --help
======================================================================

Looks like we need patch number 14 in debian/patches :)


First step:

% grep -r adv Makefile.PL build
Makefile.PL:    WX_CORE_LIB       => 'adv core base',
build/Wx/build/MakeMaker.pm:If not spedified, defaults to 'adv html core net base' for compatibility.
build/Wx/build/MakeMaker.pm:  $args{WX_CORE_LIB} ||= 'adv html core net base';


Second step:

https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.0/docs/changes.txt
3.1.2: (released 2018-12-10)
- wxAdvanced library was merged into wxCore, simply remove all references
 to "adv" from your build system, it is not needed any longer.

Third step:

Alright, patching out 'adv' from Makefile.PL and build/Wx/build/MakeMaker.pm
is not enough, now the build fails with

  dh_auto_configure
	/usr/bin/perl Makefile.PL INSTALLDIRS=vendor "OPTIMIZE=-g -O2 -ffile-prefix-map=/build/libwx-perl-0.9932=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2" "LD=x86_64-linux-gnu-gcc -g -O2 -ffile-prefix-map=/build/libwx-perl-0.9932=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -Wl,-z,now"
Checking if your kit is complete...
Looks good
'WX' is not a known MakeMaker parameter name.
Writing MYMETA.yml and MYMETA.json
Writing MYMETA.yml and MYMETA.json
Writing MYMETA.yml and MYMETA.json
Writing MYMETA.yml and MYMETA.json
ERROR from evaluation of /build/libwx-perl-0.9932/ext/Makefile.PL: ERROR from evaluation of /build/libwx-perl-0.9932/ext/aui/Makefile.PL: No such 'link' library: 'adv' at /build/libwx-perl-0.9932/build/Wx/build/MakeMaker.pm line 212.
Writing MYMETA.yml and MYMETA.json

======================================================================
For installation instructions and further help please see
docs/INSTALL.pod

For command line switches help use:
perl Makefile.PL --help
======================================================================


And indeed, there's a lot of 'adv' in other files:

ext/ribbon/lib/Wx/Ribbon.pm:    Wx::load_dll( 'adv' );
ext/ribbon/Makefile.PL:                 WX_CORE_LIB  => 'ribbon adv core base',
ext/aui/lib/Wx/AUI.pm:Wx::load_dll( 'adv' );
ext/aui/Makefile.PL:                 WX_CORE_LIB  => 'aui adv core base',
ext/calendar/Calendar.pm:Wx::load_dll( 'adv' );
ext/calendar/Makefile.PL:                 WX_CORE_LIB  => 'adv core base',
ext/grid/lib/Wx/Grid.pm:Wx::load_dll( 'adv' );
ext/grid/Makefile.PL:                 WX_CORE_LIB  => 'adv core base',
ext/propgrid/lib/Wx/PropertyGrid.pm:    Wx::load_dll( 'adv' );
ext/propgrid/Makefile.PL:                 WX_CORE_LIB  => 'propgrid adv core base',
ext/propgrid/PropertyGrid.xs:#include <wx/propgrid/advprops.h>
ext/dataview/DataView.pm:Wx::load_dll( 'adv' );
ext/dataview/Makefile.PL:                 WX_CORE_LIB  => 'adv core base',
ext/xrc/lib/Wx/XRC.pm:Wx::load_dll( 'adv' );
ext/xrc/Makefile.PL:                 WX_CORE_LIB     => 'xrc xml html adv core base',
ext/richtext/lib/Wx/RichText.pm:Wx::load_dll( 'adv' );
ext/richtext/Makefile.PL:                 WX_CORE_LIB  => 'richtext html xml adv core base',
interface/wx/infobar.h:    @library{wxadv}
interface/wx/bannerwindow.h:    @library{wxadv}
interface/wx/grid/gridtablebase.h:    @library{wxadv}
interface/wx/richtooltip.h:    @library{wxadv}
interface/wx/dataview/dataviewvirtuallistmodel.h:    @library{wxadv}
interface/wx/dataview/dataviewliststore.h:    @library{wxadv}
interface/wx/dataview/dataviewlistctrl.h:    @library{wxadv}
lib/Wx/Loader.pod:    for my $dll ( qw( base core adv ) ) {
lib/Wx/Loader.pod:    for my $dll ( qw( base core adv ) ) {
lib/Wx/Loader.pod:      for my $dll ( qw( base core adv ) ) {


Fourth step:

Let's get rid of all WX_CORE_LIB … adv in all Makefile.PLs.

And we are getting further, configure passes, then the actual build
fails:

Event.c: In function 'void XS_Wx__PaintEvent_new(PerlInterpreter*, CV*)':
Event.c:3883:37: error: 'wxPaintEvent::wxPaintEvent(wxWindowBase*)' is private within this context
3883 |         RETVAL = new wxPaintEvent(id);
     |                                     ^
In file included from Event.c:25:
/usr/include/wx-3.2/wx/event.h:2423:14: note: declared private here
2423 |     explicit wxPaintEvent(wxWindowBase* window = NULL);
     |              ^~~~~~~~~~~~
Event.c:3883:35: error: invalid conversion from 'wxWindowID' {aka 'int'} to 'wxWindowBase*' [-fpermissive]
3883 |         RETVAL = new wxPaintEvent(id);
     |                                   ^~
     |                                   |
     |                                   wxWindowID {aka int}
/usr/include/wx-3.2/wx/event.h:2423:41: note:   initializing argument 1 of 'wxPaintEvent::wxPaintEvent(wxWindowBase*)'
2423 |     explicit wxPaintEvent(wxWindowBase* window = NULL);
     |                                         ^
make[2]: *** [Makefile:452: Event.o] Error 1
make[2]: *** Waiting for unfinished jobs....
Html.c: In function 'void XS_Wx__HtmlDCRenderer_Render(PerlInterpreter*, CV*)':
Html.c:1681:30: error: no matching function for call to 'wxHtmlDCRenderer::Render(int&, int&, wxArrayInt&, int&, int&, int&)'
1681 |         RETVAL = THIS->Render(x, y, pagebreaks, from, dont_render, to);
     |                  ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/wx-3.2/wx/html/helpwnd.h:32,
                from /usr/include/wx-3.2/wx/html/helpfrm.h:31,
                from /usr/include/wx-3.2/wx/html/helpctrl.h:19,
                from Html.c:1110:
/usr/include/wx-3.2/wx/html/htmprint.h:78:10: note: candidate: 'void wxHtmlDCRenderer::Render(int, int, int, int)'
  78 |     void Render(int x, int y, int from = 0, int to = INT_MAX);
     |          ^~~~~~
/usr/include/wx-3.2/wx/html/htmprint.h:78:10: note:   candidate expects 4 arguments, 6 provided
make[4]: *** [Makefile:346: Html.o] Error 1
make[4]: Leaving directory '/build/libwx-perl-0.9932/ext/html'
make[3]: *** [Makefile:499: subdirs] Error 2
make[3]: Leaving directory '/build/libwx-perl-0.9932/ext'
make[2]: *** [Makefile:679: subdirs] Error 2
Warning: duplicate function definition 'GetSelection' detected in XS/ComboBox.xs, line 184
Warning: duplicate function definition 'SetSelection' detected in XS/ComboBox.xs, line 203
Constant.c:3156:13: warning: wxPG_FILE_DIALOG_TITLE is deprecated. Use wxPG_DIALOG_TITLE instead.
3156 |     wxPli_make_const_string( wxPG_FILE_DIALOG_TITLE );         // propgrid
     |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Constant.c:3157:13: warning: wxPG_DIR_DIALOG_MESSAGE is deprecated. Use wxPG_DIALOG_TITLE instead.
3157 |     wxPli_make_const_string( wxPG_DIR_DIALOG_MESSAGE );        // propgrid
     |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Constant.c: In function 'double constant(const char*, int)':
Constant.c:2045:8: error: 'wxLOCALE_CONV_ENCODING' was not declared in this scope
2045 |     r( wxLOCALE_CONV_ENCODING );        // locale
     |        ^~~~~~~~~~~~~~~~~~~~~~
Constant.c:792:16: note: in definition of macro 'r'
 792 |         return n;
     |                ^
Constant.c:2368:8: error: 'wxNB_FLAT' was not declared in this scope; did you mean 'wxTB_FLAT'?
2368 |     r( wxNB_FLAT );                     // notebook
     |        ^~~~~~~~~
Constant.c:792:16: note: in definition of macro 'r'
 792 |         return n;
     |                ^
Constant.c:2795:8: error: 'wxTB_3DBUTTONS' was not declared in this scope; did you mean 'wxTR_NO_BUTTONS'?
2795 |     r( wxTB_3DBUTTONS );                // toolbar
     |        ^~~~~~~~~~~~~~
Constant.c:792:16: note: in definition of macro 'r'
 792 |         return n;
     |                ^
Constant.c:2896:8: error: 'wxTINY_CAPTION_HORIZ' was not declared in this scope; did you mean 'wxTINY_CAPTION'?
2896 |     r( wxTINY_CAPTION_HORIZ );          // miniframe
     |        ^~~~~~~~~~~~~~~~~~~~
Constant.c:792:16: note: in definition of macro 'r'
 792 |         return n;
     |                ^
Constant.c:2897:8: error: 'wxTINY_CAPTION_VERT' was not declared in this scope; did you mean 'wxTINY_CAPTION'?
2897 |     r( wxTINY_CAPTION_VERT );           // miniframe
     |        ^~~~~~~~~~~~~~~~~~~
Constant.c:792:16: note: in definition of macro 'r'
 792 |         return n;
     |                ^
make[2]: *** [Makefile:452: Constant.o] Error 1
mv Controls.xsc Controls.c
make[2]: Leaving directory '/build/libwx-perl-0.9932'
dh_auto_build: error: make -j4 returned exit code 2



So, hm, yeah, I guess this needs some more fixes and some more
knowledge about wxWidegts …

Thanks for your work so far.  I'll try to take a stab at it...

Scott

Reply to: