diff --git a/.libaio.metadata b/.libaio.metadata new file mode 100644 index 0000000..118ef7d --- /dev/null +++ b/.libaio.metadata @@ -0,0 +1 @@ +a7abbfe6fb8639a8611fd7cfe383f9e07cf51148 SOURCES/libaio-0.3.109.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/libaio-install-to-slash.patch b/SOURCES/libaio-install-to-slash.patch new file mode 100644 index 0000000..fe75cfc --- /dev/null +++ b/SOURCES/libaio-install-to-slash.patch @@ -0,0 +1,30 @@ +diff -up libaio-0.3.107/src/Makefile.orig libaio-0.3.107/src/Makefile +--- libaio-0.3.107/src/Makefile.orig 2009-01-20 10:07:31.520105235 -0500 ++++ libaio-0.3.107/src/Makefile 2009-01-20 10:08:51.199104930 -0500 +@@ -1,6 +1,7 @@ + prefix=/usr +-includedir=$(prefix)/include +-libdir=$(prefix)/lib ++includedir=/usr/include ++libdir=/usr/lib ++usrlibdir=/usr/lib + + ARCH := $(shell uname -m | sed -e s/i.86/i386/) + CFLAGS := -nostdlib -nostartfiles -Wall -I. -g -fomit-frame-pointer -O2 -fPIC +@@ -51,11 +52,11 @@ $(libname): $(libaio_sobjs) libaio.map + $(CC) $(SO_CFLAGS) -Wl,--version-script=libaio.map -Wl,-soname=$(soname) -o $@ $(libaio_sobjs) $(LINK_FLAGS) + + install: $(all_targets) +- install -D -m 644 libaio.h $(includedir)/libaio.h +- install -D -m 644 libaio.a $(libdir)/libaio.a +- install -D -m 755 $(libname) $(libdir)/$(libname) +- ln -sf $(libname) $(libdir)/$(soname) +- ln -sf $(libname) $(libdir)/libaio.so ++ install -D -m 644 libaio.h $(destdir)$(includedir)/libaio.h ++ install -D -m 644 libaio.a $(destdir)$(usrlibdir)/libaio.a ++ install -D -m 755 $(libname) $(destdir)$(libdir)/$(libname) ++ ln -sf $(libdir)/$(libname) $(destdir)$(libdir)/$(soname) ++ ln -sf $(libdir)/$(libname) $(destdir)$(usrlibdir)/libaio.so + + $(libaio_objs): libaio.h + diff --git a/SOURCES/libaio-sparc.patch b/SOURCES/libaio-sparc.patch new file mode 100644 index 0000000..07ea1e3 --- /dev/null +++ b/SOURCES/libaio-sparc.patch @@ -0,0 +1,908 @@ +diff -uNr libaio-0.3.109-orig/compat-libaio-0.3.109/src/libaio.h libaio-0.3.109/compat-libaio-0.3.109/src/libaio.h +--- libaio-0.3.109-orig/compat-libaio-0.3.109/src/libaio.h 2009-10-09 13:17:02.000000000 -0500 ++++ libaio-0.3.109/compat-libaio-0.3.109/src/libaio.h 2011-04-03 12:52:50.000000000 -0500 +@@ -83,6 +83,14 @@ + #define PADDEDptr(x, y) x; unsigned y + #define PADDEDul(x, y) unsigned long x; unsigned y + # endif ++#elif defined(__sparc__) && defined(__arch64__) /* big endian, 64 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x,y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__sparc__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x + #else + #error endian? + #endif +diff -uNr libaio-0.3.109-orig/compat-libaio-0.3.109/src/libaio.h.orig libaio-0.3.109/compat-libaio-0.3.109/src/libaio.h.orig +--- libaio-0.3.109-orig/compat-libaio-0.3.109/src/libaio.h.orig 1969-12-31 18:00:00.000000000 -0600 ++++ libaio-0.3.109/compat-libaio-0.3.109/src/libaio.h.orig 2009-10-09 13:17:02.000000000 -0500 +@@ -0,0 +1,265 @@ ++/* /usr/include/libaio.h ++ * ++ * Copyright 2000,2001,2002 Red Hat, Inc. ++ * ++ * Written by Benjamin LaHaise ++ * ++ * libaio Linux async I/O interface ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++#ifndef __LIBAIO_H ++#define __LIBAIO_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#include ++#include ++ ++struct timespec; ++struct sockaddr; ++struct iovec; ++ ++typedef struct io_context *io_context_t; ++ ++typedef enum io_iocb_cmd { ++ IO_CMD_PREAD = 0, ++ IO_CMD_PWRITE = 1, ++ ++ IO_CMD_FSYNC = 2, ++ IO_CMD_FDSYNC = 3, ++ ++ IO_CMD_POLL = 5, /* Never implemented in mainline, see io_prep_poll */ ++ IO_CMD_NOOP = 6, ++ IO_CMD_PREADV = 7, ++ IO_CMD_PWRITEV = 8, ++} io_iocb_cmd_t; ++ ++#if defined(__i386__) /* little endian, 32 bits */ ++#define PADDED(x, y) x; unsigned y ++#define PADDEDptr(x, y) x; unsigned y ++#define PADDEDul(x, y) unsigned long x; unsigned y ++#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) ++#define PADDED(x, y) x, y ++#define PADDEDptr(x, y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__powerpc64__) /* big endian, 64 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x,y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__PPC__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x ++#elif defined(__s390x__) /* big endian, 64 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x,y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__s390__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x ++#elif defined(__arm__) ++# if defined (__ARMEB__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x ++# else /* little endian, 32 bits */ ++#define PADDED(x, y) x; unsigned y ++#define PADDEDptr(x, y) x; unsigned y ++#define PADDEDul(x, y) unsigned long x; unsigned y ++# endif ++#else ++#error endian? ++#endif ++ ++struct io_iocb_poll { ++ PADDED(int events, __pad1); ++}; /* result code is the set of result flags or -'ve errno */ ++ ++struct io_iocb_sockaddr { ++ struct sockaddr *addr; ++ int len; ++}; /* result code is the length of the sockaddr, or -'ve errno */ ++ ++struct io_iocb_common { ++ PADDEDptr(void *buf, __pad1); ++ PADDEDul(nbytes, __pad2); ++ long long offset; ++ long long __pad3; ++ unsigned flags; ++ unsigned resfd; ++}; /* result code is the amount read or -'ve errno */ ++ ++struct io_iocb_vector { ++ const struct iovec *vec; ++ int nr; ++ long long offset; ++}; /* result code is the amount read or -'ve errno */ ++ ++struct iocb { ++ PADDEDptr(void *data, __pad1); /* Return in the io completion event */ ++ PADDED(unsigned key, __pad2); /* For use in identifying io requests */ ++ ++ short aio_lio_opcode; ++ short aio_reqprio; ++ int aio_fildes; ++ ++ union { ++ struct io_iocb_common c; ++ struct io_iocb_vector v; ++ struct io_iocb_poll poll; ++ struct io_iocb_sockaddr saddr; ++ } u; ++}; ++ ++struct io_event { ++ PADDEDptr(void *data, __pad1); ++ PADDEDptr(struct iocb *obj, __pad2); ++ PADDEDul(res, __pad3); ++ PADDEDul(res2, __pad4); ++}; ++ ++#undef PADDED ++#undef PADDEDptr ++#undef PADDEDul ++ ++typedef void (*io_callback_t)(io_context_t ctx, struct iocb *iocb, long res, long res2); ++ ++/* library wrappers */ ++extern int io_queue_init(int maxevents, io_context_t *ctxp); ++/*extern int io_queue_grow(io_context_t ctx, int new_maxevents);*/ ++extern int io_queue_release(io_context_t ctx); ++/*extern int io_queue_wait(io_context_t ctx, struct timespec *timeout);*/ ++extern int io_queue_run(io_context_t ctx); ++ ++/* Actual syscalls */ ++extern int io_setup(int maxevents, io_context_t *ctxp); ++extern int io_destroy(io_context_t ctx); ++extern int io_submit(io_context_t ctx, long nr, struct iocb *ios[]); ++extern int io_cancel(io_context_t ctx, struct iocb *iocb, struct io_event *evt); ++extern int io_getevents(io_context_t ctx_id, long min_nr, long nr, struct io_event *events, struct timespec *timeout); ++ ++ ++static inline void io_set_callback(struct iocb *iocb, io_callback_t cb) ++{ ++ iocb->data = (void *)cb; ++} ++ ++static inline void io_prep_pread(struct iocb *iocb, int fd, void *buf, size_t count, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PREAD; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = buf; ++ iocb->u.c.nbytes = count; ++ iocb->u.c.offset = offset; ++} ++ ++static inline void io_prep_pwrite(struct iocb *iocb, int fd, void *buf, size_t count, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PWRITE; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = buf; ++ iocb->u.c.nbytes = count; ++ iocb->u.c.offset = offset; ++} ++ ++static inline void io_prep_preadv(struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PREADV; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = (void *)iov; ++ iocb->u.c.nbytes = iovcnt; ++ iocb->u.c.offset = offset; ++} ++ ++static inline void io_prep_pwritev(struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PWRITEV; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = (void *)iov; ++ iocb->u.c.nbytes = iovcnt; ++ iocb->u.c.offset = offset; ++} ++ ++/* Jeff Moyer says this was implemented in Red Hat AS2.1 and RHEL3. ++ * AFAICT, it was never in mainline, and should not be used. --RR */ ++static inline void io_prep_poll(struct iocb *iocb, int fd, int events) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_POLL; ++ iocb->aio_reqprio = 0; ++ iocb->u.poll.events = events; ++} ++ ++static inline int io_poll(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd, int events) ++{ ++ io_prep_poll(iocb, fd, events); ++ io_set_callback(iocb, cb); ++ return io_submit(ctx, 1, &iocb); ++} ++ ++static inline void io_prep_fsync(struct iocb *iocb, int fd) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_FSYNC; ++ iocb->aio_reqprio = 0; ++} ++ ++static inline int io_fsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd) ++{ ++ io_prep_fsync(iocb, fd); ++ io_set_callback(iocb, cb); ++ return io_submit(ctx, 1, &iocb); ++} ++ ++static inline void io_prep_fdsync(struct iocb *iocb, int fd) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_FDSYNC; ++ iocb->aio_reqprio = 0; ++} ++ ++static inline int io_fdsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd) ++{ ++ io_prep_fdsync(iocb, fd); ++ io_set_callback(iocb, cb); ++ return io_submit(ctx, 1, &iocb); ++} ++ ++static inline void io_set_eventfd(struct iocb *iocb, int eventfd) ++{ ++ iocb->u.c.flags |= (1 << 0) /* IOCB_FLAG_RESFD */; ++ iocb->u.c.resfd = eventfd; ++} ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __LIBAIO_H */ +diff -uNr libaio-0.3.109-orig/compat-libaio-0.3.109/src/syscall.h libaio-0.3.109/compat-libaio-0.3.109/src/syscall.h +--- libaio-0.3.109-orig/compat-libaio-0.3.109/src/syscall.h 2009-10-09 13:17:02.000000000 -0500 ++++ libaio-0.3.109/compat-libaio-0.3.109/src/syscall.h 2011-04-03 12:53:23.000000000 -0500 +@@ -24,6 +24,8 @@ + #include "syscall-alpha.h" + #elif defined(__arm__) + #include "syscall-arm.h" ++#elif defined(__sparc__) ++#include "syscall-sparc.h" + #else + #error "add syscall-arch.h" + #endif +diff -uNr libaio-0.3.109-orig/compat-libaio-0.3.109/src/syscall.h.orig libaio-0.3.109/compat-libaio-0.3.109/src/syscall.h.orig +--- libaio-0.3.109-orig/compat-libaio-0.3.109/src/syscall.h.orig 1969-12-31 18:00:00.000000000 -0600 ++++ libaio-0.3.109/compat-libaio-0.3.109/src/syscall.h.orig 2009-10-09 13:17:02.000000000 -0500 +@@ -0,0 +1,29 @@ ++#include ++#include ++ ++#define _SYMSTR(str) #str ++#define SYMSTR(str) _SYMSTR(str) ++ ++#define SYMVER(compat_sym, orig_sym, ver_sym) \ ++ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)); ++ ++#define DEFSYMVER(compat_sym, orig_sym, ver_sym) \ ++ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)); ++ ++#if defined(__i386__) ++#include "syscall-i386.h" ++#elif defined(__x86_64__) ++#include "syscall-x86_64.h" ++#elif defined(__ia64__) ++#include "syscall-ia64.h" ++#elif defined(__PPC__) ++#include "syscall-ppc.h" ++#elif defined(__s390__) ++#include "syscall-s390.h" ++#elif defined(__alpha__) ++#include "syscall-alpha.h" ++#elif defined(__arm__) ++#include "syscall-arm.h" ++#else ++#error "add syscall-arch.h" ++#endif +diff -uNr libaio-0.3.109-orig/compat-libaio-0.3.109/src/syscall-sparc.h libaio-0.3.109/compat-libaio-0.3.109/src/syscall-sparc.h +--- libaio-0.3.109-orig/compat-libaio-0.3.109/src/syscall-sparc.h 1969-12-31 18:00:00.000000000 -0600 ++++ libaio-0.3.109/compat-libaio-0.3.109/src/syscall-sparc.h 2011-04-03 12:51:33.000000000 -0500 +@@ -0,0 +1,118 @@ ++#include ++ ++#define __NR_io_setup 268 ++#define __NR_io_destroy 269 ++#define __NR_io_submit 270 ++#define __NR_io_cancel 271 ++#define __NR_io_getevents 272 ++ ++#define io_syscall1(type,fname,sname,type1,arg1) \ ++type fname(type1 arg1) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res >= 0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \ ++type fname(type1 arg1,type2 arg2) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res >= 0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \ ++type fname(type1 arg1,type2 arg2,type3 arg3) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++register long __o2 __asm__ ("o2") = (long)(arg3); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res>=0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ ++type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++register long __o2 __asm__ ("o2") = (long)(arg3); \ ++register long __o3 __asm__ ("o3") = (long)(arg4); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res>=0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ ++ type5,arg5) \ ++type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++register long __o2 __asm__ ("o2") = (long)(arg3); \ ++register long __o3 __asm__ ("o3") = (long)(arg4); \ ++register long __o4 __asm__ ("o4") = (long)(arg5); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__o4), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res>=0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} +diff -uNr libaio-0.3.109-orig/src/libaio.h libaio-0.3.109/src/libaio.h +--- libaio-0.3.109-orig/src/libaio.h 2009-10-09 13:17:02.000000000 -0500 ++++ libaio-0.3.109/src/libaio.h 2011-04-03 12:53:38.000000000 -0500 +@@ -83,6 +83,14 @@ + #define PADDEDptr(x, y) x; unsigned y + #define PADDEDul(x, y) unsigned long x; unsigned y + # endif ++#elif defined(__sparc__) && defined(__arch64__) /* big endian, 64 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x,y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__sparc__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x + #else + #error endian? + #endif +diff -uNr libaio-0.3.109-orig/src/libaio.h.orig libaio-0.3.109/src/libaio.h.orig +--- libaio-0.3.109-orig/src/libaio.h.orig 1969-12-31 18:00:00.000000000 -0600 ++++ libaio-0.3.109/src/libaio.h.orig 2009-10-09 13:17:02.000000000 -0500 +@@ -0,0 +1,265 @@ ++/* /usr/include/libaio.h ++ * ++ * Copyright 2000,2001,2002 Red Hat, Inc. ++ * ++ * Written by Benjamin LaHaise ++ * ++ * libaio Linux async I/O interface ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++#ifndef __LIBAIO_H ++#define __LIBAIO_H ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#include ++#include ++ ++struct timespec; ++struct sockaddr; ++struct iovec; ++ ++typedef struct io_context *io_context_t; ++ ++typedef enum io_iocb_cmd { ++ IO_CMD_PREAD = 0, ++ IO_CMD_PWRITE = 1, ++ ++ IO_CMD_FSYNC = 2, ++ IO_CMD_FDSYNC = 3, ++ ++ IO_CMD_POLL = 5, /* Never implemented in mainline, see io_prep_poll */ ++ IO_CMD_NOOP = 6, ++ IO_CMD_PREADV = 7, ++ IO_CMD_PWRITEV = 8, ++} io_iocb_cmd_t; ++ ++#if defined(__i386__) /* little endian, 32 bits */ ++#define PADDED(x, y) x; unsigned y ++#define PADDEDptr(x, y) x; unsigned y ++#define PADDEDul(x, y) unsigned long x; unsigned y ++#elif defined(__ia64__) || defined(__x86_64__) || defined(__alpha__) ++#define PADDED(x, y) x, y ++#define PADDEDptr(x, y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__powerpc64__) /* big endian, 64 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x,y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__PPC__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x ++#elif defined(__s390x__) /* big endian, 64 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x,y) x ++#define PADDEDul(x, y) unsigned long x ++#elif defined(__s390__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x ++#elif defined(__arm__) ++# if defined (__ARMEB__) /* big endian, 32 bits */ ++#define PADDED(x, y) unsigned y; x ++#define PADDEDptr(x, y) unsigned y; x ++#define PADDEDul(x, y) unsigned y; unsigned long x ++# else /* little endian, 32 bits */ ++#define PADDED(x, y) x; unsigned y ++#define PADDEDptr(x, y) x; unsigned y ++#define PADDEDul(x, y) unsigned long x; unsigned y ++# endif ++#else ++#error endian? ++#endif ++ ++struct io_iocb_poll { ++ PADDED(int events, __pad1); ++}; /* result code is the set of result flags or -'ve errno */ ++ ++struct io_iocb_sockaddr { ++ struct sockaddr *addr; ++ int len; ++}; /* result code is the length of the sockaddr, or -'ve errno */ ++ ++struct io_iocb_common { ++ PADDEDptr(void *buf, __pad1); ++ PADDEDul(nbytes, __pad2); ++ long long offset; ++ long long __pad3; ++ unsigned flags; ++ unsigned resfd; ++}; /* result code is the amount read or -'ve errno */ ++ ++struct io_iocb_vector { ++ const struct iovec *vec; ++ int nr; ++ long long offset; ++}; /* result code is the amount read or -'ve errno */ ++ ++struct iocb { ++ PADDEDptr(void *data, __pad1); /* Return in the io completion event */ ++ PADDED(unsigned key, __pad2); /* For use in identifying io requests */ ++ ++ short aio_lio_opcode; ++ short aio_reqprio; ++ int aio_fildes; ++ ++ union { ++ struct io_iocb_common c; ++ struct io_iocb_vector v; ++ struct io_iocb_poll poll; ++ struct io_iocb_sockaddr saddr; ++ } u; ++}; ++ ++struct io_event { ++ PADDEDptr(void *data, __pad1); ++ PADDEDptr(struct iocb *obj, __pad2); ++ PADDEDul(res, __pad3); ++ PADDEDul(res2, __pad4); ++}; ++ ++#undef PADDED ++#undef PADDEDptr ++#undef PADDEDul ++ ++typedef void (*io_callback_t)(io_context_t ctx, struct iocb *iocb, long res, long res2); ++ ++/* library wrappers */ ++extern int io_queue_init(int maxevents, io_context_t *ctxp); ++/*extern int io_queue_grow(io_context_t ctx, int new_maxevents);*/ ++extern int io_queue_release(io_context_t ctx); ++/*extern int io_queue_wait(io_context_t ctx, struct timespec *timeout);*/ ++extern int io_queue_run(io_context_t ctx); ++ ++/* Actual syscalls */ ++extern int io_setup(int maxevents, io_context_t *ctxp); ++extern int io_destroy(io_context_t ctx); ++extern int io_submit(io_context_t ctx, long nr, struct iocb *ios[]); ++extern int io_cancel(io_context_t ctx, struct iocb *iocb, struct io_event *evt); ++extern int io_getevents(io_context_t ctx_id, long min_nr, long nr, struct io_event *events, struct timespec *timeout); ++ ++ ++static inline void io_set_callback(struct iocb *iocb, io_callback_t cb) ++{ ++ iocb->data = (void *)cb; ++} ++ ++static inline void io_prep_pread(struct iocb *iocb, int fd, void *buf, size_t count, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PREAD; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = buf; ++ iocb->u.c.nbytes = count; ++ iocb->u.c.offset = offset; ++} ++ ++static inline void io_prep_pwrite(struct iocb *iocb, int fd, void *buf, size_t count, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PWRITE; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = buf; ++ iocb->u.c.nbytes = count; ++ iocb->u.c.offset = offset; ++} ++ ++static inline void io_prep_preadv(struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PREADV; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = (void *)iov; ++ iocb->u.c.nbytes = iovcnt; ++ iocb->u.c.offset = offset; ++} ++ ++static inline void io_prep_pwritev(struct iocb *iocb, int fd, const struct iovec *iov, int iovcnt, long long offset) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_PWRITEV; ++ iocb->aio_reqprio = 0; ++ iocb->u.c.buf = (void *)iov; ++ iocb->u.c.nbytes = iovcnt; ++ iocb->u.c.offset = offset; ++} ++ ++/* Jeff Moyer says this was implemented in Red Hat AS2.1 and RHEL3. ++ * AFAICT, it was never in mainline, and should not be used. --RR */ ++static inline void io_prep_poll(struct iocb *iocb, int fd, int events) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_POLL; ++ iocb->aio_reqprio = 0; ++ iocb->u.poll.events = events; ++} ++ ++static inline int io_poll(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd, int events) ++{ ++ io_prep_poll(iocb, fd, events); ++ io_set_callback(iocb, cb); ++ return io_submit(ctx, 1, &iocb); ++} ++ ++static inline void io_prep_fsync(struct iocb *iocb, int fd) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_FSYNC; ++ iocb->aio_reqprio = 0; ++} ++ ++static inline int io_fsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd) ++{ ++ io_prep_fsync(iocb, fd); ++ io_set_callback(iocb, cb); ++ return io_submit(ctx, 1, &iocb); ++} ++ ++static inline void io_prep_fdsync(struct iocb *iocb, int fd) ++{ ++ memset(iocb, 0, sizeof(*iocb)); ++ iocb->aio_fildes = fd; ++ iocb->aio_lio_opcode = IO_CMD_FDSYNC; ++ iocb->aio_reqprio = 0; ++} ++ ++static inline int io_fdsync(io_context_t ctx, struct iocb *iocb, io_callback_t cb, int fd) ++{ ++ io_prep_fdsync(iocb, fd); ++ io_set_callback(iocb, cb); ++ return io_submit(ctx, 1, &iocb); ++} ++ ++static inline void io_set_eventfd(struct iocb *iocb, int eventfd) ++{ ++ iocb->u.c.flags |= (1 << 0) /* IOCB_FLAG_RESFD */; ++ iocb->u.c.resfd = eventfd; ++} ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif /* __LIBAIO_H */ +diff -uNr libaio-0.3.109-orig/src/syscall.h libaio-0.3.109/src/syscall.h +--- libaio-0.3.109-orig/src/syscall.h 2009-10-09 13:17:02.000000000 -0500 ++++ libaio-0.3.109/src/syscall.h 2011-04-03 12:53:53.000000000 -0500 +@@ -24,6 +24,8 @@ + #include "syscall-alpha.h" + #elif defined(__arm__) + #include "syscall-arm.h" ++#elif defined(__sparc__) ++#include "syscall-sparc.h" + #else + #error "add syscall-arch.h" + #endif +diff -uNr libaio-0.3.109-orig/src/syscall.h.orig libaio-0.3.109/src/syscall.h.orig +--- libaio-0.3.109-orig/src/syscall.h.orig 1969-12-31 18:00:00.000000000 -0600 ++++ libaio-0.3.109/src/syscall.h.orig 2009-10-09 13:17:02.000000000 -0500 +@@ -0,0 +1,29 @@ ++#include ++#include ++ ++#define _SYMSTR(str) #str ++#define SYMSTR(str) _SYMSTR(str) ++ ++#define SYMVER(compat_sym, orig_sym, ver_sym) \ ++ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)); ++ ++#define DEFSYMVER(compat_sym, orig_sym, ver_sym) \ ++ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)); ++ ++#if defined(__i386__) ++#include "syscall-i386.h" ++#elif defined(__x86_64__) ++#include "syscall-x86_64.h" ++#elif defined(__ia64__) ++#include "syscall-ia64.h" ++#elif defined(__PPC__) ++#include "syscall-ppc.h" ++#elif defined(__s390__) ++#include "syscall-s390.h" ++#elif defined(__alpha__) ++#include "syscall-alpha.h" ++#elif defined(__arm__) ++#include "syscall-arm.h" ++#else ++#error "add syscall-arch.h" ++#endif +diff -uNr libaio-0.3.109-orig/src/syscall-sparc.h libaio-0.3.109/src/syscall-sparc.h +--- libaio-0.3.109-orig/src/syscall-sparc.h 1969-12-31 18:00:00.000000000 -0600 ++++ libaio-0.3.109/src/syscall-sparc.h 2011-04-03 12:51:33.000000000 -0500 +@@ -0,0 +1,118 @@ ++#include ++ ++#define __NR_io_setup 268 ++#define __NR_io_destroy 269 ++#define __NR_io_submit 270 ++#define __NR_io_cancel 271 ++#define __NR_io_getevents 272 ++ ++#define io_syscall1(type,fname,sname,type1,arg1) \ ++type fname(type1 arg1) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res >= 0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \ ++type fname(type1 arg1,type2 arg2) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res >= 0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \ ++type fname(type1 arg1,type2 arg2,type3 arg3) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++register long __o2 __asm__ ("o2") = (long)(arg3); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res>=0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ ++type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++register long __o2 __asm__ ("o2") = (long)(arg3); \ ++register long __o3 __asm__ ("o3") = (long)(arg4); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res>=0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} ++ ++#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \ ++ type5,arg5) \ ++type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ ++{ \ ++long __res; \ ++register long __g1 __asm__ ("g1") = __NR_##sname; \ ++register long __o0 __asm__ ("o0") = (long)(arg1); \ ++register long __o1 __asm__ ("o1") = (long)(arg2); \ ++register long __o2 __asm__ ("o2") = (long)(arg3); \ ++register long __o3 __asm__ ("o3") = (long)(arg4); \ ++register long __o4 __asm__ ("o4") = (long)(arg5); \ ++__asm__ __volatile__ ("t 0x10\n\t" \ ++ "bcc 1f\n\t" \ ++ "mov %%o0, %0\n\t" \ ++ "sub %%g0, %%o0, %0\n\t" \ ++ "1:\n\t" \ ++ : "=r" (__res), "=&r" (__o0) \ ++ : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__o3), "r" (__o4), "r" (__g1) \ ++ : "cc"); \ ++if (__res < -255 || __res>=0) \ ++ return (type) __res; \ ++errno = -__res; \ ++return -1; \ ++} diff --git a/SPECS/libaio.spec b/SPECS/libaio.spec new file mode 100644 index 0000000..bc10d84 --- /dev/null +++ b/SPECS/libaio.spec @@ -0,0 +1,269 @@ +Name: libaio +Version: 0.3.109 +Release: 9%{?dist} +Summary: Linux-native asynchronous I/O access library +License: LGPLv2+ +Group: System Environment/Libraries +Source: http://git.fedorahosted.org/cgit/libaio.git/snapshot/%{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-root +Patch1: libaio-install-to-slash.patch +Patch2: libaio-sparc.patch + +%description +The Linux-native asynchronous I/O facility ("async I/O", or "aio") has a +richer API and capability set than the simple POSIX async I/O facility. +This library, libaio, provides the Linux-native API for async I/O. +The POSIX async I/O facility requires this library in order to provide +kernel-accelerated async I/O capabilities, as do applications which +require the Linux-native async I/O API. + +%define libdir /%{_lib} +%define usrlibdir %{_prefix}/%{_lib} + +%package devel +Summary: Development files for Linux-native asynchronous I/O access +Group: Development/System +Requires: libaio + +%description devel +This package provides header files to include and libraries to link with +for the Linux-native asynchronous I/O facility ("async I/O", or "aio"). + +%prep +%setup -a 0 +%patch1 -p1 +mv %{name}-%{version} compat-%{name}-%{version} +%patch2 -p1 + +%build +# A library with a soname of 1.0.0 was inadvertantly released. This +# build process builds a version of the library with the broken soname in +# the compat-libaio-0.3.103 directory, and then builds the library again +# with the correct soname. +cd compat-%{name}-%{version} +make soname='libaio.so.1.0.0' libname='libaio.so.1.0.0' +cd .. +make + +%install +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT +cd compat-%{name}-%{version} +install -D -m 755 src/libaio.so.1.0.0 \ + $RPM_BUILD_ROOT/%{libdir}/libaio.so.1.0.0 +cd .. +make destdir=$RPM_BUILD_ROOT prefix=/ libdir=%{libdir} usrlibdir=%{usrlibdir} \ + includedir=%{_includedir} install + +%clean +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root) +%attr(0755,root,root) %{libdir}/libaio.so.* +%doc COPYING TODO + +%files devel +%defattr(-,root,root) +%attr(0644,root,root) %{_includedir}/* +%attr(0755,root,root) %{usrlibdir}/libaio.so* +%exclude %{_libdir}/libaio.a + +%changelog +* Tue Nov 13 2012 Jeff Moyer - 0.3.109-8 +- Change the source location to the new upstream on fedorahosted +- import a new tarball from the new source + +* Thu Jul 19 2012 Fedora Release Engineering - 0.3.109-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 0.3.109-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Apr 04 2011 Dennis Gilmore - 0.3.109-4 +-patch in sparc support + +* Mon Feb 07 2011 Fedora Release Engineering - 0.3.109-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Jan 19 2010 Jeff Moyer - 0.3.109-2 +- Get rid of the static library. (Bug 556059) + +* Fri Oct 9 2009 Jeff Moyer - 0.3.109-1 +- Pull in upstream .109 to get ARM architecture support. +- Remove the broken sparc patch; it should go upstream first. + +* Fri Jul 24 2009 Fedora Release Engineering - 0.3.107-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 0.3.107-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Jan 20 2009 Jeff Moyer - 0.3.107-7 +- Fix the install to / patch. + +* Wed Oct 01 2008 Dennis Gilmore - 0.3.107-6 +- add patch with sparc support + +* Wed Oct 01 2008 Dennis Gilmore - 0.3.107-5 +- remove ExclusiveArch line + +* Wed Sep 3 2008 Jeff Moyer - 0.3.107-4 +- Install to / instead of /usr for early users of libaio (Jeff Moyer) +- Resolves: bz#459158 + +* Tue Aug 5 2008 Tom "spot" Callaway - 0.3.107-3 +- fix license tag + +* Thu Jun 05 2008 Jeff Moyer - 0.3.107-2 +- Update to the latest upstream which adds eventfd support and fixes broken + test cases. (Rusty Russell) + +* Tue Feb 19 2008 Fedora Release Engineering - 0.3.106-4.2 +- Autorebuild for GCC 4.3 + +* Mon Jul 17 2006 Jeff Moyer - 0.3.106-3.2 +- rebuild + +* Wed Jul 12 2006 Jesse Keating - 0.3.106-3.1 +- rebuild + +* Wed Jun 7 2006 Jeremy Katz - 0.3.106-3 +- rebuild for -devel deps + +* Fri Feb 10 2006 Jesse Keating - 0.3.106-2.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 0.3.106-2.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Wed Jan 04 2006 Jeff Moyer - 0.3.106-2 +- Update to the latest sources, which contain the following change: + Add a .proc directive for the ia64_aio_raw_syscall macro. This sounds a lot + like the previous entry, but that one fixed the __ia64_raw_syscall macro, + located in syscall-ia64.h. This macro is in raw_syscall.c, which pretty much + only exists for ia64. This bug prevented the package from building with + newer version of gcc. + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Fri Apr 1 2005 Jeff Moyer - 0.3.104-2 +- Add Alpha architecture support. (Sergey Tikhonov ) + +* Wed Mar 16 2005 Jeff Moyer - 0.3.103-6 +- Rebuild with gcc 4. + +* Mon Feb 14 2005 Jeff Moyer - 0.3.103-4 +- Build the library twice. Once with the old SONAME and once with the new + one. This fixes the wrong SONAME problem by keeping a library around with + the wrong name (libaio.so.1.0.0) and generating a new one (libaio.so.1.0.1). + +* Thu Oct 14 2004 Jeff Moyer - 0.3.102-1 +- update to 102. Fixes build errors on s390: + - S390 asm had a bug; I forgot to update the clobber list. Lucky for me, + newer compilers complain about such things. + - Also update the s390 asm to look more like the new kernel variants. + +* Wed Oct 13 2004 Jeff Moyer - 0.3.101-1 +- update to 101. Fixes bz 133253 - libaio backwards compatibility severely + broken. + +* Tue Sep 14 2004 Jeff Moyer - 0.3.100-1 +- update to 100. Fixes bz 129910. Add pseries and iseries to + exclusivearch. + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue Mar 30 2004 Jeff Moyer - 0.3.99-2 +- Apparently the 0.3.93 patch was not meant for 0.3.96. Backed it out. + +* Tue Mar 30 2004 Jeff Moyer - 0.3.99-1 +- Fix compat calls. +- make library .so.1.0.0 and make symlinks properly. +- Fix header file for inclusion in c++ code. + +* Thu Feb 26 2004 Jeff Moyer 0.3.98-2 +- bah. fix version nr in changelog. + +* Thu Feb 26 2004 Jeff Moyer 0.3.98-1 +- fix compiler warnings. + +* Thu Feb 26 2004 Jeff Moyer 0.3.97-2 +- make srpm was using rpm to do a build. changed that to use rpmbuild if + it exists, and fallback to rpm if it doesn't. + +* Tue Feb 24 2004 Jeff Moyer 0.3.97-1 +- Use libc syscall(2) instead of rolling our own calling mechanism. This + change is inspired due to a failure to build with newer gcc, since clobber + lists were wrong. +- Add -fpic to the CFLAGS for all architectures. Should address bz #109457. +- change a #include from to . Fixes a build + issue on s390. + +* Wed Jul 7 2003 Bill Nottingham 0.3.96-3 +- fix paths on lib64 arches + +* Wed Jun 18 2003 Michael K. Johnson 0.3.96-2 +- optimization in io_getevents from Arjan van de Ven in 0.3.96-1 +- deal with ia64 in 0.3.96-2 + +* Wed May 28 2003 Michael K. Johnson 0.3.95-1 +- ppc bugfix from Julie DeWandel + +* Tue May 20 2003 Michael K. Johnson 0.3.94-1 +- symbol versioning fix from Ulrich Drepper + +* Mon Jan 27 2003 Benjamin LaHaise +- bump to 0.3.93-3 for rebuild. + +* Mon Dec 16 2002 Benjamin LaHaise +- libaio 0.3.93 test release +- add powerpc support from Gianni Tedesco +- add s/390 support from Arnd Bergmann + +* Fri Sep 12 2002 Benjamin LaHaise +- libaio 0.3.92 test release +- build on x86-64 + +* Thu Sep 12 2002 Benjamin LaHaise +- libaio 0.3.91 test release +- build on ia64 +- remove libredhat-kernel from the .spec file + +* Thu Sep 5 2002 Benjamin LaHaise +- libaio 0.3.90 test release + +* Mon Apr 29 2002 Benjamin LaHaise +- add requires initscripts >= 6.47-1 to get boot time libredhat-kernel + linkage correct. +- typo fix + +* Thu Apr 25 2002 Benjamin LaHaise +- make /usr/lib/libredhat-kernel.so point to /lib/libredhat-kernel.so.1.0.0 + +* Mon Apr 15 2002 Tim Powers +- make the post scriptlet not use /bin/sh + +* Sat Apr 12 2002 Benjamin LaHaise +- add /lib/libredhat-kernel* to %files. + +* Fri Apr 12 2002 Benjamin LaHaise +- make the dummy install as /lib/libredhat-kernel.so.1.0.0 so + that ldconfig will link against it if no other is installed. + +* Tue Jan 22 2002 Benjamin LaHaise +- add io_getevents + +* Tue Jan 22 2002 Michael K. Johnson +- Make linker happy with /usr/lib symlink for libredhat-kernel.so + +* Mon Jan 21 2002 Michael K. Johnson +- Added stub library + +* Sun Jan 20 2002 Michael K. Johnson +- Initial packaging