fixup! Add ports to the Sortix repository.

This commit is contained in:
Jonas 'Sortie' Termansen 2022-02-01 23:30:15 +01:00
parent 846cc82eaa
commit df79b04194
2 changed files with 105 additions and 23 deletions

View File

@ -242,6 +242,7 @@ download_archive_from_url() {(
fi
fi
if ! echo "$SHA256SUM $SORTIX_MIRROR_DIR/$PACKAGE/$ARCHIVE.untrusted" | sha256sum -c; then
sha256sum "$SORTIX_MIRROR_DIR/$PACKAGE/$ARCHIVE.untrusted"
echo "warning: Wrong sha256sum after downloading $ARCHIVE from $URL" >&2
exit 1
fi
@ -288,9 +289,11 @@ download_package() {(
)}
desired_version() {(
#unset ARCHIVE
#unset ARCHIVE_2
#. "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info"
PACKAGE="$1"
unset DEVELOPMENT
unset ARCHIVE
unset ARCHIVE_2
. "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info"
VERSION_STAMP="$NAME"
if [ -n "$ARCHIVE" ]; then
VERSION_STAMP="$VERSION_STAMP.$VERSION.$SHA256SUM"
@ -307,44 +310,105 @@ desired_version() {(
if [ -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalize" ]; then
VERSION_STAMP="$VERSION_STAMP.$(cat "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalize" | sha256sum | grep -Eo '^[^ ]*')"
fi
if [ "$DEVELOPMENT" = true ]; then
VERSION_STAMP="$VERSION_STAMP.development"
fi
echo "$VERSION_STAMP"
)}
diff_package() {(
# TODO: Only do this once the port is known to be cleaned.
cd "$SORTIX_PORTS_DIR/$1"
if [ -e "$1.normalized" ]; then
diff --no-dereference -Naur -- "$1.normalized" "$1" > "$1.patch" || true
if [ ! -s "$1.patch" ]; then rm "$1.patch"; fi
tix-execdiff -- "$1.normalized" "$1" > "$1.execpatch"
if [ ! -s "$1.execpatch" ]; then rm "$1.execpatch"; fi
# TODO: tix-rmpatch
fi
)}
extract_package() {(
PACKAGE="$1"
VERSION_STAMP="$2"
unset DEVELOPMENT
unset ARCHIVE
unset ARCHIVE_2
unset NEED_WRITABLE
. "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info"
VERSION_STAMP="$(desired_version)"
VERSION_STAMP="$(desired_version "$PACKAGE")"
OLD_VERSION_STAMP="$(cat "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" || true)"
if [ ! -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" ] ||
[ "$(cat "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version")" != "$VERSION_STAMP" ] ||
[ ! -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" ]; then
if [ -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" ]; then
OLD_VERSION_STAMP="$(cat "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version")"
case "$OLD_VERSION_STAMP" in
*.development)
if [ "$DEVELOPMENT" = true ]; then
echo "error: $PACKAGE: Refusing to delete port in development"
echo "error: $PACKAGE: .version is currently: $OLD_VERSION_STAMP"
echo "error: $PACKAGE: .version should be: $VERSION_STAMP"
exit 1
fi
diff_package "$PACKAGE"
esac
fi
echo "$VERSION_STAMP" > "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new"
rm -rf "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
rm -rf "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalized"
mkdir "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
if [ "$DEVELOPMENT" = true ]; then
mkdir "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalized"
fi
if [ -n "$ARCHIVE" ]; then
announce "Extracting $1: $ARCHIVE"
tar -C "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" -xf "$SORTIX_MIRROR_DIR/$PACKAGE/$ARCHIVE" --strip-components=1
if [ "$DEVELOPMENT" = true ]; then
tar -C "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalized" -xf "$SORTIX_MIRROR_DIR/$PACKAGE/$ARCHIVE" --strip-components=1
fi
if [ -n "$ARCHIVE_2" ]; then
announce "Extracting $1: $ARCHIVE_2"
tar -C "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" -xf "$SORTIX_MIRROR_DIR/$PACKAGE/$ARCHIVE_2" --strip-components=1
if [ "$DEVELOPMENT" = true ]; then
tar -C "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalized" -xf "$SORTIX_MIRROR_DIR/$PACKAGE/$ARCHIVE_2" --strip-components=1
fi
fi
fi
if [ -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.patch" ]; then
patch -d "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" -p1 < "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.patch"
if [ "$DEVELOPMENT" = true ]; then
# TODO: .rej .orig etc.
patch -d "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" -p1 < "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.patch" || true
# .orig files aren't useful unless part of the patch got rejected.
find "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" \
-name '*.orig' \
-exec sh -c 'test ! -e "$(echo "$0" | sed -E "s,\\.orig$,.rej,")"' \
'{}' ';' -delete
else
patch -d "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" -p1 < "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.patch"
fi
fi
if [ -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.execpatch" ]; then
tix-execpatch --directory "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.execpatch"
fi
if [ -f "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalize" ]; then
tix-rmpatch --directory "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalize"
if [ "$DEVELOPMENT" = true ]; then
tix-rmpatch --directory "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalized" "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.normalize"
fi
fi
if [ "$NEED_WRITABLE" != true ]; then
if [ "$DEVELOPMENT" != true -a "$NEED_WRITABLE" != true ]; then
find "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" '!' -type d -exec chmod -w '{}' +
fi
mv "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new" "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version"
if [ "$DEVELOPMENT" = true ]; then
REJECTS="$(find "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE" \
-name '*.rej' -o -name '*.orig' | sort)"
if [ -n "$REJECTS" ]; then
echo "$REJECTS"
echo "error: $PACKAGE: The above patch hunks were rejected"
exit 1
fi
fi
fi
)}
@ -353,26 +417,29 @@ for PACKAGE in $PACKAGES; do
SOURCE_PACKAGE=$( (SOURCE_PACKAGE= &&
. $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info &&
echo "$SOURCE_PACKAGE") )
DEVELOPMENT=$( (DEVELOPMENT= &&
. $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info &&
echo "$DEVELOPMENT") )
# TODO: clean support.
if [ ! -f "$SORTIX_REPOSITORY_DIR/$PACKAGE.tix.tar.xz" ] ||
[ "$OPERATION" != build ] ; then
# download
if [ -n "$SOURCE_PACKAGE" ]; then
download_package "$SOURCE_PACKAGE"
fi
download_package "$PACKAGE"
if [ "$OPERATION" = download ]; then continue; fi
# download
if [ -n "$SOURCE_PACKAGE" ]; then
download_package "$SOURCE_PACKAGE"
fi
download_package "$PACKAGE"
if [ "$OPERATION" = download ]; then continue; fi
# extract
if [ -n "$SOURCE_PACKAGE" ]; then
extract_package "$SOURCE_PACKAGE"
fi
extract_package "$PACKAGE"
if [ "$OPERATION" = extract ]; then continue; fi
# extract
if [ -n "$SOURCE_PACKAGE" ]; then
extract_package "$SOURCE_PACKAGE"
fi
extract_package "$PACKAGE"
if [ "$OPERATION" = extract ]; then continue; fi
# build
# build
if [ ! -f "$SORTIX_REPOSITORY_DIR/$PACKAGE.tix.tar.xz" -o \
"$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" -nt \
"$SORTIX_REPOSITORY_DIR/$PACKAGE.tix.tar.xz" ]; then
announce "Building $PACKAGE"
tix-build \
--sysroot="$SYSROOT" \
@ -383,6 +450,10 @@ for PACKAGE in $PACKAGES; do
${SOURCE_PACKAGE:+--source-package "$SORTIX_PORTS_DIR/$SOURCE_PACKAGE/$SOURCE_PACKAGE"} \
"$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
strip_tix "$SORTIX_REPOSITORY_DIR/$PACKAGE.tix.tar.xz"
if [ "$DEVELOPMENT" = true ]; then
# TODO: .rej .orig etc.
diff_package "$PACKAGE"
fi
fi
announce "Installing $PACKAGE"
tix-install \

View File

@ -34,6 +34,9 @@ get_all_packages() {
# Clean all the packages.
for PACKAGE in $(get_all_packages); do
DEVELOPMENT=$( (DEVELOPMENT= &&
. $SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.info &&
echo "$DEVELOPMENT") )
if [ -e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" -o \
-e "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version.new" ]; then
tix-build \
@ -44,6 +47,14 @@ for PACKAGE in $(get_all_packages); do
--start=clean \
--end=clean \
"$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"
if [ "$DEVELOPMENT" = true ]; then
case "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE.version" in
*.development)
echo "Port is in development: '$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE'"
continue
;;
esac
fi
# TODO: New top-level makefile target for this.
echo "Removing '$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE'"
rm -rf "$SORTIX_PORTS_DIR/$PACKAGE/$PACKAGE"