Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Mark Hatle <mark.hatle@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Cc: "Wold, Saul" <saul.wold@intel.com>
Subject: Re: [PATCH 10/20] pseudo: Wrap renameat and opendir
Date: Tue, 7 Feb 2012 18:21:07 -0500	[thread overview]
Message-ID: <4F31B1E3.4080600@windriver.com> (raw)
In-Reply-To: <4F3154CD.3000305@linux.intel.com>

The pseudo upstream has been updated.  We should like just update the recipe to 
use git commit: 	9461b2a88ba672c533a331f95dd5ba7eba683c77

--Mark

On 2/7/12 11:43 AM, Saul Wold wrote:
> On 02/07/2012 08:31 AM, Khem Raj wrote:
>> On Tue, Feb 7, 2012 at 8:21 AM, Saul Wold<sgw@linux.intel.com>   wrote:
>>> On 02/05/2012 10:40 PM, Khem Raj wrote:
>>>>
>>>> Signed-off-by: Khem Raj<raj.khem@gmail.com>
>>>> ---
>>>>    meta/recipes-devtools/pseudo/pseudo/opendir.patch  |   92 ++++++++
>>>>    meta/recipes-devtools/pseudo/pseudo/renameat.patch |  227
>>>> ++++++++++++++++++++
>>>>    meta/recipes-devtools/pseudo/pseudo_1.2.bb         |    6 +-
>>>>    3 files changed, 323 insertions(+), 2 deletions(-)
>>>>    create mode 100644 meta/recipes-devtools/pseudo/pseudo/opendir.patch
>>>>    create mode 100644 meta/recipes-devtools/pseudo/pseudo/renameat.patch
>>>>
>>>> diff --git a/meta/recipes-devtools/pseudo/pseudo/opendir.patch
>>>> b/meta/recipes-devtools/pseudo/pseudo/opendir.patch
>>>> new file mode 100644
>>>> index 0000000..d20f717
>>>> --- /dev/null
>>>> +++ b/meta/recipes-devtools/pseudo/pseudo/opendir.patch
>>>> @@ -0,0 +1,92 @@
>>>> +commit 162f2692c399b93311652201a940fdaf9c9e6924
>>>> +Author: Peter Seebach<peter.seebach@windriver.com>
>>>> +Date:   Thu Feb 2 11:45:42 2012 -0600
>>>> +
>>>> +    Make opendir/closedir stash and forget directory names.
>>>> +
>>>> +    The dirfd(DIR *) interface allows you to get the fd for a DIR *,
>>>> +    meaning you can use it with openat(), meaning you can need its
>>>> +    path.  This causes a segfault.  Also gonna fix the base_path
>>>> +    code not to segfault in that case, but first fix the underlying
>>>> +    problem.
>>>> +
>>>
>>>
>>> Missing Upstream-Status: and Signed-off-by (yes I know we have an email
>>> header).
>>
>> they are backports
>>
> Please update the patch!
>
> Thanks
> 	Sau!
>
>>>
>>> Thanks
>>>          Sau!
>>>
>>>> +diff --git a/ChangeLog.txt b/ChangeLog.txt
>>>> +index 4de488c..9625b38 100644
>>>> +--- a/ChangeLog.txt
>>>> ++++ b/ChangeLog.txt
>>>> +@@ -1,3 +1,7 @@
>>>> ++2012-02-02:
>>>> ++      * (seebs) stash dir name for DIR * from opendir using dirfd.
>>>> ++      * (seebs) add closedir.
>>>> ++
>>>> + 2011-11-02:
>>>> +       * (seebs) Call this 1.2 because the UNLOAD change is moderately
>>>> +         significant, and so's the clone change.
>>>> +diff --git a/ports/unix/guts/closedir.c b/ports/unix/guts/closedir.c
>>>> +new file mode 100644
>>>> +index 0000000..1085361
>>>> +--- /dev/null
>>>> ++++ b/ports/unix/guts/closedir.c
>>>> +@@ -0,0 +1,20 @@
>>>> ++/*
>>>> ++ * Copyright (c) 2012 Wind River Systems; see
>>>> ++ * guts/COPYRIGHT for information.
>>>> ++ *
>>>> ++ * static int
>>>> ++ * wrap_closedir(DIR *dirp) {
>>>> ++ *    int rc = -1;
>>>> ++ */
>>>> ++      if (!dirp) {
>>>> ++              errno = EFAULT;
>>>> ++              return -1;
>>>> ++      }
>>>> ++
>>>> ++      int fd = dirfd(dirp);
>>>> ++      pseudo_client_op(OP_CLOSE, 0, fd, -1, 0, 0);
>>>> ++      rc = real_closedir(dirp);
>>>> ++
>>>> ++/*    return rc;
>>>> ++ * }
>>>> ++ */
>>>> +diff --git a/ports/unix/guts/opendir.c b/ports/unix/guts/opendir.c
>>>> +index 8eaa71f..e69717e 100644
>>>> +--- a/ports/unix/guts/opendir.c
>>>> ++++ b/ports/unix/guts/opendir.c
>>>> +@@ -6,8 +6,25 @@
>>>> +  * wrap_opendir(const char *path) {
>>>> +  *    DIR * rc = NULL;
>>>> +  */
>>>> ++      struct stat buf;
>>>> ++      int save_errno;
>>>> +
>>>> +       rc = real_opendir(path);
>>>> ++      if (rc) {
>>>> ++              int fd;
>>>> ++              save_errno = errno;
>>>> ++              fd = dirfd(rc);
>>>> ++              if (real_fstat(fd,&buf) == -1) {
>>>>
>>>> ++                      pseudo_debug(1, "diropen (fd %d) succeeded, but
>>>> fstat failed (%s).\n",
>>>> ++                              fd, strerror(errno));
>>>> ++                      pseudo_client_op_plain(OP_OPEN, PSA_READ, fd, -1,
>>>> path, 0);
>>>> ++              } else {
>>>> ++                      pseudo_client_op_plain(OP_OPEN, PSA_READ, fd, -1,
>>>> path,&buf);
>>>> ++              }
>>>> ++
>>>> ++
>>>> ++              errno = save_errno;
>>>> ++      }
>>>> +
>>>> + /*    return rc;
>>>> +  * }
>>>> +diff --git a/ports/unix/wrapfuncs.in b/ports/unix/wrapfuncs.in
>>>> +index e06e404..32250c4 100644
>>>> +--- a/ports/unix/wrapfuncs.in
>>>> ++++ b/ports/unix/wrapfuncs.in
>>>> +@@ -21,6 +21,7 @@ long pathconf(const char *path, int name);
>>>> + char *realpath(const char *name, char *resolved_name); /*
>>>> version="GLIBC_2.3" */
>>>> + int remove(const char *path); /* flags=AT_SYMLINK_NOFOLLOW */
>>>> + DIR *opendir(const char *path);
>>>> ++int closedir(DIR *dirp);
>>>> + char *tempnam(const char *template, const char *pfx);
>>>> + char *tmpnam(char *s);
>>>> + int truncate(const char *path, off_t length);
>>>> diff --git a/meta/recipes-devtools/pseudo/pseudo/renameat.patch
>>>> b/meta/recipes-devtools/pseudo/pseudo/renameat.patch
>>>> new file mode 100644
>>>> index 0000000..74c8585
>>>> --- /dev/null
>>>> +++ b/meta/recipes-devtools/pseudo/pseudo/renameat.patch
>>>> @@ -0,0 +1,227 @@
>>>> +commit 795f2b44b7f692151556782f142a4a6e7d45d892
>>>> +Author: Peter Seebach<peter.seebach@windriver.com>
>>>> +Date:   Thu Feb 2 15:49:21 2012 -0600
>>>> +
>>>> +    Implement renameat()
>>>> +
>>>> +    After three long years, someone tried to use this.  This was
>>>> impossibly
>>>> +    hard back when pseudo was written, because there was only one dirfd
>>>> +    provided for.  Thing is, now, the canonicalization happens in
>>>> wrapfuncs,
>>>> +    so a small tweak to makewrappers to recognize that oldpath should use
>>>> +    olddirfd if it exists is enough to get us fully canonicalized paths
>>>> +    when needed.
>>>> +
>>>> +    Also fix the crash if base_path gets called with an fd for which we
>>>> have
>>>> +    no path.
>>>> +
>>>> +diff --git a/ChangeLog.txt b/ChangeLog.txt
>>>> +index 9625b38..25bd463 100644
>>>> +--- a/ChangeLog.txt
>>>> ++++ b/ChangeLog.txt
>>>> +@@ -1,6 +1,9 @@
>>>> + 2012-02-02:
>>>> +       * (seebs) stash dir name for DIR * from opendir using dirfd.
>>>> +       * (seebs) add closedir.
>>>> ++      * (seebs) add initial pass at renameat()
>>>> ++      * (seebs) in base_path, don't try to strlen the result if
>>>> ++        fd_path() returns NULL.
>>>> +
>>>> + 2011-11-02:
>>>> +       * (seebs) Call this 1.2 because the UNLOAD change is moderately
>>>> +diff --git a/makewrappers b/makewrappers
>>>> +index 20bbf2b..bf344d6 100755
>>>> +--- a/makewrappers
>>>> ++++ b/makewrappers
>>>> +@@ -211,12 +211,13 @@ class Function:
>>>> +         self.flags = '0'
>>>> +         self.port = port
>>>> +         self.directory = ''
>>>> +-      self.version = 'NULL'
>>>> ++        self.version = 'NULL'
>>>> +         # On Darwin, some functions are SECRETLY converted to
>>>> foo$INODE64
>>>> +         # when called.  So we have to look those up for real_*
>>>> +         self.inode64 = None
>>>> +         self.real_func = None
>>>> +         self.paths_to_munge = []
>>>> ++        self.dirfds = {}
>>>> +         self.hand_wrapped = None
>>>> +         # used for the copyright date when creating stub functions
>>>> +         self.date = datetime.date.today().year
>>>> +@@ -239,6 +240,7 @@ class Function:
>>>> +         # * If the arg has a name ending in 'path', we will canonicalize
>>>> it.
>>>> +         # * If the arg is named 'dirfd' or 'flags', it becomes the
>>>> default
>>>> +         #   values for the dirfd and flags arguments when
>>>> canonicalizing.
>>>> ++        # * If the name ends in dirfd, we do the same fancy stuff.
>>>> +         # * Note that the "comments" field (/* ... */ after the decl)
>>>> can
>>>> +         #   override the dirfd/flags values.
>>>> +         self.args = ArgumentList(bits.group(2))
>>>> +@@ -246,7 +248,9 @@ class Function:
>>>> +             # ignore varargs, they never get these special treatments
>>>> +             if arg.vararg:
>>>> +                 pass
>>>> +-            elif arg.name == 'dirfd':
>>>> ++            elif arg.name[-5:] == 'dirfd':
>>>> ++                if len(arg.name)>     5:
>>>> ++                    self.dirfds[arg.name[:-5]] = True
>>>> +                 self.dirfd = 'dirfd'
>>>> +             elif arg.name == 'flags':
>>>> +                 self.flags = 'flags'
>>>> +@@ -325,9 +329,13 @@ class Function:
>>>> +         """create/allocate canonical paths"""
>>>> +         alloc_paths = []
>>>> +         for path in self.paths_to_munge:
>>>> ++            prefix = path[:-4]
>>>> ++          if not prefix in self.dirfds:
>>>> ++                prefix = ''
>>>> ++            print "for path %s: prefix<%s>" % ( path, prefix )
>>>> +             alloc_paths.append(
>>>> +-                "%s = pseudo_root_path(__func__, __LINE__, %s, %s, %s);"
>>>> %
>>>> +-                (path, self.dirfd, path, self.flags))
>>>> ++                "%s = pseudo_root_path(__func__, __LINE__, %s%s, %s,
>>>> %s);" %
>>>> ++                (path, prefix, self.dirfd, path, self.flags))
>>>> +         return "\n\t\t\t".join(alloc_paths)
>>>> +
>>>> +     def free_paths(self):
>>>> +diff --git a/ports/unix/guts/renameat.c b/ports/unix/guts/renameat.c
>>>> +index c8203b7..f13cd1e 100644
>>>> +--- a/ports/unix/guts/renameat.c
>>>> ++++ b/ports/unix/guts/renameat.c
>>>> +@@ -1,15 +1,111 @@
>>>> + /*
>>>> +- * Copyright (c) 2008-2010 Wind River Systems; see
>>>> ++ * Copyright (c) 2008-2012 Wind River Systems; see
>>>> +  * guts/COPYRIGHT for information.
>>>> +  *
>>>> +  * static int
>>>> +  * wrap_renameat(int olddirfd, const char *oldpath, int newdirfd, const
>>>> char *newpath) {
>>>> +  *    int rc = -1;
>>>> +  */
>>>> ++      pseudo_msg_t *msg;
>>>> ++      struct stat oldbuf, newbuf;
>>>> ++      int oldrc, newrc;
>>>> ++      int save_errno;
>>>> ++      int old_db_entry = 0;
>>>> +
>>>> +-      pseudo_diag("help! unimplemented renameat [%s ->     %s].\n",
>>>> oldpath, newpath);
>>>> ++      pseudo_debug(2, "renameat: %d,%s->%d,%s\n",
>>>> ++              olddirfd, oldpath ? oldpath : "<nil>",
>>>> ++              newdirfd, newpath ? newpath : "<nil>");
>>>> ++
>>>> ++#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
>>>> ++      if (olddirfd != AT_FDCWD || newdirfd != AT_FDCWD) {
>>>> ++              errno = ENOSYS;
>>>> ++              return -1;
>>>> ++      }
>>>> ++#endif
>>>> ++
>>>> ++      if (!oldpath || !newpath) {
>>>> ++              errno = EFAULT;
>>>> ++              return -1;
>>>> ++      }
>>>> ++
>>>> ++      save_errno = errno;
>>>> ++
>>>> ++#ifdef PSEUDO_NO_REAL_AT_FUNCTIONS
>>>> ++      newrc = real_lstat(newpath,&newbuf);
>>>> ++      oldrc = real_lstat(oldpath,&oldbuf);
>>>> ++#else
>>>> ++      oldrc = real___fxstatat(_STAT_VER, olddirfd, oldpath,&oldbuf,
>>>> AT_SYMLINK_NOFOLLOW);
>>>> ++      newrc = real___fxstatat(_STAT_VER, newdirfd, newpath,&newbuf,
>>>> AT_SYMLINK_NOFOLLOW);
>>>>
>>>> ++#endif
>>>> ++
>>>> ++      errno = save_errno;
>>>> ++
>>>> ++      /* newpath must be removed. */
>>>> ++      /* as with unlink, we have to mark that the file may get deleted
>>>> */
>>>> ++      msg = pseudo_client_op_plain(OP_MAY_UNLINK, 0, -1, newdirfd,
>>>> newpath, newrc ? NULL :&newbuf);
>>>> ++      if (msg&&     msg->result == RESULT_SUCCEED)
>>>>
>>>> ++              old_db_entry = 1;
>>>> +       rc = real_renameat(olddirfd, oldpath, newdirfd, newpath);
>>>> ++      save_errno = errno;
>>>> ++      if (old_db_entry) {
>>>> ++              if (rc == -1) {
>>>> ++                      /* since we failed, that wasn't really unlinked --
>>>> put
>>>> ++                       * it back.
>>>> ++                       */
>>>> ++                      pseudo_client_op_plain(OP_CANCEL_UNLINK, 0, -1,
>>>> newdirfd, newpath,&newbuf);
>>>> ++              } else {
>>>> ++                      /* confirm that the file was removed */
>>>> ++                      pseudo_client_op_plain(OP_DID_UNLINK, 0, -1,
>>>> newdirfd, newpath,&newbuf);
>>>> ++              }
>>>> ++      }
>>>> ++      if (rc == -1) {
>>>> ++              /* and we're done. */
>>>> ++              errno = save_errno;
>>>> ++              return rc;
>>>> ++      }
>>>> ++      save_errno = errno;
>>>> ++      /* nothing to do for a "rename" of a link to itself */
>>>> ++      if (newrc != -1&&     oldrc != -1&&
>>>> ++          newbuf.st_dev == oldbuf.st_dev&&
>>>> ++          newbuf.st_ino == oldbuf.st_ino) {
>>>> ++              return rc;
>>>> ++        }
>>>> ++
>>>> ++      /* rename(3) is not mv(1).  rename(file, dir) fails; you must
>>>> provide
>>>> ++       * the corrected path yourself.  You can rename over a directory
>>>> only
>>>> ++       * if the source is a directory.  Symlinks are simply removed.
>>>> ++       *
>>>> ++       * If we got here, the real rename call succeeded.  That means
>>>> newpath
>>>> ++       * has been unlinked and oldpath has been linked to it.
>>>> ++       *
>>>> ++       * There are a ton of special cases to error check.  I don't check
>>>> ++       * for any of them, because in every such case, the underlying
>>>> rename
>>>> ++       * failed, and there is nothing to do.
>>>> ++       * The only tricky part is that, because we used to ignore
>>>> symlinks,
>>>> ++       * we may have to rename or remove directory trees even though in
>>>> ++       * theory rename can never destroy a directory tree.
>>>> ++       */
>>>> ++      if (!old_db_entry) {
>>>> ++              /* create an entry under the old name, which will then be
>>>> ++               * renamed; this way, children would get renamed too, if
>>>> there
>>>> ++               * were any.
>>>> ++               */
>>>> ++              if (newrc == 0) {
>>>> ++                      if (newbuf.st_dev != oldbuf.st_dev) {
>>>> ++                              oldbuf.st_dev = newbuf.st_dev;
>>>> ++                              oldbuf.st_ino = newbuf.st_ino;
>>>> ++                      }
>>>> ++              }
>>>> ++              pseudo_debug(1, "creating new '%s' [%llu] to rename\n",
>>>> ++                      oldpath, (unsigned long long) oldbuf.st_ino);
>>>> ++              pseudo_client_op_plain(OP_LINK, 0, -1, olddirfd,
>>>> oldpath,&oldbuf);
>>>> ++      }
>>>> ++      /* special case: use 'fd' for olddirfd, because
>>>> ++       * we know it has no other meaning for RENAME
>>>> ++       */
>>>> ++      pseudo_client_op_plain(OP_RENAME, 0, olddirfd, newdirfd,
>>>> newpath,&oldbuf, oldpath);
>>>>
>>>> +
>>>> ++      errno = save_errno;
>>>> + /*    return rc;
>>>> +  * }
>>>> +  */
>>>> +diff --git a/pseudo_client.c b/pseudo_client.c
>>>> +index 48607c2..4a30420 100644
>>>> +--- a/pseudo_client.c
>>>> ++++ b/pseudo_client.c
>>>> +@@ -988,6 +988,8 @@ base_path(int dirfd, const char *path, int
>>>> leave_last) {
>>>> +               if (dirfd != -1&&     dirfd != AT_FDCWD) {
>>>>
>>>> +                       if (dirfd>= 0) {
>>>> +                               basepath = fd_path(dirfd);
>>>> ++                      }
>>>> ++                      if (basepath) {
>>>> +                               baselen = strlen(basepath);
>>>> +                       } else {
>>>> +                               pseudo_diag("got *at() syscall for unknown
>>>> directory, fd %d\n", dirfd);
>>>> +@@ -1128,7 +1130,10 @@ pseudo_client_op(pseudo_op_t op, int access, int
>>>> fd, int dirfd, const char *path
>>>> +       if (path) {
>>>> +               pseudo_debug(2, " %s", path);
>>>> +       }
>>>> +-      if (fd != -1) {
>>>> ++      /* for OP_RENAME in renameat, "fd" is also used for the
>>>> ++       * second dirfd.
>>>> ++       */
>>>> ++      if (fd != -1&&     op != OP_RENAME) {
>>>>
>>>> +               pseudo_debug(2, " [fd %d]", fd);
>>>> +       }
>>>> +       if (buf) {
>>>> diff --git a/meta/recipes-devtools/pseudo/pseudo_1.2.bb
>>>> b/meta/recipes-devtools/pseudo/pseudo_1.2.bb
>>>> index f2ebc22..04bcbce 100644
>>>> --- a/meta/recipes-devtools/pseudo/pseudo_1.2.bb
>>>> +++ b/meta/recipes-devtools/pseudo/pseudo_1.2.bb
>>>> @@ -1,10 +1,12 @@
>>>>    require pseudo.inc
>>>>
>>>> -PR = "r4"
>>>> +PR = "r5"
>>>>
>>>>    SRC_URI =
>>>> "http://www.yoctoproject.org/downloads/${BPN}/${BPN}-${PV}.tar.bz2 \
>>>>               file://oe-config.patch \
>>>> -           file://static_sqlite.patch"
>>>> +           file://static_sqlite.patch \
>>>> +           file://opendir.patch \
>>>> +           file://renameat.patch"
>>>>
>>>>    SRC_URI[md5sum] = "a2819084bab7e991f06626d02cf55048"
>>>>    SRC_URI[sha256sum] =
>>>> "4749a22df687f44d24c26e97170d4781a1bd52d5ee092364a40877e4d96ff058"
>>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core




  parent reply	other threads:[~2012-02-07 23:29 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-06  6:40 [PATCH V2 00/20] uclibc upgrade, initial kmod and thumb tune Khem Raj
2012-02-06  6:40 ` [PATCH 01/20] task-core-tools: Divide it into 3 recipes Khem Raj
2012-02-06  6:40 ` [PATCH 02/20] Enable options needed for ltp to compile Khem Raj
2012-02-06  6:40 ` [PATCH 03/20] arm/tune: Correct the logic which added thumb-interwork to OVERRIDES Khem Raj
2012-02-06  6:40 ` [PATCH 04/20] tunearch/arm: Differentiate between thumb code generation and thumb capability Khem Raj
2012-02-06  6:40 ` [PATCH 05/20] tune-thumb.inc: Delete Khem Raj
2012-02-06  6:40 ` [PATCH 06/20] uclibc: Get the thumb features from tune flags Khem Raj
2012-02-06  6:40 ` [PATCH 07/20] kmod: Add recipes Khem Raj
2012-05-03 21:05   ` Darren Hart
2012-05-03 22:02     ` Khem Raj
2012-02-06  6:40 ` [PATCH 08/20] module-init-tools: Delete Khem Raj
2012-05-03 21:07   ` Darren Hart
2012-05-03 21:45     ` Khem Raj
2012-02-06  6:40 ` [PATCH 09/20] image.bbclass, kernel.bbclass: Use kmod-native instead of module-init-tools-cross Khem Raj
2012-05-03 21:09   ` Darren Hart
2012-05-03 21:48     ` Khem Raj
2012-02-06  6:40 ` [PATCH 10/20] pseudo: Wrap renameat and opendir Khem Raj
2012-02-07 16:21   ` Saul Wold
2012-02-07 16:31     ` Khem Raj
2012-02-07 16:43       ` Saul Wold
2012-02-07 18:10         ` Khem Raj
2012-02-07 23:21         ` Mark Hatle [this message]
2012-02-08  2:00           ` Khem Raj
2012-02-06  6:40 ` [PATCH 11/20] uclibc: Upgrade recipes from 0.9.32 -> 0.9.33 Khem Raj
2012-02-07 19:02   ` Saul Wold
2012-02-07 22:26     ` Khem Raj
2012-02-06  6:40 ` [PATCH 12/20] zlib: Upgrade 1.2.5 -> 1.2.6 Khem Raj
2012-02-07  8:08   ` Saul Wold
2012-02-07 15:31     ` Khem Raj
2012-02-07 15:59       ` Saul Wold
2012-02-07 23:12         ` Khem Raj
2012-02-08  0:19           ` Saul Wold
2012-02-08  2:06             ` Khem Raj
2012-02-11  5:05               ` Steve Sakoman
2012-02-11  5:09                 ` Koen Kooi
2012-02-11  8:15                   ` Khem Raj
2012-02-11  8:19                     ` Khem Raj
2012-02-11  8:26                     ` Koen Kooi
2012-02-13  7:48                   ` Martin Jansa
2012-02-13 13:23                     ` Steve Sakoman
2012-02-13 13:33                       ` Martin Jansa
2012-02-13 13:42                       ` Koen Kooi
2012-02-14  4:52                         ` Lu, Lianhao
2012-02-14  6:24                           ` Khem Raj
2012-02-14  9:26                             ` Phil Blundell
2012-02-14  6:53                           ` Martin Jansa
2012-02-14 14:24                             ` Koen Kooi
2012-02-13 15:39                       ` Phil Blundell
2012-02-13 17:09                         ` Khem Raj
2012-02-21 23:04                         ` Richard Purdie
2012-02-21 23:01                       ` Richard Purdie
2012-02-22  8:03                         ` Koen Kooi
2012-02-22 11:08                           ` Richard Purdie
2012-02-06  6:40 ` [PATCH 13/20] runqemu-internal: qemuarm can handle 256M Khem Raj
2012-02-06  6:40 ` [PATCH 14/20] gconf, consolekit: Avoid polkit when compiling with uclibc Khem Raj
2012-02-06  6:40 ` [PATCH 15/20] python: Fix build failure of python-elementtree on x86_64 Khem Raj
2012-02-06  6:40 ` [PATCH 16/20] libdrm: Fix build failure unearthed by uclibc Khem Raj
2012-02-06  6:40 ` [PATCH 17/20] classes, recipes: Replace POKY_* with CORE_IMAGE_* Khem Raj
2012-02-06  6:40 ` [PATCH 18/20] libx11: Backport _XGetRequest API Khem Raj
2012-02-06  6:40 ` [PATCH 19/20] gcc-cross-testing: Fix evaluation of user and target name Khem Raj
2012-02-07 17:21   ` Saul Wold
2012-02-07 18:07     ` Khem Raj
2012-02-07 17:49   ` Otavio Salvador
2012-02-07 18:18     ` Khem Raj
2012-02-06  6:40 ` [PATCH 20/20] mirrors.bbclass: Add yp.org and oe.org to fallback mirrors Khem Raj
2012-02-07 17:49   ` Saul Wold
2012-02-07 18:04     ` Khem Raj
2012-02-08  4:12 ` [PATCH V2 00/20] uclibc upgrade, initial kmod and thumb tune Saul Wold
2012-02-20 12:11   ` Koen Kooi
2012-02-20 16:57     ` Khem Raj

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F31B1E3.4080600@windriver.com \
    --to=mark.hatle@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=saul.wold@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox