Opened 10 years ago

Closed 10 years ago

#47339 closed update (fixed)

p5-alien-wxwidgets, p5-wx: update to latest versions

Reported by: dbevans (David B. Evans) Owned by: mojca (Mojca Miklavec)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: ryandesign (Ryan Carsten Schmidt)
Port: p5-alien-wxwidgets p5-wx

Description

The latest versions include improved support for wxWidgets-3.* and various build fixes for recent Mac OSX versions.

p5-alien-wxwidgets seems to have been updated (port version: 0.65, new version: 0.67)

Revision history for Perl extension Alien::wxWidgets.

0.66  Tue Mar 10 2015
    - add support for wxWidgets 3.0.1 and 3.0.2
    - make default wxWidgets 3.0.2
    - graphics context included now default on Win32
    - build on MacOSX - xcode 5.x/6.x

p5-wx seems to have been updated (port version: 0.9923, new version: 0.9927)

Revision history for Perl extension Wx.

0.9927 Thu Mar 26 2015
    - Fix broken wxWidgets 2.8 builds

0.9926 Tue Mar 10 2015
    - pause indexing fix
    
0.9925 Tue Mar 10 2015
    - pause indexing fix
    
0.9924 Tue Mar 10 2015
    - added wxTimer::StartOnce
    - some missing wxGrid constants added
    - fixed Wx::AUI events broken since wxWidgets 2.9.5
    - rt96136 - added GetContentScaleFactor to Wx::DC && Wx::Window
    - rt99038 - MACOSX_DEPLOYMENT_TARGET comparison fixed in Wx build
    - wxMenuItem::SetBitmap available on OSX
    - added some missing TextEntry methods to wxComboBox
    - rt102269 - fix option handling

Change History (7)

comment:1 Changed 10 years ago by mojca (Mojca Miklavec)

Cc: ryandesign@… added

I would like to ask whether the patch for p5-wx is still needed on 10.10 (#45120, #44640).

comment:2 Changed 10 years ago by mojca (Mojca Miklavec)

p5-alien-wxwidgets upgraded in r134666.

comment:3 Changed 10 years ago by mojca (Mojca Miklavec)

It seems to me that the problem with 10.10 has been fixed, but the following chunk of code seems problematic and I need some help with it:

my $tools43 = '/Applications/Xcode.app/Contents/Developer/Tools';
my $restoolpath = ( -d $tools43 ) ? $tools43 : '/Developer/Tools';

sub get_flags {
  my $this = shift;
  my %config = $this->SUPER::get_flags;
  
  if ($config{CC} =~ /clang\+\+/ || $config{LD} =~ /clang\+\+/) {
	my $sdkrepl = '';
	for my $sdkversion ( qw( 10.9 10.8 10.7 10.6 ) ) {
	  my $macossdk = qq(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${sdkversion}.sdk);
	  if( -d $macossdk ) {
		$sdkrepl = 'clang++ -isysroot ' . $macossdk . ' -stdlib=libc++';
		last;
	  }
	}
	if ( $sdkrepl ) {
	  $config{CC} =~ s/clang\+\+/$sdkrepl/g;
	  $config{LD} =~ s/clang\+\+/$sdkrepl/g;
	}
  }
  return %config;
}

First of all there is absolutely no guarantee that users installed Xcode under /Applications/Xcode.app/Contents/Developer/Tools (I didn't). My workaround so far was to set

my $restoolpath = '/usr/bin';

But I don't understand the rest of the code either. Is it trying to force libc++ on 10.6, where setting -isysroot /path/to/sdk will make sure that it won't work??? And why does it only list 10.6 - 10.9?

comment:4 Changed 10 years ago by mojca (Mojca Miklavec)

David, I need your help. The p5.20-wx port doesn't build with trace mode at all. Not even the old one. There is some hardcoded gcc in cpp/wxPerl.osx/Makefile, but even if I replace it with $(CC), that one translates into cc instead of clang.

And then it fails with

/usr/bin/Rez -d __DARWIN__ -useDF -o build/wxPerl.rsrc  wxPerl.r
### /usr/bin/Rez - SysError -5000 during create of "build/wxPerl.rsrc".
### /usr/bin/Rez - Fatal error trying to open the resource file "build/wxPerl.rsrc" for writing.
Fatal Error!
### /usr/bin/Rez - Fatal Error, can't recover.
### /usr/bin/Rez - Since errors occurred, build/wxPerl.rsrc's resource fork was not written.
make[1]: *** [build/wxPerl.app/Contents/Resources/wxPerl.rsrc] Error 3
make[1]: Leaving directory `/path/to/p5.20-wx/work/Wx-0.9923/cpp/wxPerl.osx'
make: *** [wxPerl] Error 2
make: *** Waiting for unfinished jobs....
make: Leaving directory `/path/to/p5.20-wx/work/Wx-0.9923'
Command failed:  cd "/path/to/p5.20-wx/work/Wx-0.9923" && /usr/bin/make -j2 -w all 

...

The following files would have been hidden from the build system by trace mode if they existed:
  /.vol/234881027/82461890/wxPerl.rsrc
  /usr/gnu/include
  /usr/local/lib/libcache.dylib
  /usr/local/lib/libcommonCrypto.dylib
  /usr/local/lib/libcompiler_rt.dylib
  /usr/local/lib/libcopyfile.dylib
  /usr/local/lib/libdispatch.dylib
  /usr/local/lib/libdnsinfo.dylib
  /usr/local/lib/libdyld.dylib
  /usr/local/lib/libkeymgr.dylib
  /usr/local/lib/liblaunch.dylib
  /usr/local/lib/libmacho.dylib
  /usr/local/lib/libmathCommon.A.dylib
  /usr/local/lib/libquarantine.dylib
  /usr/local/lib/libremovefile.dylib
  /usr/local/lib/libsystem_blocks.dylib
  /usr/local/lib/libsystem_c.dylib

comment:5 in reply to:  3 Changed 10 years ago by dbevans (David B. Evans)

Replying to mojca@…:

It seems to me that the problem with 10.10 has been fixed, but the following chunk of code seems problematic and I need some help with it:

my $tools43 = '/Applications/Xcode.app/Contents/Developer/Tools';
my $restoolpath = ( -d $tools43 ) ? $tools43 : '/Developer/Tools';

This is just setting $restoolpath to whichever of these two paths exist as a directory. These are the expected installation paths for Xcode in a standard default install. /Developer/Tools was used in older version, new versions (4.3 on I'm guessing based on the variable name) use /Applications/Xcode.app/Contents/Developer/Tools. This won't work if you have placed Xcode in a non-standard location. However, using /usr/bin will only work if xcode-select has been properly set to link to your install location. I think it would be better to figure a way to find the absolute path to the proper directory. Normally MacPorts does this for you.

sub get_flags {

my $this = shift; my %config = $this->SUPER::get_flags;

I think the code enclosed in the if statement following can just be removed. It's trying to fixup $config{CC} and $config{LD} for each of the listed versions assuming your using a vanilla install of perl. Our perl versions set these config values correctly so nothing to do here -- just return %config.

Try the following to see values of these flags (The example was run on Mavericks)

$ perl5.16 -V:cc -V:ld
cc='/usr/bin/clang';
ld='env MACOSX_DEPLOYMENT_TARGET=10.9 /usr/bin/clang';

Remove this:

if ($config{CC} =~ /clang\+\+/
$config{LD} =~ /clang\+\+/) {

my $sdkrepl = ; for my $sdkversion ( qw( 10.9 10.8 10.7 10.6 ) ) {

my $macossdk = qq(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${sdkversion}.sdk); if( -d $macossdk ) {

$sdkrepl = 'clang++ -isysroot ' . $macossdk . ' -stdlib=libc++'; last;

}

} if ( $sdkrepl ) {

$config{CC} =~ s/clang\+\+/$sdkrepl/g; $config{LD} =~ s/clang\+\+/$sdkrepl/g;

}

}

Keep this

return %config;

} }}}

