[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