[arch-commits] Commit in memcached/trunk (PKGBUILD fix-type-punning-issues.patch)
Dan McGee
dan at archlinux.org
Wed Jul 27 01:25:28 UTC 2011
Date: Tuesday, July 26, 2011 @ 21:25:28
Author: dan
Revision: 133031
upgpkg: memcached 1.4.6-1
verbump 1.4.6
Modified:
memcached/trunk/PKGBUILD
Deleted:
memcached/trunk/fix-type-punning-issues.patch
-------------------------------+
PKGBUILD | 26 ++++++--------
fix-type-punning-issues.patch | 73 ----------------------------------------
2 files changed, 11 insertions(+), 88 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2011-07-26 22:29:51 UTC (rev 133030)
+++ PKGBUILD 2011-07-27 01:25:28 UTC (rev 133031)
@@ -3,8 +3,8 @@
# Contributor: Michael Irwin <6d6469 at gmail.com>
pkgname=memcached
-pkgver=1.4.5
-pkgrel=3
+pkgver=1.4.6
+pkgrel=1
pkgdesc="A distributed memory object caching system"
arch=(i686 x86_64)
url="http://memcached.org/"
@@ -14,26 +14,22 @@
backup=('etc/conf.d/memcached')
source=(http://memcached.googlecode.com/files/$pkgname-$pkgver.tar.gz
memcached.conf
- memcached.sh
- fix-type-punning-issues.patch)
+ memcached.sh)
changelog=ChangeLog
+sha256sums=('4dba55457e4e7f5a3e8255325671bf1e1efbe89ee224fcc6993fcd659956d3f7'
+ '0e57a0f528b387f1f04f628ec74856c615d82d44f4d6bc041c33b3814ce13d0a'
+ '72efa639c5a39c7c14f07cc51731ebbf82299870d9cf31cf3aaa981bc084b4eb')
build() {
- cd $srcdir/$pkgname-$pkgver
- patch -Np1 < $srcdir/fix-type-punning-issues.patch
+ cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr
make
}
package() {
- cd $srcdir/$pkgname-$pkgver
- make DESTDIR=$pkgdir install
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
install -D -m 755 scripts/memcached-tool $pkgdir/usr/bin/memcached-tool
- install -D -m 644 $srcdir/$pkgname.conf $pkgdir/etc/conf.d/$pkgname
- install -D -m 755 $srcdir/$pkgname.sh $pkgdir/etc/rc.d/$pkgname
+ install -D -m 644 "$srcdir/memcached.conf" $pkgdir/etc/conf.d/memcached
+ install -D -m 755 "$srcdir/memcached.sh" $pkgdir/etc/rc.d/memcached
}
-
-md5sums=('583441a25f937360624024f2881e5ea8'
- 'bf15619930dadf0c08669566e4aa809c'
- '65f88b69cf3112b178725af121327765'
- 'c4f6da682cb4e7599fede4904021f4ae')
Deleted: fix-type-punning-issues.patch
===================================================================
--- fix-type-punning-issues.patch 2011-07-26 22:29:51 UTC (rev 133030)
+++ fix-type-punning-issues.patch 2011-07-27 01:25:28 UTC (rev 133031)
@@ -1,73 +0,0 @@
-commit df15887584f0025e7b188e408dd3c9f638d68518
-Author: Dan McGee <dan at archlinux.org>
-Date: Tue Nov 2 18:43:00 2010 -0500
-
- Fix type-punning issues exposed with GCC 4.5.1
-
- The errors below are due to pointer magic that isn't allowed if following C
- strict-aliasing rules:
-
- memcached.c: In function ‘complete_incr_bin’:
- memcached.c:1023:16: error: dereferencing type-punned pointer will break
- strict-aliasing rules
- memcached.c:1044:13: error: dereferencing type-punned pointer will break
- strict-aliasing rules
- memcached.c:1061:17: error: dereferencing type-punned pointer will break
- strict-aliasing rules
-
- Fix this by introducing a union type that allows access to the uint64_t
- member as necessary, but doesn't add any additional length to the structure.
- The size remains the same before and after; the only difference is explict
- casts are now refactored into union member accesses and all compilers should
- be happy.
-
- Signed-off-by: Dan McGee <dan at archlinux.org>
-
-diff --git a/memcached.h b/memcached.h
-index 4a7295b..74a6592 100644
---- a/memcached.h
-+++ b/memcached.h
-@@ -77,18 +77,22 @@
- #define TAIL_REPAIR_TIME (3 * 3600)
-
- /* warning: don't use these macros with a function, as it evals its arg twice */
--#define ITEM_get_cas(i) ((uint64_t)(((i)->it_flags & ITEM_CAS) ? \
-- *(uint64_t*)&((i)->end[0]) : 0x0))
--#define ITEM_set_cas(i,v) { if ((i)->it_flags & ITEM_CAS) { \
-- *(uint64_t*)&((i)->end[0]) = v; } }
-+#define ITEM_get_cas(i) (((i)->it_flags & ITEM_CAS) ? \
-+ (i)->data->cas : (uint64_t)0)
-
--#define ITEM_key(item) (((char*)&((item)->end[0])) \
-+#define ITEM_set_cas(i,v) { \
-+ if ((i)->it_flags & ITEM_CAS) { \
-+ (i)->data->cas = v; \
-+ } \
-+}
-+
-+#define ITEM_key(item) (((char*)&((item)->data)) \
- + (((item)->it_flags & ITEM_CAS) ? sizeof(uint64_t) : 0))
-
--#define ITEM_suffix(item) ((char*) &((item)->end[0]) + (item)->nkey + 1 \
-+#define ITEM_suffix(item) ((char*) &((item)->data) + (item)->nkey + 1 \
- + (((item)->it_flags & ITEM_CAS) ? sizeof(uint64_t) : 0))
-
--#define ITEM_data(item) ((char*) &((item)->end[0]) + (item)->nkey + 1 \
-+#define ITEM_data(item) ((char*) &((item)->data) + (item)->nkey + 1 \
- + (item)->nsuffix \
- + (((item)->it_flags & ITEM_CAS) ? sizeof(uint64_t) : 0))
-
-@@ -302,7 +306,12 @@ typedef struct _stritem {
- uint8_t it_flags; /* ITEM_* above */
- uint8_t slabs_clsid;/* which slab class we're in */
- uint8_t nkey; /* key length, w/terminating null and padding */
-- void * end[];
-+ /* this odd type prevents type-punning issues when we do
-+ * the little shuffle to save space when not using CAS. */
-+ union {
-+ uint64_t cas;
-+ char end;
-+ } data[];
- /* if it_flags & ITEM_CAS we have 8 bytes CAS */
- /* then null-terminated key */
- /* then " flags length\r\n" (no terminating null) */
More information about the arch-commits
mailing list