* Added new rule CopyDirectoryToHaikuImage which recursively copies a
directory to the image. It supports exclude patterns.
* Changed Add{Source,Header}DirectoryToHaikuImage to use the
CopyDirectoryToHaikuImage rule. The special handling in the
build_haiku_image script is gone now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24586 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -711,10 +711,6 @@ AddTargetVariableToScript $(script) : <build>rc ;
|
|||||||
AddTargetVariableToScript $(script) : <build>resattr ;
|
AddTargetVariableToScript $(script) : <build>resattr ;
|
||||||
AddTargetVariableToScript $(script) : <build>unzip ;
|
AddTargetVariableToScript $(script) : <build>unzip ;
|
||||||
AddTargetVariableToScript $(script) : <build>vmdkheader ;
|
AddTargetVariableToScript $(script) : <build>vmdkheader ;
|
||||||
AddVariableToScript $(script) : sourceDirsToCopy
|
|
||||||
: $(HAIKU_INSTALL_SOURCE_DIRS) ;
|
|
||||||
AddVariableToScript $(script) : headerDirsToCopy
|
|
||||||
: $(HAIKU_INSTALL_HEADER_DIRS) ;
|
|
||||||
if $(HOST_RM_ATTRS_TARGET) {
|
if $(HOST_RM_ATTRS_TARGET) {
|
||||||
AddTargetVariableToScript $(script) : $(HOST_RM_ATTRS_TARGET) : rmAttrs ;
|
AddTargetVariableToScript $(script) : $(HOST_RM_ATTRS_TARGET) : rmAttrs ;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+60
-10
@@ -202,6 +202,35 @@ rule AddSymlinkToContainer container : directoryTokens : linkTarget : linkName
|
|||||||
SYMLINKS_TO_INSTALL on $(directory) += $(link) ;
|
SYMLINKS_TO_INSTALL on $(directory) += $(link) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule CopyDirectoryToContainer container : directoryTokens : sourceDirectory
|
||||||
|
: targetDirectoryName : excludePatterns : alwaysUpdate
|
||||||
|
{
|
||||||
|
# CopyDirectoryToContainer <container> : <directoryTokens>
|
||||||
|
# : <sourceDirectory> : <targetDirectoryName> : <excludePatterns>
|
||||||
|
# : <alwaysUpdate> ;
|
||||||
|
#
|
||||||
|
|
||||||
|
# If the image shall only be updated, we don't copy any directories
|
||||||
|
if [ on $(container) return $(HAIKU_CONTAINER_UPDATE_ONLY) ]
|
||||||
|
&& ! $(alwaysUpdate) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! $(targetDirectoryName) {
|
||||||
|
local path = [ FReverse [ FSplitPath $(sourceDirectory) ] ] ;
|
||||||
|
targetDirectoryName = $(path[1]) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
local directory = [ AddDirectoryToContainer $(container)
|
||||||
|
: $(directoryTokens) $(targetDirectoryName) ] ;
|
||||||
|
|
||||||
|
local targetDir = $(directory)/-/$(sourceDirectory) ;
|
||||||
|
EXCLUDE_PATTERNS on $(targetDir) = $(excludePatterns) ;
|
||||||
|
SOURCE_DIRECTORY on $(targetDir) = $(sourceDirectory) ;
|
||||||
|
TARGET_DIRECTORY on $(targetDir) = $(directory) ;
|
||||||
|
DIRECTORIES_TO_INSTALL on $(directory) += $(targetDir) ;
|
||||||
|
}
|
||||||
|
|
||||||
rule UnzipArchiveToContainer container : directoryTokens : zipFile
|
rule UnzipArchiveToContainer container : directoryTokens : zipFile
|
||||||
{
|
{
|
||||||
# UnzipArchiveToContainer <container> : <directory> : <zipFile> ] ;
|
# UnzipArchiveToContainer <container> : <directory> : <zipFile> ] ;
|
||||||
@@ -432,6 +461,17 @@ rule CreateContainerCopyFilesScript container : script
|
|||||||
|
|
||||||
AddSymlinkToContainerCopyFilesScript $(symlink) : $(initScript) ;
|
AddSymlinkToContainerCopyFilesScript $(symlink) : $(initScript) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local targetDirs = [ on $(dir) return $(DIRECTORIES_TO_INSTALL) ] ;
|
||||||
|
local targetDir ;
|
||||||
|
for targetDir in $(targetDirs) {
|
||||||
|
NotFile $(targetDir) ;
|
||||||
|
|
||||||
|
Depends $(script) : $(targetDir) ;
|
||||||
|
Depends $(targetDir) : $(initScript) ;
|
||||||
|
|
||||||
|
AddDirectoryToContainerCopyFilesScript $(targetDir) : $(initScript) ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -451,6 +491,12 @@ actions AddSymlinkToContainerCopyFilesScript
|
|||||||
echo \$ln -sfn "\"$(SYMLINK_TARGET)\"" "\"\${tPrefix}$(1:G=)\"" >> $(2[1])
|
echo \$ln -sfn "\"$(SYMLINK_TARGET)\"" "\"\${tPrefix}$(1:G=)\"" >> $(2[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
actions AddDirectoryToContainerCopyFilesScript
|
||||||
|
{
|
||||||
|
echo \$cp -r $(EXCLUDE_PATTERNS) "\"\${sPrefix}$(SOURCE_DIRECTORY)/.\"" \
|
||||||
|
"\"\${tPrefix}$(TARGET_DIRECTORY:G=)\"" >> $(2[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
rule CreateContainerUnzipFilesScript container : script
|
rule CreateContainerUnzipFilesScript container : script
|
||||||
{
|
{
|
||||||
@@ -535,26 +581,30 @@ rule AddSymlinkToHaikuImage directoryTokens : linkTarget : linkName
|
|||||||
: $(linkTarget) : $(linkName) ;
|
: $(linkTarget) : $(linkName) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rule CopyDirectoryToHaikuImage directoryTokens : sourceDirectory
|
||||||
|
: targetDirectoryName : excludePatterns : alwaysUpdate
|
||||||
|
{
|
||||||
|
CopyDirectoryToContainer $(HAIKU_IMAGE_CONTAINER_NAME) : $(directoryTokens)
|
||||||
|
: $(sourceDirectory) : $(targetDirectoryName) : $(excludePatterns)
|
||||||
|
: $(alwaysUpdate) ;
|
||||||
|
}
|
||||||
|
|
||||||
rule AddSourceDirectoryToHaikuImage dirTokens : alwaysUpdate
|
rule AddSourceDirectoryToHaikuImage dirTokens : alwaysUpdate
|
||||||
{
|
{
|
||||||
# AddSourceDirectoryToHaikuImage <dirTokens> : <alwaysUpdate> ;
|
# AddSourceDirectoryToHaikuImage <dirTokens> : <alwaysUpdate> ;
|
||||||
|
|
||||||
# If the image shall only be updated, we update sources only, if explicitely
|
CopyDirectoryToHaikuImage home HaikuSources
|
||||||
# requested.
|
: [ FDirName $(HAIKU_TOP) $(dirTokens) ]
|
||||||
if ! [ IsUpdateHaikuImageOnly ] || $(alwaysUpdate) {
|
: : -x .svn : $(alwaysUpdate) ;
|
||||||
HAIKU_INSTALL_SOURCE_DIRS += [ FDirName $(HAIKU_TOP) $(dirTokens) ] ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rule AddHeaderDirectoryToHaikuImage dirTokens : alwaysUpdate
|
rule AddHeaderDirectoryToHaikuImage dirTokens : alwaysUpdate
|
||||||
{
|
{
|
||||||
# AddHeaderDirectoryToHaikuImage <dirTokens> : <alwaysUpdate> ;
|
# AddHeaderDirectoryToHaikuImage <dirTokens> : <alwaysUpdate> ;
|
||||||
|
|
||||||
# If the image shall only be updated, we update sources only, if explicitely
|
CopyDirectoryToHaikuImage develop headers
|
||||||
# requested.
|
: [ FDirName $(HAIKU_TOP) headers $(dirTokens) ]
|
||||||
if ! [ IsUpdateHaikuImageOnly ] || $(alwaysUpdate) {
|
: : -x .svn : $(alwaysUpdate) ;
|
||||||
HAIKU_INSTALL_HEADER_DIRS += [ FDirName $(HAIKU_TOP) headers $(dirTokens) ] ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rule UnzipArchiveToHaikuImage dirTokens : zipFile : alwaysUpdate
|
rule UnzipArchiveToHaikuImage dirTokens : zipFile : alwaysUpdate
|
||||||
|
|||||||
@@ -100,6 +100,19 @@ AddSymlinkToHaikuImage home config bin : /beos/bin/crashing_app : crash ;
|
|||||||
AddSourceDirectoryToHaikuImage src/kits/storage ;
|
AddSourceDirectoryToHaikuImage src/kits/storage ;
|
||||||
AddSourceDirectoryToHaikuImage src/tests/servers/debug : 1 ;
|
AddSourceDirectoryToHaikuImage src/tests/servers/debug : 1 ;
|
||||||
|
|
||||||
|
# Copy the jam sources (assuming they are located ../buildtools/jam relatively
|
||||||
|
# to your Haiku sources) to the image as /boot/home/Desktop/jam-src, excluding
|
||||||
|
# any file or directory named ".svn" and any source path that matches the
|
||||||
|
# pattern "*/jam/./bin.*". Note that the "*" character needs to be escaped with
|
||||||
|
# two backslashes (one because it goes through a shell and one to quote the
|
||||||
|
# first one in jam), and that the build system always appends "/." to the source
|
||||||
|
# path (hence this pattern). Just as AddSourceDirectoryToHaikuImage this rule
|
||||||
|
# can also take another optional parameter indicating whether the directory shall
|
||||||
|
# also be copied in update mode.
|
||||||
|
CopyDirectoryToHaikuImage home Desktop
|
||||||
|
: $(HAIKU_TOP)/../buildtools/jam
|
||||||
|
: "jam-src" : -x .svn -X \\*/jam/./bin.\\* ;
|
||||||
|
|
||||||
# Unzips the given zip archive onto the image under /boot/develop/tools.
|
# Unzips the given zip archive onto the image under /boot/develop/tools.
|
||||||
UnzipArchiveToHaikuImage develop tools
|
UnzipArchiveToHaikuImage develop tools
|
||||||
: /home/bonefish/develop/haiku/misc/gcc-2.95.3-beos-070218/gcc-2.95.3_binutils-2.17_rel-070218.zip ;
|
: /home/bonefish/develop/haiku/misc/gcc-2.95.3-beos-070218/gcc-2.95.3_binutils-2.17_rel-070218.zip ;
|
||||||
|
|||||||
@@ -23,6 +23,9 @@
|
|||||||
#AddFilesToHaikuImage home config settings : <keymap>US-International
|
#AddFilesToHaikuImage home config settings : <keymap>US-International
|
||||||
# : Key_map ;
|
# : Key_map ;
|
||||||
|
|
||||||
|
# Copy artwork to the image.
|
||||||
|
#CopyDirectoryToHaikuImage home Desktop : $(HAIKU_TOP)/data/artwork : : -x .svn ;
|
||||||
|
|
||||||
|
|
||||||
# Add the optional package WonderBrush to the image.
|
# Add the optional package WonderBrush to the image.
|
||||||
#AddOptionalHaikuImagePackages WonderBrush ;
|
#AddOptionalHaikuImagePackages WonderBrush ;
|
||||||
|
|||||||
@@ -9,8 +9,6 @@
|
|||||||
# imagePath
|
# imagePath
|
||||||
# imageSize
|
# imageSize
|
||||||
# addBuildCompatibilityLibDir
|
# addBuildCompatibilityLibDir
|
||||||
# sourceDirsToCopy
|
|
||||||
# headerDirsToCopy
|
|
||||||
# updateOnly
|
# updateOnly
|
||||||
# dontClearImage
|
# dontClearImage
|
||||||
# isVMwareImage
|
# isVMwareImage
|
||||||
@@ -183,82 +181,6 @@ if [ ! $updateOnly ]; then
|
|||||||
fi # ! updateOnly
|
fi # ! updateOnly
|
||||||
|
|
||||||
|
|
||||||
# install sources
|
|
||||||
|
|
||||||
sourcesDest=${tPrefix}home/HaikuSources
|
|
||||||
|
|
||||||
# create sources directory
|
|
||||||
if [ -n "${sourceDirsToCopy}" ]; then
|
|
||||||
echo "Installing Haiku Sources ..."
|
|
||||||
|
|
||||||
$mkdir -p ${sourcesDest}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# When building in the root of the source directory, sourceDir is "." and
|
|
||||||
# the source directory are not prefixed, which breaks the sed expressions
|
|
||||||
# used below. We work around, by adjusting the strings to match and insert.
|
|
||||||
sourcePathPrefix=$sourceDir
|
|
||||||
destPathPrefix=$sourcesDest
|
|
||||||
if [ $sourcePathPrefix = "." ]; then
|
|
||||||
sourcePathPrefix=""
|
|
||||||
destPathPrefix="${sourcesDest}/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for sourcesDir in ${sourceDirsToCopy}; do
|
|
||||||
echo " sources dir: ${sourcesDir}"
|
|
||||||
|
|
||||||
# create all subdirectories
|
|
||||||
subDirs=$(find ${sourcesDir} -type d | grep -v '.svn' |
|
|
||||||
sed -e "s@^${sourcePathPrefix}@${destPathPrefix}@")
|
|
||||||
$mkdir -p ${subDirs}
|
|
||||||
|
|
||||||
# get all files and copy each one individually
|
|
||||||
sourceFiles=$(find $sourcesDir -type f | grep -v '.svn')
|
|
||||||
for sourceFile in $sourceFiles; do
|
|
||||||
destSourceFile=$(echo $sourceFile |
|
|
||||||
sed -e "s@^${sourcePathPrefix}@${destPathPrefix}@")
|
|
||||||
$cp ${sPrefix}$sourceFile $destSourceFile
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
# install headers
|
|
||||||
|
|
||||||
headersDest=${tPrefix}develop
|
|
||||||
|
|
||||||
# create headers directory
|
|
||||||
if [ -n "${headerDirsToCopy}" ]; then
|
|
||||||
echo "Installing Haiku Headers ..."
|
|
||||||
|
|
||||||
$mkdir -p ${headersDest}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# See above (sourceDirs)
|
|
||||||
sourcePathPrefix=$sourceDir
|
|
||||||
destPathPrefix=$headersDest
|
|
||||||
if [ $sourcePathPrefix = "." ]; then
|
|
||||||
sourcePathPrefix=""
|
|
||||||
destPathPrefix="${headersDest}/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for headersDir in ${headerDirsToCopy}; do
|
|
||||||
echo " header dir: ${headersDir}"
|
|
||||||
|
|
||||||
# create all subdirectories
|
|
||||||
subDirs=$(find ${headersDir} -type d | grep -v '.svn' |
|
|
||||||
sed -e "s@^${sourcePathPrefix}@${destPathPrefix}@")
|
|
||||||
$mkdir -p ${subDirs}
|
|
||||||
|
|
||||||
# get all files and copy each one individually
|
|
||||||
headerFiles=$(find $headersDir -type f | grep -v '.svn')
|
|
||||||
for headerFile in $headerFiles; do
|
|
||||||
destHeaderFile=$(echo $headerFile |
|
|
||||||
sed -e "s@^${sourcePathPrefix}@${destPathPrefix}@")
|
|
||||||
$cp ${sPrefix}$headerFile $destHeaderFile
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
# unmount
|
# unmount
|
||||||
if [ $isImage ]; then
|
if [ $isImage ]; then
|
||||||
echo "Unmounting ..."
|
echo "Unmounting ..."
|
||||||
|
|||||||
Reference in New Issue
Block a user