Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bleadperl v5.15.2-9-gab1478f breaks GFUJI/Mouse-0.93.tar.gz #11603

Closed
p5pRT opened this issue Aug 26, 2011 · 15 comments
Closed

Bleadperl v5.15.2-9-gab1478f breaks GFUJI/Mouse-0.93.tar.gz #11603

p5pRT opened this issue Aug 26, 2011 · 15 comments

Comments

@p5pRT
Copy link

p5pRT commented Aug 26, 2011

Migrated from rt.perl.org#97850 (status was 'resolved')

Searchable as RT97850$

@p5pRT
Copy link
Author

p5pRT commented Aug 26, 2011

From @andk

Git bisect


  commit ab1478f
  Author​: Steffen Mueller <smueller@​cpan.org>
  Date​: Fri Aug 12 17​:28​:33 2011 +0200

  Make XSUBs static by default

  At the same time, do not include "STATIC" in XSPROTO and
  get rid of the XSPROTO_INTERNAL and XSPROTO_EXTERNAL macros
  because of that. This allows Devel​::PPPort to continue doing
  its evil typedef'ing magic using XSPROTO.

Fail diagnostics


  cc -c "-I." "-I." -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/inc
  lude -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -Wno-comment -O2 -g -
  DVERSION=\"0.93\" -DXS_VERSION=\"0.93\" -o xs-src/MouseAccessor.o -fPIC "-I/home
  /src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/x86_
  64-linux/CORE" -DUSE_PPPORT xs-src/MouseAccessor.c
  xs-src/MouseAccessor.xs​:343​:13​: warning​: ‘XS_Mouse_simple_reader’ defined but no
  t used [-Wunused-function]
  xs-src/MouseAccessor.xs​:372​:13​: warning​: ‘XS_Mouse_simple_writer’ defined but no
  t used [-Wunused-function]
  xs-src/MouseAccessor.xs​:419​:13​: warning​: ‘XS_Mouse_inheritable_class_accessor’ d
  efined but not used [-Wunused-function]
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/bin/p
  erl "-Iinc" /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df
  5/lib/5.15.2/ExtUtils/xsubpp -typemap /home/src/perl/repoperls/installed-perls/
  perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/ExtUtils/typemap xs-src/MouseUtil.xs >
  xs-src/MouseUtil.xsc && mv xs-src/MouseUtil.xsc xs-src/MouseUtil.c
  cc -c "-I." "-I." -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/inc
  lude -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -Wno-comment -O2 -g -
  DVERSION=\"0.93\" -DXS_VERSION=\"0.93\" -o xs-src/MouseUtil.o -fPIC "-I/home/src
  /perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/x86_64-l
  inux/CORE" -DUSE_PPPORT xs-src/MouseUtil.c
  ./mouse.h​:156​:13​: warning​: ‘XS_Mouse_simple_reader’ declared ‘static’ but never
  defined [-Wunused-function]
  ./mouse.h​:157​:13​: warning​: ‘XS_Mouse_simple_writer’ declared ‘static’ but never
  defined [-Wunused-function]
  ./mouse.h​:158​:13​: warning​: ‘XS_Mouse_simple_clearer’ declared ‘static’ but never
  defined [-Wunused-function]
  ./mouse.h​:159​:13​: warning​: ‘XS_Mouse_simple_predicate’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:163​:13​: warning​: ‘XS_Mouse_accessor’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:164​:13​: warning​: ‘XS_Mouse_reader’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:165​:13​: warning​: ‘XS_Mouse_writer’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:167​:13​: warning​: ‘XS_Mouse_inheritable_class_accessor’ declared ‘static’ but never defined [-Wunused-function]
  /home/sand/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/bin/perl "-Iinc" /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/ExtUtils/xsubpp -typemap /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/ExtUtils/typemap xs-src/Mouse.xs > xs-src/Mouse.xsc && mv xs-src/Mouse.xsc xs-src/Mouse.c
  cc -c "-I." "-I." -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Wall -W -Wno-comment -O2 -g -DVERSION=\"0.93\" -DXS_VERSION=\"0.93\" -o xs-src/Mouse.o -fPIC "-I/home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/x86_64-linux/CORE" -DUSE_PPPORT xs-src/Mouse.c
  xs-src/Mouse.xs​:457​:1​: error​: multiple storage classes in declaration specifiers
  xs-src/Mouse.xs​:458​:1​: error​: multiple storage classes in declaration specifiers
  xs-src/Mouse.xs​:459​:1​: error​: multiple storage classes in declaration specifiers
  xs-src/Mouse.xs​:460​:1​: error​: multiple storage classes in declaration specifiers
  ./mouse.h​:156​:13​: warning​: ‘XS_Mouse_simple_reader’ used but never defined [enabled by default]
  ./mouse.h​:159​:13​: warning​: ‘XS_Mouse_simple_predicate’ used but never defined [enabled by default]
  ./mouse.h​:167​:13​: warning​: ‘XS_Mouse_inheritable_class_accessor’ used but never defined [enabled by default]
  ./mouse.h​:157​:13​: warning​: ‘XS_Mouse_simple_writer’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:158​:13​: warning​: ‘XS_Mouse_simple_clearer’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:163​:13​: warning​: ‘XS_Mouse_accessor’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:164​:13​: warning​: ‘XS_Mouse_reader’ declared ‘static’ but never defined [-Wunused-function]
  ./mouse.h​:165​:13​: warning​: ‘XS_Mouse_writer’ declared ‘static’ but never defined [-Wunused-function]

