Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:languages:perl:CPAN-E
perl-ExtUtils-MakeMaker-BigHelper
perl-ExtUtils-MakeMaker-BigHelper.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File perl-ExtUtils-MakeMaker-BigHelper.spec of Package perl-ExtUtils-MakeMaker-BigHelper
# # spec file for package perl-ExtUtils-MakeMaker-BigHelper # # Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: perl-ExtUtils-MakeMaker-BigHelper Version: 0.92 Release: 0 %define cpan_name ExtUtils-MakeMaker-BigHelper Summary: For Helping Extutils::Makemaker with Big Xs License: GPL-1.0+ or Artistic-1.0 Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/ExtUtils-MakeMaker-BigHelper/ Source0: http://www.cpan.org/authors/id/E/ED/EDGEWISE/%{cpan_name}-%{version}.tar.gz BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl BuildRequires: perl-macros %{perl_requires} %description This package extends or alters the functionality of ExtUtils::MakeMaker, in a way more suitable perhaps for large projects using a lot of perl XS. This allows multiple .xs files in your project, strewn about the lib directory hierarchy, hopefully side by each with the corresponding .pm file. Multiple t directories are also allowed, hopefully located next to the .pm files they test. See the man page for perlxs for more information about perl XS. With ExtUtils::MakeMaker there can only be one .xs file, which limits the size of the project. Well, there is a way to have more, but you're left with one master .xs file responsible for bootstrapping all the other ones. The way to have two .xs files is documented, but not easy, and the way to have more than two is, well, unnatural. With ExtUtils::MakeMaker you're allowed to provide customizations for various MakeMaker methods in the package MY. This gives you the ability to make a total overhaul of ExtUtils::MakeMaker. This package uses the customization facility built in to ExtUtils::MakeMaker to allow multiple .xs files, multiple t files, and multiple subproject (Makefile.PL and Build.PL) directories in the lib hierarchy rather than at the top level of the project. This allows you to more conveniently use perlxs in your project, without having to package up multiple Makefile.PL projects embedded in your directories. It also allows you to convert all those .pm files with Inline code into real perlxs without using dynamite. The methods here are meant to be exported into the package MY, to provide customizations of the ExtUtils::MakeMaker methods. For example, here's a possible project layout: Changes lib/Big/Project.pm lib/Big/Project/Collections/MyLRU.xs lib/Big/Project/Collections/MyLRU.pm lib/Big/Project/Collections/t/00-usage.t lib/Big/Project/Collections/t/10-testlru.t lib/Big/Project/Worker.pm lib/Big/Project/Slave.pm lib/Big/Project/Dispatcher/Scheduler.xs lib/Big/Project/Dispatcher/Scheduler.pm lib/Big/Project/Dispatcher/t/00-usage.t lib/Big/Project/Dispatcher/t/10-roundrobin.t lib/Big/Project/clib/Makefile lib/Big/Project/clib/toolbox.c lib/Big/Project/clib/toolbox.h lib/Big/Project/clib/hashmaker.c lib/Big/Project/clib/hashmaker.h Makefile.PL MANIFEST README The Makefile.PL would look like this: use ExtUtils::MakeMaker; WriteMakefile( NAME => "Big::Project", VERSION_FROM => "lib/Big/Project.pm", ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT => 'Big Project', AUTHOR => 'John Bigbooty <john.bigbooty@yoyodyne.com>') : ()), DEFINE => '', LIBS => ['-lm' ], # e.g., '-lm' INC => '-I. -Ilib/Big/Project/clib', MYEXTLIB => 'lib/Big/Project/clib/libmyextlib.a', ); package MY; use ExtUtils::MakeMaker::BigHelper qw(:MY); That should do it. It uses File::Find to descend the hierarchy and find all the .xs files and t directories. %prep %setup -q -n %{cpan_name}-%{version} %build %{__perl} Makefile.PL INSTALLDIRS=vendor %{__make} %{?_smp_mflags} %check %{__make} test %install %perl_make_install %perl_process_packlist %perl_gen_filelist %files -f %{name}.files %defattr(-,root,root,755) %doc Changes README %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor