diff --git a/Tk-804.034.tar.gz b/Tk-804.034.tar.gz new file mode 100644 index 0000000..d7d7626 Binary files /dev/null and b/Tk-804.034.tar.gz differ diff --git a/perl-Tk-seg.patch b/perl-Tk-seg.patch new file mode 100644 index 0000000..26201fa --- /dev/null +++ b/perl-Tk-seg.patch @@ -0,0 +1,33 @@ +diff -up Tk-804.028/pTk/mTk/generic/tkConfig.c.seg Tk-804.028/pTk/mTk/generic/tkConfig.c +--- Tk-804.028/pTk/mTk/generic/tkConfig.c.seg 2008-03-11 23:29:39.000000000 -0400 ++++ Tk-804.028/pTk/mTk/generic/tkConfig.c 2008-03-11 23:28:09.000000000 -0400 +@@ -1210,11 +1210,11 @@ GetOptionFromObj(interp, objPtr, tablePt + * First, check to see if the object already has the answer cached. + */ + +- if (objPtr->typePtr == &tkOptionObjType) { ++/* if (objPtr->typePtr == &tkOptionObjType) { + if (objPtr->internalRep.twoPtrValue.ptr1 == (VOID *) tablePtr) { + return (Option *) objPtr->internalRep.twoPtrValue.ptr2; + } +- } ++ }*/ + + /* + * The answer isn't cached. +@@ -2277,9 +2277,15 @@ Tk_GetOptionValue(interp, recordPtr, opt + if (optionPtr == NULL) { + return NULL; + } ++ ++ if (optionPtr->specPtr == NULL) { ++ return NULL; ++ } ++ + if (optionPtr->specPtr->type == TK_OPTION_SYNONYM) { + optionPtr = optionPtr->extra.synonymPtr; + } ++ + if (optionPtr->specPtr->objOffset >= 0) { + resultPtr = *((Tcl_Obj **) (recordPtr + optionPtr->specPtr->objOffset)); + if (resultPtr == NULL) { diff --git a/perl-Tk-widget.patch b/perl-Tk-widget.patch new file mode 100644 index 0000000..6a86d16 --- /dev/null +++ b/perl-Tk-widget.patch @@ -0,0 +1,26 @@ +--- old/demos/widget.orig 2008-01-02 13:24:14.000000000 +0100 ++++ new/demos/widget 2008-01-02 13:27:10.000000000 +0100 +@@ -3,7 +3,8 @@ + use 5.008; + use Config; + use Tk 804.000; +-use lib Tk->findINC( 'demos/widget_lib' ); ++#use lib Tk->findINC( 'demos/widget_lib' ); ++use lib "@demopath@/widget_lib"; + use Tk::widgets qw/ DialogBox ErrorDialog LabEntry ROText /; + use Tk::Config (); + use WidgetDemo; +@@ -62,9 +63,11 @@ + $l->destroy; + } + +-my $widget_lib = Tk->findINC('demos/widget_lib'); ++#my $widget_lib = Tk->findINC('demos/widget_lib'); ++my $widget_lib = "@demopath@/widget_lib"; + my $wd = "$widget_lib/WidgetDemo.pm"; +-$WIDTRIB = Tk->findINC('demos/widtrib'); ++#$WIDTRIB = Tk->findINC('demos/widtrib'); ++$WIDTRIB = "@demopath@/widtrib"; + unless (Tk::tainting) { + $WIDTRIB = $ENV{WIDTRIB} if defined $ENV{WIDTRIB}; + $WIDTRIB = $ARGV[0] if defined $ARGV[0]; diff --git a/perl-Tk.spec b/perl-Tk.spec new file mode 100644 index 0000000..537903e --- /dev/null +++ b/perl-Tk.spec @@ -0,0 +1,105 @@ +%define perlver %(eval "`%{__perl} -V:version`"; echo $version) + +Name: perl-Tk +Version: 804.034 +Release: 5 +Summary: A graphical user interface toolkit for Perl +License: (GPL+ or Artistic) and SWL +URL: https://metacpan.org/release/Tk +Source0: https://cpan.metacpan.org/authors/id/S/SR/SREZIC/Tk-%{version}.tar.gz +Patch0000: perl-Tk-widget.patch +Patch0001: perl-Tk-seg.patch +BuildRequires: gcc-c++ perl-devel >= 3:5.8.3 perl-generators freetype-devel libjpeg-devel +BuildRequires: libpng-devel libX11-devel libXft-devel perl(Config) perl(Cwd) +BuildRequires: perl(File::Copy) perl(lib) perl(open) perl(strict) perl(Test) +BuildRequires: perl(AutoLoader) perl(ExtUtils::MakeMaker) perl(base) perl(Carp) +BuildRequires: perl(DirHandle) perl(DynaLoader) perl(Encode) perl(Exporter) +BuildRequires: perl(File::Basename) perl(File::Spec) perl(if) perl(locale) +BuildRequires: perl(IO::Handle) perl(overload) perl(subs) perl(Symbol) perl(Text::Tabs) +BuildRequires: perl(vars) perl(warnings) perl(XSLoader) xorg-x11-server-Xvfb +BuildRequires: xorg-x11-xinit font(:lang=en) liberation-sans-fonts perl(constant) +BuildRequires: perl(Data::Dumper) perl(Devel::Peek) perl(ExtUtils::Command::MM) +BuildRequires: perl(File::Spec::Functions) perl(File::Temp) perl(FindBin) perl(Getopt::Long) +BuildRequires: perl(IO::Socket) perl(POSIX) perl(Test::More) perl(utf8) perl(MIME::Base64) +Requires: perl(:MODULE_COMPAT_%{perlver}) +Provides: perl(Tk::LabRadio) = 4.004 perl(Tk) = %{version} + +%{?perl_default_filter} +%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}perl\\(Tk\\) +%global __provides_exclude %__provides_exclude|perl\\(Tk::Clipboard\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Frame\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Listbox\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Scale\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Scrollbar\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Table\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Toplevel\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Widget\\)$ +%global __provides_exclude %__provides_exclude|perl\\(Tk::Wm\\)$ + +%description +Perl-Tk is a collection of modules and code that attempts to wed the easily configured +Tk widget toolkit to the powerful lexigraphic, dynamic memory, I/O, and object-oriented +capabilities of Perl 5. In other words, it is an interpreted scripting language for making +widgets and programs with Graphical User Interfaces (GUI). + +%package devel +Summary: Development files for perl-Tk +Requires: perl-Tk = %{version}-%{release} + +%description devel +This package provides the modules and Tk code for Perl/Tk. + +%package help +Summary: Help document for perl-Tk + +%description help +Help document for perl-Tk. + +%prep +%autosetup -n Tk-%{version} -p1 +find . -type f -exec %{__perl} -pi -e \ +'s,^(#!)(/usr/local)?/bin/perl\b,$1%{__perl}, if ($. == 1)' {} \; +chmod -x pod/Popup.pod Tixish/lib/Tk/balArrow.xbm +%{__perl} -pi -e 's,\@demopath\@,%{_pkgdocdir}/demos,g' demos/widget + +%build +%{__perl} Makefile.PL INSTALLDIRS=vendor X11LIB=%{_libdir} XFT=1 +find . -name Makefile | xargs %{__perl} -pi -e 's/^\tLD_RUN_PATH=[^\s]+\s*/\t/' +%make_build + +%check +xvfb-run -a make test + +%install +%make_install + +find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \; +find $RPM_BUILD_ROOT -type f -name '*.bs' -size 0 -exec rm -f {} \; +find $RPM_BUILD_ROOT -type d -depth -exec rmdir {} 2>/dev/null \; + +chmod -R u+rwX,go+rX,go-w $RPM_BUILD_ROOT/* +mkdir __demos +cp -pR $RPM_BUILD_ROOT%{perl_vendorarch}/Tk/demos __demos +find __demos/ -type f -exec chmod -x {} \; + +%files +%doc Changes README README.linux ToDo pTk/*license* __demos/demos demos/widget COPYING +%{_bindir}/{p*,tkjpeg} +%{perl_vendorarch}/auto/Tk +%{perl_vendorarch}/T* +%exclude %{perl_vendorarch}/Tk/{MMutil.pm,install.pm,MakeDepend.pm,demos} +%exclude %{_bindir}/{gedi,widget} +%exclude %{_libdir}/perl5/perllocal.pod + +%files devel +%dir %{perl_vendorarch}/Tk +%{perl_vendorarch}/Tk/{MMutil.pm,install.pm,MakeDepend.pm} + +%files help +%doc blib/man1/widget.1 +%{_mandir}/man*/* +%exclude %{_mandir}/man1/widget.1* + +%changelog +* Fri Dec 20 2019 shijian - 804.034-5 +- Package init