perl -V


  Summary of my perl5 (revision 5 version 15 subversion 2) configuration​:
  Commit id​: ab1478f
  Platform​:
  osname=linux, osvers=2.6.39-1-amd64, archname=x86_64-linux
  uname='linux k81 2.6.39-1-amd64 #1 smp tue may 24 14​:34​:19 utc 2011 x86_64 gnulinux '
  config_args='-Dprefix=/home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5 -Dinstallusrbinperl=n -Uversiononly -Dusedevel -des -Ui_db -Uuseithreads -Uuselongdouble -DDEBUGGING=-g'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
  ccversion='', gccversion='4.6.1', gccosandvers=''
  intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, prototype=define
  Linker and Libraries​:
  ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib /usr/lib /lib64 /usr/lib64
  libs=-lnsl -ldb -ldl -lm -lcrypt -lutil -lc
  perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
  libc=, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.13'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib -fstack-protector'

  Characteristics of this binary (from libperl)​:
  Compile-time options​: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
  PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PERL_USE_DEVEL
  USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES
  USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
  Built under linux
  Compiled at Aug 26 2011 18​:47​:22
  @​INC​:
  /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/site_perl/5.15.2/x86_64-linux
  /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/site_perl/5.15.2
  /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2/x86_64-linux
  /home/src/perl/repoperls/installed-perls/perl/v5.15.2-9-gab1478f/1df5/lib/5.15.2
  .

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Aug 26, 2011

From @tsee

On 08/26/2011 07​:30 PM, Andreas J. Koenig wrote​:

xs-src/Mouse.xs​:457​:1​: error​: multiple storage classes in declaration specifiers
xs-src/Mouse.xs​:458​:1​: error​: multiple storage classes in declaration specifiers
xs-src/Mouse.xs​:459​:1​: error​: multiple storage classes in declaration specifiers
xs-src/Mouse.xs​:460​:1​: error​: multiple storage classes in declaration specifiers

The superficial check I've done suggests that this is because Mouse sort
of sidesteps the XSUB declaration generation done by EU​::ParseXS by
declaring an XSUB using a special macro that is internally using XS(name).

I can't imagine making this work with perls from 5.15.2 onwards would be
hard (Fuji-san​: please just git show the perl commit in question or send
me a note if that is unclear). I also don't think this is a very common
issue and we can simply cooperate to make Mouse forward-compatible. Yet
technically, the XS(name)-becoming-static change is an incompatible one,
so if we were to be entirely pedantic, I would have to carefully
reconsider this whole issue.

Best regards,
Steffen

@p5pRT
Copy link
Author

p5pRT commented Aug 27, 2011

From @andk

On Sat, 27 Aug 2011 00​:34​:16 +0200, Steffen Mueller <smueller@​cpan.org> said​:

sm> On 08/26/2011 07​:30 PM, Andreas J. Koenig wrote​:

xs-src/Mouse.xs​:457​:1​: error​: multiple storage classes in declaration specifiers
xs-src/Mouse.xs​:458​:1​: error​: multiple storage classes in declaration specifiers
xs-src/Mouse.xs​:459​:1​: error​: multiple storage classes in declaration specifiers
xs-src/Mouse.xs​:460​:1​: error​: multiple storage classes in declaration specifiers

