On 7/31/13 7:14 AM, Prica, Mihai wrote:
-----Original Message-----
From: Saul Wold [mailto:[email protected]]
Sent: Tuesday, July 30, 2013 5:57 PM
To: Prica, Mihai
Cc: [email protected]
Subject: Re: [OE-core] [PATCH] makedevs: Change numeric user/group ids to
user/group names in device table

On 07/30/2013 02:45 AM, Mihai Prica wrote:
Full usernames and groupnames should be used instead  of numeric ids
in meta/files/device_table-minimal.txt.


I think this will uses the host's files not the target's rootfs, please verify 
this.

Thanks
        Sau!

I used strace and it seems it tries to use the files on the rootfs but they 
don't exist
when the check is done so the files on the host are used instead. The 
base-passwd
package which installs the /etc/passwd and /etc/group files is installed latter 
in the
rootfs generation process. I'll search for a solution to this problem or for 
another
approach.

The pseudo environment is configured to look in the sysroot's /etc for those files. If they don't exist it's only alternative is to fall back to the system.

If something needs access to the the name -> number resolution before /etc/passwd,/etc/group are installed - then I think we have a missing dependency (automatic or otherwise).

As far as I can tell, we should never have a situation where the (target) passwd/group are not available to pseudo for local resolution.

We might need to add the installation of those files as a base system 
dependency.

--Mark

Thanks,
Mihai


[YOCTO #1159]

Signed-off-by: Mihai Prica <[email protected]>
---
   meta/files/device_table-minimal.txt                |   47 
++++++++++----------
   .../makedevs/makedevs-1.0.0/makedevs.c             |   23 ++++++++--
   2 files changed, 43 insertions(+), 27 deletions(-)

diff --git a/meta/files/device_table-minimal.txt
b/meta/files/device_table-minimal.txt
index 02ed534..41c6e0b 100644
--- a/meta/files/device_table-minimal.txt
+++ b/meta/files/device_table-minimal.txt
@@ -1,5 +1,5 @@
-#<path>  <type> <mode>       <uid>     <gid>     <major>   <minor>
        <start>   <inc>     <count>
-#/dev/mem    c      640      0       0       1       1       0        0        
-
+#<path>  <type> <mode>       <username>        <groupname>       <major>
        <minor>   <start>   <inc>     <count>
+#/dev/mem    c      640      root       root       1       1       0        0  
      -
   #
   #type can be one of:
   #    f       A regular file
@@ -8,24 +8,25 @@
   #    b       Block special device file
   #    p       Fifo (named pipe)

-/dev           d       755     0       0       -       -       -       -       
-
-/dev/initctl   p       600     0       0       -       -       -       -       
-
-/dev/apm_bios  c       660     0       46      10      134     -       -
        -
-/dev/fb0       c       600     0       0       29      0       -       -       
-
-/dev/hda       b       660     0       6       3       0       -       -       
-
-/dev/hda       b       660     0       6       3       1       1       1       
19
-/dev/kmem      c       640     0       15      1       2       -       -       
-
-/dev/kmsg      c       600     0       0       1       11      -       -       
-
-/dev/mem       c       640     0       15      1       1       -       -       
-
-/dev/null      c       666     0       0       1       3       -       -       
-
-/dev/ram       b       640     0       0       1       0       0       1       
4
-/dev/tty       c       662     0       5       5       0       -       -       
-
-/dev/tty       c       666     0       5       4       0       0       1       
9
-/dev/ttyS      c       640     0       5       4       64      0       1       
1
-/dev/ttySA     c       640     0       5       204     5       0       1       
1
-/dev/zero      c       644     0       0       1       5       -       -       
-
-/dev/mtd       c       660     0       6       90      0       0       2       
8
-/dev/mtdblock  b       640     0       0       31      0       0       1
        8
-/dev/console   c       662     0       5       5       1       -       -
        -
-/dev/random    c       644     0       0       1       8       -       -
        -
-/dev/urandom   c       644     0       0       1       9       -       -
        -
+/dev           d       755     root    root    -       -       -       -
        -
+/dev/initctl   p       600     root    root    -       -       -       -       
-
+/dev/apm_bios  c       660     root    plugdev 10      134     -
        -       -
+/dev/fb0       c       600     root    root    29      0       -       -       
-
+/dev/hda       b       660     root    disk    3       0       -       -       
-
+/dev/hda       b       660     root    disk    3       1       1       1       
20
+/dev/kmem      c       640     root    kmem    1       2       -       -       
-
+/dev/kmsg      c       600     root    root    1       11      -       -       
-
+/dev/mem       c       640     root    kmem    1       1       -       -       
-
+/dev/null      c       666     root    root    1       3       -       -       
-
+/dev/ram       b       640     root    root    1       0       0       1       
4
+/dev/tty       c       662     root    tty     5       0       -       -       
-
+/dev/tty       c       666     root    tty     4       0       0       1       
9
+/dev/ttyS      c       640     root    tty     4       64      0       1       
1
+/dev/ttySA     c       640     root    tty     204     5       0       1       
1
+/dev/zero      c       644     root    root    1       5       -       -       
-
+/dev/mtd       c       660     root    disk    90      0       0       2       
8
+/dev/mtdblock  b       640     root    root    0       31      0       0
        1       8
+/dev/console   c       662     root    root    5       1       -       -
        -
+/dev/random    c       644     root    root    1       8       -       -
        -
+/dev/urandom   c       644     root    root    1       9       -       -
        -
+
diff --git a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
index 6c1f2fb..26bbe33 100644
--- a/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
+++ b/meta/recipes-devtools/makedevs/makedevs-1.0.0/makedevs.c
@@ -13,6 +13,8 @@
   #include <libgen.h>
   #include <sys/types.h>
   #include <sys/stat.h>
+#include <pwd.h>
+#include <grp.h>

   #define MINORBITS    8
   #define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
@@ -180,13 +182,15 @@ static void add_new_fifo(char *name, char *path,
unsigned long uid,
   */
   static int interpret_table_entry(char *line)
   {
-       char *name;
-       char path[4096], type;
+       char *name;
+       char path[4096], username[32], groupname[32], type;
        unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0;
        unsigned long start = 0, increment = 1, count = 0;
+       struct passwd *pw;
+       struct group *gr;

-       if (0 > sscanf(line, "%40s %c %lo %lu %lu %lu %lu %lu %lu %lu", path,
-                   &type, &mode, &uid, &gid, &major, &minor, &start,
+       if (0 > sscanf(line, "%40s %c %lo %s %s %lu %lu %lu %lu %lu", path,
+                   &type, &mode, &username, &groupname, &major, &minor,
&start,
                    &increment, &count))
        {
                return 1;
@@ -198,6 +202,17 @@ static int interpret_table_entry(char *line)
        name = xstrdup(path + 1);
        sprintf(path, "%s/%s", rootdir, name);

+       pw = getpwnam(username);
+       if (pw == NULL) {
+               error_msg_and_die("Username does not exist in the user
database");
+       }
+       uid = pw->pw_uid;
+       gr = getgrnam(groupname);
+       if (gr == NULL) {
+               error_msg_and_die("Groupname does not exist in the group
database ");
+       }
+       gid = gr->gr_gid;
+
        switch (type) {
        case 'd':
                mode |= S_IFDIR;

_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core


_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to