Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | SUMMARY = "Example recipe for using inherit useradd" |
| 2 | DESCRIPTION = "This recipe serves as an example for using features from useradd.bbclass" |
| 3 | SECTION = "examples" |
| 4 | PR = "r1" |
| 5 | LICENSE = "MIT" |
| 6 | LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690 \ |
| 7 | file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" |
| 8 | |
| 9 | SRC_URI = "file://file1 \ |
| 10 | file://file2 \ |
| 11 | file://file3 \ |
| 12 | file://file4" |
| 13 | |
| 14 | S = "${WORKDIR}" |
| 15 | |
| 16 | PACKAGES =+ "${PN}-user3" |
| 17 | |
| 18 | inherit useradd |
| 19 | |
| 20 | # You must set USERADD_PACKAGES when you inherit useradd. This |
| 21 | # lists which output packages will include the user/group |
| 22 | # creation code. |
| 23 | USERADD_PACKAGES = "${PN} ${PN}-user3" |
| 24 | |
| 25 | # You must also set USERADD_PARAM and/or GROUPADD_PARAM when |
| 26 | # you inherit useradd. |
| 27 | |
| 28 | # USERADD_PARAM specifies command line options to pass to the |
| 29 | # useradd command. Multiple users can be created by separating |
| 30 | # the commands with a semicolon. Here we'll create two users, |
| 31 | # user1 and user2: |
| 32 | USERADD_PARAM_${PN} = "-u 1200 -d /home/user1 -r -s /bin/bash user1; -u 1201 -d /home/user2 -r -s /bin/bash user2" |
| 33 | |
| 34 | # user3 will be managed in the useradd-example-user3 pacakge: |
| 35 | # As an example, we use the -P option to set clear text password for user3 |
| 36 | USERADD_PARAM_${PN}-user3 = "-u 1202 -d /home/user3 -r -s /bin/bash -P 'user3' user3" |
| 37 | |
| 38 | # GROUPADD_PARAM works the same way, which you set to the options |
| 39 | # you'd normally pass to the groupadd command. This will create |
| 40 | # groups group1 and group2: |
| 41 | GROUPADD_PARAM_${PN} = "-g 880 group1; -g 890 group2" |
| 42 | |
| 43 | # Likewise, we'll manage group3 in the useradd-example-user3 package: |
| 44 | GROUPADD_PARAM_${PN}-user3 = "-g 900 group3" |
| 45 | |
| 46 | do_install () { |
| 47 | install -d -m 755 ${D}${datadir}/user1 |
| 48 | install -d -m 755 ${D}${datadir}/user2 |
| 49 | install -d -m 755 ${D}${datadir}/user3 |
| 50 | |
| 51 | install -p -m 644 file1 ${D}${datadir}/user1/ |
| 52 | install -p -m 644 file2 ${D}${datadir}/user1/ |
| 53 | |
| 54 | install -p -m 644 file2 ${D}${datadir}/user2/ |
| 55 | install -p -m 644 file3 ${D}${datadir}/user2/ |
| 56 | |
| 57 | install -p -m 644 file3 ${D}${datadir}/user3/ |
| 58 | install -p -m 644 file4 ${D}${datadir}/user3/ |
| 59 | |
| 60 | # The new users and groups are created before the do_install |
| 61 | # step, so you are now free to make use of them: |
| 62 | chown -R user1 ${D}${datadir}/user1 |
| 63 | chown -R user2 ${D}${datadir}/user2 |
| 64 | chown -R user3 ${D}${datadir}/user3 |
| 65 | |
| 66 | chgrp -R group1 ${D}${datadir}/user1 |
| 67 | chgrp -R group2 ${D}${datadir}/user2 |
| 68 | chgrp -R group3 ${D}${datadir}/user3 |
| 69 | } |
| 70 | |
| 71 | FILES_${PN} = "${datadir}/user1/* ${datadir}/user2/*" |
| 72 | FILES_${PN}-user3 = "${datadir}/user3/*" |
| 73 | |
| 74 | # Prevents do_package failures with: |
| 75 | # debugsources.list: No such file or directory: |
| 76 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" |