sm> The superficial check I've done suggests that this is because Mouse
sm> sort of sidesteps the XSUB declaration generation done by EU​::ParseXS
sm> by declaring an XSUB using a special macro that is internally using
sm> XS(name).

sm> I can't imagine making this work with perls from 5.15.2 onwards would
sm> be hard (Fuji-san​: please just git show the perl commit in question or
sm> send me a note if that is unclear). I also don't think this is a very
sm> common issue and we can simply cooperate to make Mouse
sm> forward-compatible. Yet technically, the XS(name)-becoming-static
sm> change is an incompatible one, so if we were to be entirely pedantic,
sm> I would have to carefully reconsider this whole issue.

MLEHMANN/Coro-6.06.tar.gz is also affected.

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Aug 27, 2011

From @andk

On Sat, 27 Aug 2011 06​:53​:55 +0200, andreas.koenig.7os6VVqR@​franz.ak.mind.de (Andreas J. Koenig) said​:

  > MLEHMANN/Coro-6.06.tar.gz is also affected.

also affected​: KTHAKORE/SDL-2.533.tar.gz

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Aug 27, 2011

From @tsee

On 08/27/2011 10​:16 AM, (Andreas J. Koenig) via RT wrote​:

On Sat, 27 Aug 2011 06​:53​:55 +0200, andreas.koenig.7os6VVqR@​franz.ak.mind.de (Andreas J. Koenig) said​:

MLEHMANN/Coro-6.06.tar.gz is also affected.

also affected​: KTHAKORE/SDL-2.533.tar.gz

Okay, that is clearly too much fallout, though I thought I had built
Coro on a thusly patched perl... I will investigate and attempt to fix,
but not before next week.

--Steffen

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

From zefram@fysh.org

Steffen Mueller wrote​:

technically, the XS(name)-becoming-static change is an incompatible one,
so if we were to be entirely pedantic, I would have to carefully
reconsider this whole issue.

The other way to do it is that XS() remains defined as it was before,
with no storage class, and EU​:PXS inserts the "static" itself. Bonus is
that this gets the internal linkage on older perls, provided that one
is using a new EU​:PXS.

-zefram

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

From @tsee

The following commits to blead fix this issue for Coro and SDL, but not
Mouse. Mouse uses XS() to pre-declare an XSUB that is later implemented
by code generated via ExtUtils​::ParseXS.

With the commits below, Mouse now declares the XSUB as non-static using
XS(), then the main XSUB is declared and implemented using static by
EU​::PXS. A fix for Mouse would be to require a recent enough
ExtUtils​::ParseXS (currently only 3.04_01 released today) to have the
new behaviour AND the new XS keyword to toggle between generatic static
XSUBs or not.

commit a62da8e
Author​: Steffen Mueller <smueller@​cpan.org>
Date​: Sun Aug 28 17​:51​:06 2011 +0200

  Backport XS_(IN|EX)TERNAL, be explicit about linkage
 
  With XS(name) defaulting to exporting symbols again since the
  previous commit, ExtUtils​::ParseXS will now instead use explicit
  XS_EXTERNAL/XS_INTERNAL in its place. This allows backporting
  of the linkage changes to perls as old as 5.10.0 (and possibly
  further).

commit 0cb93b3
Author​: Steffen Mueller <smueller@​cpan.org>
Date​: Sun Aug 28 17​:45​:37 2011 +0200

  Revert back to making XS(name) expose XSUB symbols
 
  Instead, as Zefram recommended, ExtUtils​::ParseXS will be patched
  to not export XSUB symbols by default that are generated through
  the module itself. As Zefram said, this has the advantage of
  allowing older perls to benefit from the non-exporting of symbols.

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

From [Unknown Contact. See original ticket]

The following commits to blead fix this issue for Coro and SDL, but not
Mouse. Mouse uses XS() to pre-declare an XSUB that is later implemented
by code generated via ExtUtils​::ParseXS.

With the commits below, Mouse now declares the XSUB as non-static using
XS(), then the main XSUB is declared and implemented using static by
EU​::PXS. A fix for Mouse would be to require a recent enough
ExtUtils​::ParseXS (currently only 3.04_01 released today) to have the
new behaviour AND the new XS keyword to toggle between generatic static
XSUBs or not.

