Meta: Add install-ports CMake target

install-ports copys the necessary files from Ports/ to /usr/Ports. Also
refactor the compiler and destiation variables from .port_include.sh
into .hosted_defs.sh. .hosted_defs.sh does not exists when ports are
built in serenity
This commit is contained in:
Peter Elliott 2021-04-02 21:53:41 -06:00 committed by Andreas Kling
parent 9c3948ef3e
commit 938924f36d
Notes: sideshowbarker 2024-07-18 20:29:22 +09:00
5 changed files with 40 additions and 12 deletions

View file

@ -67,6 +67,11 @@ add_custom_target(check-style
USES_TERMINAL USES_TERMINAL
) )
add_custom_target(install-ports
COMMAND ${CMAKE_COMMAND} -E env "SERENITY_ROOT=${CMAKE_SOURCE_DIR}" "SERENITY_ARCH=${SERENITY_ARCH}" ${CMAKE_SOURCE_DIR}/Meta/install-ports-tree.sh
USES_TERMINAL
)
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_EXTENSIONS OFF)

10
Meta/install-ports-tree.sh Executable file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
SERENITY_PORTS_DIR="${SERENITY_ROOT}/Build/${SERENITY_ARCH}/Root/usr/Ports"
for file in $(git ls-files "${SERENITY_ROOT}/Ports"); do
if [ "$(basename "$file")" != ".hosted_defs.sh" ]; then
target=${SERENITY_PORTS_DIR}/$(realpath --relative-to="${SERENITY_ROOT}/Ports" "$file")
mkdir -p "$(dirname "$target")" && cp "$file" "$target"
fi
done

View file

@ -14,7 +14,8 @@ IGNORE_FILES = {
PORT_TABLE_FILE, PORT_TABLE_FILE,
'build_all.sh', 'build_all.sh',
'build_installed.sh', 'build_installed.sh',
'README.md' 'README.md',
'.hosted_defs.sh'
} }

10
Ports/.hosted_defs.sh Normal file
View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
export SERENITY_ROOT="$(realpath "${SCRIPT}/../")"
export SERENITY_BUILD_DIR="${SERENITY_ROOT}/Build/${SERENITY_ARCH}"
export CC="${SERENITY_ARCH}-pc-serenity-gcc"
export CXX="${SERENITY_ARCH}-pc-serenity-g++"
export AR="${SERENITY_ARCH}-pc-serenity-ar"
export RANLIB="${SERENITY_ARCH}-pc-serenity-ranlib"
export PATH="${SERENITY_ROOT}/Toolchain/Local/${SERENITY_ARCH}/bin:${PATH}"
export DESTDIR="${SERENITY_BUILD_DIR}/Root"

View file

@ -2,16 +2,17 @@
set -eu set -eu
SCRIPT="$(dirname "${0}")" SCRIPT="$(dirname "${0}")"
export SERENITY_ROOT="$(realpath "${SCRIPT}/../")"
export SERENITY_ARCH="${SERENITY_ARCH:-i686}" export SERENITY_ARCH="${SERENITY_ARCH:-i686}"
export SERENITY_BUILD_DIR="${SERENITY_ROOT}/Build/${SERENITY_ARCH}"
export CC="${SERENITY_ARCH}-pc-serenity-gcc"
export CXX="${SERENITY_ARCH}-pc-serenity-g++"
export AR="${SERENITY_ARCH}-pc-serenity-ar"
export RANLIB="${SERENITY_ARCH}-pc-serenity-ranlib"
export PATH="${SERENITY_ROOT}/Toolchain/Local/${SERENITY_ARCH}/bin:${PATH}"
packagesdb="${SERENITY_BUILD_DIR}/packages.db" maybe_source() {
if [ -f "$1" ]; then
. "$1"
fi
}
DESTDIR="/"
maybe_source "${SCRIPT}/.hosted_defs.sh"
packagesdb="${DESTDIR}/usr/Ports/packages.db"
MD5SUM=md5sum MD5SUM=md5sum
@ -164,7 +165,7 @@ func_defined build || build() {
run make $makeopts run make $makeopts
} }
func_defined install || install() { func_defined install || install() {
run make DESTDIR="${SERENITY_BUILD_DIR}/Root" $installopts install run make DESTDIR=$DESTDIR $installopts install
} }
func_defined post_install || post_install() { func_defined post_install || post_install() {
echo echo
@ -194,6 +195,7 @@ func_defined clean_all || clean_all() {
addtodb() { addtodb() {
if [ ! -f "$packagesdb" ]; then if [ ! -f "$packagesdb" ]; then
echo "Note: $packagesdb does not exist. Creating." echo "Note: $packagesdb does not exist. Creating."
mkdir -p "${DESTDIR}/usr/Ports/"
touch "$packagesdb" touch "$packagesdb"
fi fi
if ! grep -E "^(auto|manual) $port $version" "$packagesdb" > /dev/null; then if ! grep -E "^(auto|manual) $port $version" "$packagesdb" > /dev/null; then
@ -226,10 +228,10 @@ uninstall() {
for f in `cat plist`; do for f in `cat plist`; do
case $f in case $f in
*/) */)
run rmdir "${SERENITY_BUILD_DIR}/Root/$f" || true run rmdir "${DESTDIR}/$f" || true
;; ;;
*) *)
run rm -rf "${SERENITY_BUILD_DIR}/Root/$f" run rm -rf "${DESTDIR}/$f"
;; ;;
esac esac
done done