xref: /haiku/build/scripts/build_haiku_repository (revision 04a0e9c7b68cbe3a43d38e2bca8e860fd80936fb)
1#!/bin/sh
2#
3# Usage: build_haiku_repository <initScript> <repositoryDir> <repoInfo>
4#			<packages> ...
5
6set -o errexit
7
8if [ $# -le 2 ]; then
9	echo "$0: Missing parameters!" >&2
10	exit 1
11fi
12
13. $1
14shift
15
16repositoryDir="$1"
17repoInfo="$2"
18shift 2
19# the remaining arguments are the packages
20
21# this adds the build library dir to LD_LIBRARY_PATH
22eval "$addBuildCompatibilityLibDir"
23
24# create a clean repository directory
25rm -rf "$repositoryDir"
26mkdir "$repositoryDir"
27
28packageDir="$repositoryDir/packages"
29mkdir "$packageDir"
30
31# Get the canonical names for the packages and copy them to the package
32# directory.
33for packageFile in "$@"; do
34	fileName=`"$package" info -f "%fileName%" "$packageFile"`
35	cp "$packageFile" "$packageDir/$fileName"
36done
37
38# prepare the repo info file
39fileName=`basename "$packageDir"/haiku-*.hpkg .hpkg`
40version=${fileName#*-}
41version=${version%%-*}
42arch=${fileName##*-}
43
44sed -e "s/%HAIKU_ARCHITECTURE%/$arch/g" \
45	-e "s/%HAIKU_VERSION%/$version/g" \
46	"$repoInfo" > "$repositoryDir/repo.info"
47
48# build the repository file
49"$packageRepo" create -C "$repositoryDir" "$repositoryDir/repo.info" \
50	"$packageDir"/*.hpkg
51
52# create the checksum file
53$sha256 "$repositoryDir/repo" \
54	| $sedExtendedRegex 's,([^[:space:]]*).*,\1,' > "$repositoryDir/repo.sha256"
55		# The sed part is only necessary for sha256sum, but it doesn't harm for
56		# sha256 either.
57