* Replaced the dummy implementations of the <grp.h> and <pwd.h>
functions by ones reading /etc/{group,passwd}.
* Added quasi-standard getpwent_r() and getgrent_r().
* Added _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX sysconf()
constants.
* Moved initgroups() and getgrouplist() definition to grp.cpp. They use
the same backend as the <grp.h> functions.
* Set the permissions of files created by the build system to what they
should be on the image (executables: 755, others: 644). Otherwise only
root could do anything under Haiku.
* Added build system variables HAIKU_ROOT_USER_NAME and
HAIKU_ROOT_USER_REAL_NAME to customize name and real name of Haiku's
root user.
* Added build system rules AddUserToHaikuImage and AddGroupToHaikuImage
for adding additional users and groups (by default only root user and
group and a "users" group are created).
* Adjusted BIND port and coreutils config.h files according to what
features have become available.
* Fixed HAIKU_DOCUMENTATION_OBJECT_DIR definition. Untested, but it used
a wrong variable name before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24750 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -871,10 +871,16 @@ SUPPORTED_PLATFORMS = haiku ;
|
||||
KEEPOBJS = true ;
|
||||
|
||||
|
||||
# Set permissions to how they should be on the image.
|
||||
EXEMODE = 755 ;
|
||||
FILEMODE = 644 ;
|
||||
SHELLMODE = 755 ;
|
||||
|
||||
|
||||
# output directories
|
||||
# TODO: Review this.
|
||||
HAIKU_DOCUMENTATION_DIR ?= [ FDirName $(HAIKU_OUTPUT_DIR) documentation ] ;
|
||||
HAIKU_DOCUMENTATION_OBJECT_DIR ?= [ FDirName $(HAIKU_COMMON_PLATFORM_DIR)
|
||||
HAIKU_DOCUMENTATION_OBJECT_DIR ?= [ FDirName $(HAIKU_COMMON_PLATFORM_OBJECT_DIR)
|
||||
documentation ] ;
|
||||
|
||||
# TODO: Rethink test stuff.
|
||||
|
||||
+11
-1
@@ -419,7 +419,7 @@ AddDirectoryToHaikuImage home config add-ons Translators ;
|
||||
AddDirectoryToHaikuImage beos etc synth ;
|
||||
AddDirectoryToHaikuImage beos system add-ons input_server methods ;
|
||||
|
||||
#optional
|
||||
# optional
|
||||
AddFilesToHaikuImage optional beos system add-ons input_server methods : canna ;
|
||||
|
||||
# printers
|
||||
@@ -481,6 +481,16 @@ if $(HAIKU_ADD_POSIX_TEST_SUITE_TO_IMAGE) {
|
||||
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackages ] ;
|
||||
|
||||
|
||||
#pragma mark - User/Group Setup
|
||||
|
||||
|
||||
# add the root user and the root and users groups
|
||||
AddUserToHaikuImage $(HAIKU_ROOT_USER_NAME:E=baron) : 0 : 0 : /boot/home
|
||||
: /bin/bash : $(HAIKU_ROOT_USER_REAL_NAME:E="Root User") ;
|
||||
AddGroupToHaikuImage root : 0 : ;
|
||||
AddGroupToHaikuImage users : 100 : ;
|
||||
|
||||
|
||||
#pragma mark - Build The Image
|
||||
|
||||
|
||||
|
||||
@@ -676,6 +676,53 @@ rule InstallOptionalHaikuImagePackage package : url : dirTokens
|
||||
UnzipArchiveToHaikuImage $(dirTokens) : $(zipFile) ;
|
||||
}
|
||||
|
||||
rule AddEntryToHaikuImageUserGroupFile file : entry
|
||||
{
|
||||
local allEntries = [ on $(file) return $(HAIKU_IMAGE_USER_GROUP_ENTRIES) ] ;
|
||||
|
||||
if $(allEntries) {
|
||||
allEntries = $(allEntries)|$(entry) ;
|
||||
} else {
|
||||
allEntries = $(entry) ;
|
||||
|
||||
Always $(file) ;
|
||||
MakeLocate $(file) : $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) ;
|
||||
BuildHaikuImageUserGroupFile $(file) ;
|
||||
AddFilesToHaikuImage beos etc : $(file) ;
|
||||
}
|
||||
|
||||
HAIKU_IMAGE_USER_GROUP_ENTRIES on $(file) = $(allEntries) ;
|
||||
}
|
||||
|
||||
actions BuildHaikuImageUserGroupFile
|
||||
{
|
||||
echo "$(HAIKU_IMAGE_USER_GROUP_ENTRIES)" | tr '|' '\n' > $(1)
|
||||
}
|
||||
|
||||
rule AddUserToHaikuImage user : uid : gid : home : shell : realName
|
||||
{
|
||||
if ! $(user) || ! $(uid) || ! $(gid) || ! $(home) {
|
||||
Exit "Invalid haiku user specification passed to AddUserToHaikuImage." ;
|
||||
}
|
||||
|
||||
local entry
|
||||
= $(user):x:$(uid):$(gid):$(realName:E=$(user)):$(home):$(shell:E="") ;
|
||||
|
||||
AddEntryToHaikuImageUserGroupFile <haiku-image>passwd : $(entry) ;
|
||||
}
|
||||
|
||||
rule AddGroupToHaikuImage group : gid : members
|
||||
{
|
||||
if ! $(group) || ! $(gid) {
|
||||
Exit "Invalid haiku group specification passed to"
|
||||
"AddGroupToHaikuImage." ;
|
||||
}
|
||||
|
||||
local entry = $(group):x:$(gid):$(members:J=,:E) ;
|
||||
|
||||
AddEntryToHaikuImageUserGroupFile <haiku-image>group : $(entry) ;
|
||||
}
|
||||
|
||||
|
||||
rule CreateHaikuImageMakeDirectoriesScript script
|
||||
{
|
||||
|
||||
@@ -131,6 +131,22 @@ HAIKU_ADD_ALL_OPTIONAL_PACKAGES = 1 ;
|
||||
HAIKU_IMAGE_EARLY_USER_SCRIPTS = $(HAIKU_TOP)/../early-image-script.sh ;
|
||||
HAIKU_IMAGE_LATE_USER_SCRIPTS = $(HAIKU_TOP)/../late-image-script.sh ;
|
||||
|
||||
# Set name and real name of the root user. Defaults to "baron" and "Root User".
|
||||
HAIKU_ROOT_USER_NAME = bond ;
|
||||
HAIKU_ROOT_USER_REAL_NAME = "James Bond" ;
|
||||
|
||||
# Add user "walter" with user ID 1000 and group ID 100 (note, that a group with
|
||||
# that ID should exist -- 100 already exists and is the "users" group), home
|
||||
# directory "/boot/home", shell "/bin/bash", and real name "Just Walter" to the
|
||||
# image.
|
||||
AddUserToHaikuImage walter : 1000 : 100 : /boot/home : /bin/bash
|
||||
: "Just Walter" ;
|
||||
|
||||
# Add group "party" with group ID 101 and members "baron" and "walter" to the
|
||||
# image.
|
||||
AddGroupToHaikuImage party : 101 : baron walter ;
|
||||
|
||||
|
||||
|
||||
# Creating Sourceable Shell Scripts
|
||||
|
||||
|
||||
Reference in New Issue
Block a user