Tightening up compression program build script requirements

195 views
Skip to first unread message

James Bowery

unread,
Aug 5, 2026, 4:35:36 PM (8 days ago) Aug 5
to Hutter Prize
Due, in part, to the explosion in the rate of qualifying* entries  over the last month, the burden of compensating for manual build instructions and even build scripts that have bugs is becoming onerous.  Turn build procedures into scripts and make sure they work.

If a build procedure requires manual steps that could be in a build script, the contestants be required to incorporate it into the build script.

If a build script doesn't build, the contestants will be required to fix it.

* ie: the provided archive9 produces enwik9 on a test machine or well-specified cloud instance where the build script is to run and the downstream compress/decompress processes are also to run

James Bowery

unread,
Aug 5, 2026, 4:53:08 PM (8 days ago) Aug 5
to hutter...@googlegroups.com
This is an example of something that is no longer acceptable:

Most entries use this script to install upx.  There are two problems with it:

1) It is not transparent about the requirement for root permission.  All instructions that require root permission must be isolated from the build script.
2) It sets environment variables necessary for the build script but is not included in it.

Any README that instructs the evaluator to execute this script will be rejected until it no longer appears in the README and its functionality is properly incorporated into the build script -- meaning no root dependencies such as apt install.

#!/usr/bin/env bash
set -euo pipefail

UPX_VERSION="${UPX_VERSION:-5.1.1}"
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
TOOLS_DIR="$ROOT_DIR/tools"
ARCHIVE="upx-${UPX_VERSION}-amd64_linux.tar.xz"
UPX_DIR="$TOOLS_DIR/upx-${UPX_VERSION}-amd64_linux"
URL="https://github.com/upx/upx/releases/download/v${UPX_VERSION}/${ARCHIVE}"

missing_tools=()
for tool in curl tar xz; do
  if ! command -v "$tool" >/dev/null 2>&1; then
    missing_tools+=("$tool")
  fi
done
if (( ${#missing_tools[@]} )); then
  echo "Installing missing tools: ${missing_tools[*]}"
  sudo apt-get update
  sudo apt-get install curl tar xz-utils -y
fi

mkdir -p "$TOOLS_DIR"
if [[ ! -x "$UPX_DIR/upx" ]]; then
  curl -L --fail -o "$TOOLS_DIR/$ARCHIVE" "$URL"
  tar -C "$TOOLS_DIR" -xf "$TOOLS_DIR/$ARCHIVE"
fi

ln -sf "$UPX_DIR/upx" "$TOOLS_DIR/upx"
"$TOOLS_DIR/upx" --version
~                                                                                                              
~                                                                                                              
~                                                                                                              
~                                                           


--
You received this message because you are subscribed to the Google Groups "Hutter Prize" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hutter-prize...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hutter-prize/c470af49-4fba-43ec-a2e4-aefbd02f13ebn%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages