Aramo > Ecne upgrade DIY test script

Bug Report Template


1. Goal

Test the Trisquel 11 to 12 upgrade.


2. Details on the script

In order to test/run the upgrade process and don't rely on trusting someone requiring to download the upgrade tool from somewhere, the idea is to build it yourself.

Please be aware, we put a lot of effort on the preparation of the ubuntu-upgrade-release source code. Still, be careful with your data.

In order to ease the test process, it is done via a bash script, here a small summary:

  1. The script installs the requirements
  2. pulls the Trisquel's package-helpers repo
  3. builds the ubuntu-release-upgrader source with Trisquel's changes
  4. prepares the ecne.tar.gz tarball
  5. if the script is executed with --run-upgrade it starts the upgrade process via text console.
  6. By default the script (if not ran with --run-upgrade) only prepares everything to run the upgrade tool later.
  7. Goes through the upgrade process to Ecne.

3. Current version of the script.

Create a file named build-ecne-upgrader.sh

touch build-ecne-upgrader.sh

Paste the following script on it.

#!/bin/bash
set -e

# --- Config ---
REPO_URL="https://gitlab.trisquel.org/trisquel/package-helpers/"
BRANCH="ecne"

WORKDIR="$HOME/src"
CLONEDIR="$WORKDIR/package-helpers"

TARBALL_NAME="ecne.tar.gz"
TARBALL_SRC=""        # will be detected after build
TARBALL_DST="/tmp/${TARBALL_NAME}"
EXTRACT_DIR="/tmp/ecne-upgrader"

FRONTEND="DistUpgradeViewText"
FRONTEND_ARGS="--frontend=$FRONTEND"

RUN_UPGRADE=0
if [ "${1:-}" == "--run-upgrade" ]; then
  RUN_UPGRADE=1
fi

need_cmd() { command -v "$1" >/dev/null 2>&1; }

# --- 1) Install deps ---
if [[ $EUID -ne 0 ]]; then
  SUDO="sudo"
else
  SUDO=""
fi
echo "[0/10] Installing missing updates"
$SUDO apt-get update
$SUDO apt-get dist-upgrade -y

echo "[1/10] Installing dependencies: git apt-clone intltool and other devtools"
$SUDO apt-get install -y git \
                         apt-clone \
                         ca-certificates \
                         devscripts \
                         dpkg-dev \
                         gnupg2 \
                         intltool \
                         rename
                         #python3-urwid

# --- 2) git clone ---
echo "[2/10] Ensuring workdir exists: $WORKDIR"
mkdir -p "$WORKDIR"

if [ -d "$CLONEDIR/.git" ]; then
  echo "[2/10] Repo already exists, updating: $CLONEDIR"
  git -C "$CLONEDIR" fetch --all --prune
else
  echo "[2/10] Cloning: $REPO_URL -> $CLONEDIR"
  git clone "$REPO_URL" "$CLONEDIR"
fi

# --- 3) checkout branch ecne ---
echo "[3/10] Checking out branch: $BRANCH"
git -C "$CLONEDIR" checkout "$BRANCH"
git -C "$CLONEDIR" pull --ff-only || true

# --- 4) enter package-helpers/helpers ---
HELPERS_DIR="$CLONEDIR/helpers"
echo "[4/10] Entering: $HELPERS_DIR"
cd "$HELPERS_DIR"

# --- 5) bash make-ubuntu-release-upgrader ---
echo "[5/10] Running: bash make-ubuntu-release-upgrader"
bash make-ubuntu-release-upgrader

# --- 6) cd PACKAGES/ubuntu-release-upgrader/DistUpgrade ---
DISTUPGRADE_DIR="$(find "$HELPERS_DIR/PACKAGES/ubuntu-release-upgrader" \
  -maxdepth 2 -type d -name 'DistUpgrade' -path '*/ubuntu-release-upgrader-*/DistUpgrade' \
  | sort -V | tail -n 1)"
echo "[6/10] Entering: $DISTUPGRADE_DIR"
cd "$DISTUPGRADE_DIR"

# --- 7) bash build-dist.sh ---
echo "[7/10] Running: bash build-dist.sh"
bash ./build-dist.sh

# --- Confirm tarball location (ecne.tar.gz) ---
echo "[7/10] Locating tarball: $TARBALL_NAME"
TARBALL_SRC="$DISTUPGRADE_DIR/$TARBALL_NAME"

if [ -z "$TARBALL_SRC" ]; then
  # Fallback: search within the ubuntu-release-upgrader tree
  found="$(find "$HELPERS_DIR/PACKAGES/ubuntu-release-upgrader" \
  -maxdepth 4 -type f -name "$TARBALL_NAME" 2>/dev/null | head -n 1 || true)"
  if [ -n "$found" ]; then
    TARBALL_SRC="$found"
  fi
fi

if [ -z "$TARBALL_SRC" ] || [ ! -f "$TARBALL_SRC" ]; then
  echo "ERROR: Could not find $TARBALL_NAME after build."
  echo "Searched under: $HELPERS_DIR/PACKAGES/ubuntu-release-upgrader"
  exit 1
fi

echo "[8/10] Copying tarball to /tmp: $TARBALL_SRC -> $TARBALL_DST"
cp -f "$TARBALL_SRC" "$TARBALL_DST"

# --- 9) extract it ---
echo "[9/10] Extracting: $TARBALL_DST -> $EXTRACT_DIR"
sudo rm -rf "$EXTRACT_DIR"
mkdir -p "$EXTRACT_DIR"
tar -xzf "$TARBALL_DST" -C "$EXTRACT_DIR"

# --- 10) run upgrade script ---
echo "[10/10] Selecting upgrade entrypoint inside: $EXTRACT_DIR"
if [ -f "$EXTRACT_DIR/ecne" ] ; then
  ENTRYPOINT="$EXTRACT_DIR/ecne"
fi

if [ -z "$ENTRYPOINT" ]; then
  echo "ERROR: executable entrypoint (ecne) not found at $EXTRACT_DIR"
  echo "Content:"
  ls -la "$EXTRACT_DIR" || true
  exit 1
fi

echo "[10/10] Found entrypoint: $ENTRYPOINT"
# IMPORTANT: run from the extracted directory so relative files like "screenrc" resolve
ENTRY_DIR="$(dirname "$ENTRYPOINT")"
ENTRY_BASE="$(basename "$ENTRYPOINT")"

if [[ "$RUN_UPGRADE" -eq 1 ]]; then
  echo "[10/10] RUNNING UPGRADE from: $ENTRY_DIR"
  $SUDO mkdir -p /var/log/dist-upgrade
  $SUDO chmod 755 /var/log/dist-upgrade

  cd "$ENTRY_DIR"
  exec $SUDO "./$ENTRY_BASE" "${FRONTEND_ARGS}"
else
  echo "[10/10] Not running upgrade (missing --run-upgrade)."
  echo "To execute it (within the right directory):"
  echo "  cd $ENTRY_DIR && sudo ./$ENTRY_BASE ${FRONTEND_ARGS}"
  echo "You can delete \"$WORKDIR\" once completed."
fi

Run the script using:

bash build-ecne-upgrader.sh

4. Expected Behavior

Get Ecne upgrade from Aramo.


5. Warnings.

Almost no one but me A few people had tested this script and has gone right, still handle with care 'til there is some more feedback.

Please, test this out first on

a) a test VM
b) a test/secondary machine with no production data on it.
c) report issues, findings or success tales.
d) with proper caution, test this out on production machines or wait until the official release.


6. Suggestions, Investigation and Possible Causes (optional)

Share any insights, code references, or debugging steps you've taken


Edited by Luis Guzmán
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information