# work around upstream versioning being decimal rather than v-string
%global upstream_version 4.72
%global extraversion %{nil}
%if "%{upstream_version}%{extraversion}" != "%{upstream_version}"
Provides: perl(IO::AIO) = %{upstream_version}%{extraversion}
%endif
Name: perl-IO-AIO
Version: %{upstream_version}%{extraversion}
Release: 1%{?dist}
Summary: Asynchronous Input/Output
License: GPLv2+
URL: https://metacpan.org/release/IO-AIO
Source0: https://cpan.metacpan.org/modules/by-module/IO/IO-AIO-%{upstream_version}.tar.gz
Patch0: IO-AIO-4.4-shellbang.patch
# Module Build
BuildRequires: coreutils
BuildRequires: findutils
BuildRequires: gcc
BuildRequires: make
BuildRequires: perl-devel
BuildRequires: perl-generators
BuildRequires: perl-interpreter
BuildRequires: perl(Canary::Stability) >= 2001
BuildRequires: perl(Config)
BuildRequires: perl(ExtUtils::MakeMaker)
# Module Runtime
BuildRequires: perl(base)
BuildRequires: perl(Carp)
BuildRequires: perl(common::sense)
BuildRequires: perl(Exporter)
BuildRequires: perl(XSLoader)
# Script Runtime
BuildRequires: perl(Getopt::Long)
BuildRequires: perl(Pod::Usage)
BuildRequires: perl(Time::HiRes)
# Test Suite
BuildRequires: perl(Fcntl)
BuildRequires: perl(File::Temp)
BuildRequires: perl(FindBin)
BuildRequires: perl(lib)
BuildRequires: perl(POSIX)
BuildRequires: perl(strict)
BuildRequires: perl(Test)
BuildRequires: perl(vars)
# Runtime
Requires: perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires: perl(XSLoader)
# Avoid provides for private shared objects
%{?perl_default_filter}
%description
This module implements asynchronous I/O using whatever means your operating
system supports.
%package -n treescan
Summary: Scan directory trees, list dirs/files, stat, sync, grep
License: GPL+ or Artistic
BuildArch: noarch
Requires: %{name} = %{version}-%{release}
Requires: perl(Pod::Usage)
%description -n treescan
The treescan command scans directories and their contents recursively. By
default it lists all files and directories (with trailing /), but it can
optionally do various other things.
If no paths are given, treescan will use the current directory.
%prep
%setup -q -n IO-AIO-%{upstream_version}
# Fix shellbang in treescan
%patch0
%build
PERL_CANARY_STABILITY_NOPROMPT=1 perl Makefile.PL \
INSTALLDIRS=vendor OPTIMIZE="%{optflags}"
make %{?_smp_mflags}
%install
make pure_install DESTDIR=%{buildroot}
find %{buildroot} -type f -name .packlist -delete
find %{buildroot} -type f -name '*.bs' -empty -delete
%{_fixperms} -c %{buildroot}
%check
make test
%files
%if 0%{?_licensedir:1}
%license COPYING
%else
%doc COPYING
%endif
%doc Changes README
%{perl_vendorarch}/auto/IO/
%{perl_vendorarch}/IO/
%{_mandir}/man3/IO::AIO.3*
%files -n treescan
%{_bindir}/treescan
%{_mandir}/man1/treescan.1*
%changelog
* Wed Apr 3 2019 Paul Howarth <paul@city-fan.org> - 4.72-1
- Update to 4.72
- libeio: If fd 0 is available do not use it for aio_wd, as it collides with
IO::AIO::CWD
- Added IO::AIO::memfd_create
- Correctly include <sys/uio.h> in the vmsplice test
- Reduce code size by ~7%% on amd64 by declaring more functions as noinline
- Documentation fixes and updates
- Experimental and undocumented preliminary support for synchronous statx
* Sun Mar 10 2019 Paul Howarth <paul@city-fan.org> - 4.71-1
- Update to 4.71
- Due to an error in the linux manpages, the configure tests for readahead,
sync_file_range, splice etc. failed; this has been fixed
* Mon Mar 4 2019 Paul Howarth <paul@city-fan.org> - 4.70-1
- Update to 4.7
- Significantly speed up scandir for the very special case of a non-POSIX
filesystem that nevertheless reports valid dt_type information; the only
known filesystem of this type is currently btrfs, which didn't get its act
together to implement POSIX semantics in all these years
- Add IO::AIO::MCL_ONFAULT for mlockall, add IO::AIO::mlockall
- Neither sys/mkdev.h nor sys/sysmacros.h were included, even when they were
detected by autoconf
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.60-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Aug 28 2018 Paul Howarth <paul@city-fan.org> - 4.60-1
- Update to 4.6
- Add st_btime, st_btimesec, st_btimensec and st_gen accessors, mostly for
bsds that expose birthtime and st_gen members (netbsd, freebsd but only
st_gen on openbsd because they compiled their perl without support for
birthtimes)
- Fix madvise and munlock to properly support negative offsets
- Allocate fd for the aio_close at boot time, to guarantee it working later,
rather than calling abort when it fails; this also avoids close-on-exec
race issues after module load
- #undef utime on win32, which might help some reports of utime hangs
- Minor documentation improvements
- Minor configure clean-ups
- Use $Config{perllibs} instead of libs for configure, which might help
people who didn't install all perl dependencies (might break things as
well)
- Remove buildreqs needed only due to use of $Config{libs}
* Wed Aug 15 2018 Paul Howarth <paul@city-fan.org> - 4.54-1
- Update to 4.54
- Include sys/mkdev.h or sys/sysmacros.h if available
- Further tweaks to configure invocation for systems requiring --rpath
- No longer rely on custom paths on win32 platforms
- Try to work around buggy PAGESIZE macro on solaris
* Tue Aug 14 2018 Paul Howarth <paul@city-fan.org> - 4.53-1
- Update to 4.53
- Add $Config{libs} to LIBS for configure, to work around systems with broken
library dependencies
- Add missing include for prctl()
- Add buildreqs needed due to overspecification of libraries in $Config{libs}
* Mon Aug 13 2018 Paul Howarth <paul@city-fan.org> - 4.52-1
- Update to 4.52
- Complete rework of the autoconf framework: IO::AIO now uses its own
config.h, separate from libeio, and tries to test the actual perl
environment, not the standard system environment
- Provide nanosecond-accuracy stat time accessors for both perl and IO::AIO
stat functions
- Removed non-portable C++ functions from eio.c
- Try to fix readdir tests on cygwin spuriously failing
* Wed Aug 1 2018 Paul Howarth <paul@city-fan.org> - 4.50-1
- Update to 4.5
- aio_mtouch: touch all pages as requested, not just the first page
- New function: IO::AIO::mremap - linux-specific mremap, with constants
MREMAP_MAYMOVE and MREMAP_FIXED
- Add O_ACCMODE
- Add (undocumented) MSG_CMSG_CLOEXEC and SOCK_CLOEXEC constants
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.40-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Jun 28 2018 Jitka Plesnikova <jplesnik@redhat.com> - 4.40-2
- Perl 5.28 rebuild
* Wed Feb 21 2018 Paul Howarth <paul@city-fan.org> - 4.40-1
- Update to 4.4
- New aio_slurp request
- Add (experimental) IO::AIO::eventfd and timerfd* function
- Add (experimental) IO::AIO::get_fdlimit and IO::AIO::min_fdlimit
- Point out that aio_copy overwrites existing files
- Remove filesystem magic number table from aio_statvfs docs as statvfs
doesn't actually return this info at all (statfs does)
- Add a bunch of (mostly linux-specific) constants for use in ioctls (see
aio_ioctl docs)
- treescan now has a proper manpage and useful --help output
- New option --sync in treescan, to sync everything in a subtree
- Changed default for aio_msync flags to MSYNC_SYNC
- Document offset/length behaviour of mprotect/madvise
- Support linux's renameat2 (via aio_rename2)
- Add aio_rename2, an aio_rename with flags
- Add F_DUPPFD_CLOEXEC, F_OFD_[SG]ETLKW? constants
- Add FALLOC_FL_INSERT_RANGE, FALLOC_FL_UNSHARE_RANGE
- libeio: Use posix_close if available
- libeio: Internal close() calls no longer disturb errno
- Add IO:AIO::FALLOC_FL_UNSHARE
- Update schmorp.h for removal of USE_SOCKETS_AS_HANDLES and better eventfd
detection
- Package treescan, in its own package
- Change license to GPLV2+, since parts of libeio are GPLv2+
- Drop EL-5 support
- Drop BuildRoot: and Group: tags
- Drop explicit buildroot cleaning in %%install section
- Drop explicit %%clean section
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.34-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.34-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.34-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sun Jun 04 2017 Jitka Plesnikova <jplesnik@redhat.com> - 4.34-4
- Perl 5.26 rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 4.34-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Sun May 15 2016 Jitka Plesnikova <jplesnik@redhat.com> - 4.34-2
- Perl 5.24 rebuild
* Tue May 3 2016 Paul Howarth <paul@city-fan.org> - 4.34-1
- Update to 4.34
- def0.h was not properly generated during previous release, causing compile
errors on various platforms
- major/minor were accidentally switched
- Removed duplicate definition of MAP_HUGETLB
- Added (untested!) aio_fcntl, aio_ioctl requests
- (libeio) Names set via prctl are truncated to 15 chars + nul, not 16, as
manpages-dev originally claimed
- Drop def0.h patch from previous release, no longer needed
- Simplify find commands using -empty and -delete
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 4.33-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Mon Jan 18 2016 Paul Howarth <paul@city-fan.org> - 4.33-1
- Update to 4.33
- Add IO::AIO::pipe2 function
- Added support for FALLOC_FL_COLLAPSE_RANGE and FALLOC_FL_ZERO_RANGE
constants
- Added support for O_TMPFILE and O_PATH constants
- Added support for MAP_FIXED, MAP_GROWSDOWN, MAP_32BIT, MAP_HUGETLB,
MAP_STACK constants, whether they can be sensibly used or not
- Use NO_INIT where applicable
- Update libecb
- Added stability canary support
- Updated linux super magic table to 4.3.3
- Explicitly BR: perl-devel, needed for EXTERN.h
- Add patch to support building on systems without MAP_STACK or MAP_32BIT
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.32-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Thu Jun 04 2015 Jitka Plesnikova <jplesnik@redhat.com> - 4.32-2
- Perl 5.22 rebuild
* Thu Feb 12 2015 Paul Howarth <paul@city-fan.org> - 4.32-1
- Update to 4.32
- Replace off_t by STRLEN where appropriate; should not result in
user-visible changes
- Update ecb.h for C11 compatibility
- Classify buildreqs by usage
- Use %%license where possible
* Wed Aug 27 2014 Jitka Plesnikova <jplesnik@redhat.com> - 4.31-3
- Perl 5.20 rebuild
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.31-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Tue Jun 10 2014 Paul Howarth <paul@city-fan.org> - 4.31-1
- Update to 4.31
- Work around more 5.20 bugs
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.30-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Fri Apr 11 2014 Paul Howarth <paul@city-fan.org> - 4.30-1
- Update to 4.3
- perl5porters broke Async::Interrupt, BDB, EV, IO::AIO and OpenCL without
warning by switching the meaning of USE_SOCKETS_AS_HANDLES in 5.18
- Drop %%defattr, redundant since rpm 4.4
* Sat Jan 25 2014 Paul Howarth <paul@city-fan.org> - 4.20-1
- Update to 4.2 (see Changes file for details)
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.15-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Thu Jul 18 2013 Petr Pisar <ppisar@redhat.com> - 4.15-5
- Perl 5.18 rebuild
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.15-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.15-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Tue Jun 12 2012 Petr Pisar <ppisar@redhat.com> - 4.15-2
- Perl 5.16 rebuild
* Tue Apr 10 2012 Paul Howarth <paul@city-fan.org> - 4.15-1
- Update to 4.15:
- Always include linux/types.h for fiemap, for compatibility with ancient
systems
- Experimental support for IO::AIO::splice and ::tee (no aio_...)
- Provide SEEK_HOLE and SEEK_DATA, if available
- Work around (again!) an immensely stupid bug in RHEL, defining autoconf
macros in linux system headers
* Sat Apr 7 2012 Paul Howarth <paul@city-fan.org> - 4.14-1
- Update to 4.14:
- Fix stat structure usage on windows, which caused bogus stat results
- (libeio) make readahead emulation behave more like actual readahead by
never failing
- New request aio_seek
- New request aio_fiemap
- Auto-generate the #ifdef/#define 0 blocks for symbols we export
- BR:/R: Perl core modules that might be dual-lived
- Don't need to remove empty directories from buildroot
* Thu Feb 2 2012 Paul Howarth <paul@city-fan.org> - 4.12-1
- Update to 4.12 (see Changes file for details)
- INCOMPATIBLE CHANGE: fork is no longer supported (indeed, it never was);
see FORK BEHAVIOUR in manpage for details
- BR: perl(Carp)
- Reinstate compatibility with old distributions such as EL-5
- Add back BuildRoot definition and cleaning
- Use DESTDIR rather than PERL_INSTALL_ROOT
- Don't use macros for commands
- Use tabs
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.71-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Sun Jun 19 2011 Marcela Mašláňová <mmaslano@redhat.com> - 3.71-3
- Perl mass rebuild
* Thu Mar 10 2011 Paul Howarth <paul@city-fan.org> - 3.71-2
- Spec cleanup
- Use %%{?perl_default_filter} instead of our own custom provides filter
* Wed Feb 9 2011 Ruben Kerkhof <ruben@rubenkerkhof.com> - 3.71-1
- Upstream released new version
* Tue Feb 8 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.65-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Dec 17 2010 Marcela Maslanova <mmaslano@redhat.com> - 3.65-2
- Rebuild to fix problems with vendorarch/lib (#661697)
* Thu Jun 24 2010 Ruben Kerkhof <ruben@rubenkerkhof.com> - 3.65-1
- Upstream released new version
* Sun May 02 2010 Marcela Maslanova <mmaslano@redhat.com> - 3.17-5
- Mass rebuild with perl-5.12.0
* Mon Dec 7 2009 Stepan Kasal <skasal@redhat.com> - 3.17-4
- Rebuild against perl 5.10.1
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.17-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.17-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Thu Dec 18 2008 Nicolas Chauvet <kwizart@gmail.com> - 3.17-1
- Update to 3.17
* Sun Nov 09 2008 Ruben Kerkhof <ruben@rubenkerkhof.com> - 3.16-1
- Upstream release new version
* Mon Mar 03 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2.51-2
- Rebuild for new perl (again)
* Sat Feb 09 2008 Ruben Kerkhof <ruben@rubenkerkhof.com> - 2.51-1
- Sync with upstream
* Thu Feb 7 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 2.33-2
- Rebuild for new perl
* Sun May 13 2007 Ruben Kerkhof <ruben@rubenkerkhof.com> - 2.33-1
- Initial import