First of all there is absolutely no guarantee that users installed Xcode under /Applications/Xcode.app/Contents/Developer/Tools (I didn't). My workaround so far was to set

my $restoolpath = '/usr/bin';

But I don't understand the rest of the code either. Is it trying to force libc++ on 10.6, where setting -isysroot /path/to/sdk will make sure that it won't work??? And why does it only list 10.6 - 10.9?

See above.

comment:6 in reply to:  4 Changed 10 years ago by dbevans (David B. Evans)

Replying to mojca@…:

David, I need your help. The p5.20-wx port doesn't build with trace mode at all. Not even the old one. There is some hardcoded gcc in cpp/wxPerl.osx/Makefile, but even if I replace it with $(CC), that one translates into cc instead of clang.

You can't count on our CC being passed correctly to this lower level Makefile. I'd just patch this Makefile to replace gcc with a unique temporary name and then use reinplace to replace it with the correct value in post-patch.

And then it fails with

/usr/bin/Rez -d __DARWIN__ -useDF -o build/wxPerl.rsrc  wxPerl.r
### /usr/bin/Rez - SysError -5000 during create of "build/wxPerl.rsrc".
### /usr/bin/Rez - Fatal error trying to open the resource file "build/wxPerl.rsrc" for writing.
Fatal Error!
### /usr/bin/Rez - Fatal Error, can't recover.
### /usr/bin/Rez - Since errors occurred, build/wxPerl.rsrc's resource fork was not written.
make[1]: *** [build/wxPerl.app/Contents/Resources/wxPerl.rsrc] Error 3
make[1]: Leaving directory `/path/to/p5.20-wx/work/Wx-0.9923/cpp/wxPerl.osx'
make: *** [wxPerl] Error 2
make: *** Waiting for unfinished jobs....
make: Leaving directory `/path/to/p5.20-wx/work/Wx-0.9923'
Command failed:  cd "/path/to/p5.20-wx/work/Wx-0.9923" && /usr/bin/make -j2 -w all 

Permissions issue?

}}}

comment:7 Changed 10 years ago by mojca (Mojca Miklavec)

Resolution: fixed
Status: newclosed

Thank you. I committed r134714. But the trace mode still fails.

Note: See TracTickets for help on using tickets.