commit a62da8e
Author​: Steffen Mueller <smueller@​cpan.org>
Date​: Sun Aug 28 17​:51​:06 2011 +0200

  Backport XS_(IN|EX)TERNAL, be explicit about linkage
 
  With XS(name) defaulting to exporting symbols again since the
  previous commit, ExtUtils​::ParseXS will now instead use explicit
  XS_EXTERNAL/XS_INTERNAL in its place. This allows backporting
  of the linkage changes to perls as old as 5.10.0 (and possibly
  further).

commit 0cb93b3
Author​: Steffen Mueller <smueller@​cpan.org>
Date​: Sun Aug 28 17​:45​:37 2011 +0200

  Revert back to making XS(name) expose XSUB symbols
 
  Instead, as Zefram recommended, ExtUtils​::ParseXS will be patched
  to not export XSUB symbols by default that are generated through
  the module itself. As Zefram said, this has the advantage of
  allowing older perls to benefit from the non-exporting of symbols.

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

@tsee - Status changed from 'open' to 'resolved'

@p5pRT p5pRT closed this as completed Aug 28, 2011
@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

From @andk

On Sun, 28 Aug 2011 12​:02​:26 -0700, "Steffen Mueller via RT" <perlbug-followup@​perl.org> said​:

  > According to our records, your request regarding
  > "Bleadperl v5.15.2-9-gab1478f breaks GFUJI/Mouse-0.93.tar.gz"
  > has been resolved.

  > If you have any further questions or concerns, please respond to this message.

  > For other topics, please create a new ticket.

  > <URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=97850 >

Mouse still fails. I attach my fail report.

Curses (which was the as of yet unreported 4th failing distro since
v5.15.2-9-gab1478f) and SDL succeed on my smoker, I have not yet been
able to try Coro (because it has issues with nvsize=16).

--
andreas

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

From @andk

Hallo Steffen,

ich habe zu spaet gesehen, dass Du selbst weisst, dass Mouse nicht
gefixt ist, habe nur gelesen, dass das Ticket geschlossen ist, und bin
schon auf dem Rueckzug in die Horizontale...

Sollte das Ticket nicht offen bleiben, bis auch Mouse gefixt ist?

Gute Nacht,
--
andreas

@p5pRT
Copy link
Author

p5pRT commented Aug 28, 2011

From @tsee

On 08/28/2011 10​:20 PM, (Andreas J. Koenig) wrote​:

On Sun, 28 Aug 2011 12​:02​:26 -0700, "Steffen Mueller via RT"<perlbug-followup@​perl.org> said​:

According to our records, your request regarding
"Bleadperl v5.15.2-9-gab1478f breaks GFUJI/Mouse-0.93.tar.gz"
has been resolved.

If you have any further questions or concerns, please respond to this message.

For other topics, please create a new ticket.

<URL​: https://rt-archive.perl.org/perl5/Ticket/Display.html?id=97850>

Mouse still fails. I attach my fail report.

Curses (which was the as of yet unreported 4th failing distro since
v5.15.2-9-gab1478f) and SDL succeed on my smoker, I have not yet been
able to try Coro (because it has issues with nvsize=16).

It does, but I consider it at least partly Mouse's fault for assuming
too much about non-API bits of the core (XSUB naming in generated code,
for example). Mouse needs patching, see the corresponding reply of mine
in the relevant Mouse ticket. This problem should be easily fixable in
Mouse, but at the very least hard to fix in core. Thus, since Mouse
makes it virtually impossible to have the desired change in core without
breaking Mouse, I consider this bug resolved.

Best regards,
Steffen

@p5pRT
Copy link
Author

p5pRT commented Aug 29, 2011

From @tsee

Hallo Andreas,

On 08/28/2011 10​:26 PM, (Andreas J. Koenig) via RT wrote​:

ich habe zu spaet gesehen, dass Du selbst weisst, dass Mouse nicht
gefixt ist, habe nur gelesen, dass das Ticket geschlossen ist, und bin
schon auf dem Rueckzug in die Horizontale...

macht ja nichts. Ich bin froh, dass Du solche Probleme findest. Bzw.
andersherum ist es mir peinlich, dass mir das selbst nicht aufgefallen war.

Sollte das Ticket nicht offen bleiben, bis auch Mouse gefixt ist?

Mouse hat doch auch ein Ticket und dort gibt es auch eine Antwort von
mir. An perl wuerde ich an diesem Punkt nichts mehr aendern, daher auch
das Ticket schliessen.

Viele Gruesse,
Steffen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant