diff --git a/.github/workflows/image-arch-linux.yml b/.github/workflows/image-arch-linux.yml index 7eacb2d..ec5461c 100644 --- a/.github/workflows/image-arch-linux.yml +++ b/.github/workflows/image-arch-linux.yml @@ -42,4 +42,4 @@ jobs: run: docker build --pull --no-cache -t winesapos-img-builder build/. - name: Build system image id: build_image - run: docker run --rm -v $(pwd):/workdir -v /dev:/dev --env WINESAPOS_ENABLE_TESTING_REPO=true --env WINESAPOS_DEBUG_INSTALL=true --env WINESAPOS_DEBUG_TESTS=true --env WINESAPOS_ENABLE_PORTABLE_STORAGE=false --privileged=true winesapos-img-builder:latest /bin/bash -x /workdir/scripts/winesapos-build.sh + run: docker run --rm -v $(pwd):/workdir -v /dev:/dev --env WINESAPOS_DEBUG_INSTALL=true --env WINESAPOS_DEBUG_TESTS=true --env WINESAPOS_ENABLE_PORTABLE_STORAGE=false --privileged=true winesapos-img-builder:latest /bin/bash -x /workdir/scripts/winesapos-build.sh diff --git a/.github/workflows/image-manjaro.yml b/.github/workflows/image-manjaro.yml index 039227d..b08d9e8 100644 --- a/.github/workflows/image-manjaro.yml +++ b/.github/workflows/image-manjaro.yml @@ -44,4 +44,4 @@ jobs: run: docker build --pull --no-cache -t winesapos-img-builder build/. - name: Build system image id: build_image - run: docker run --rm -v $(pwd):/workdir -v /dev:/dev --env WINESAPOS_DISTRO=manjaro --env WINESAPOS_ENABLE_TESTING_REPO=true --env WINESAPOS_DEBUG_INSTALL=true --env WINESAPOS_DEBUG_TESTS=true --env WINESAPOS_ENABLE_PORTABLE_STORAGE=false --privileged=true winesapos-img-builder:latest /bin/bash -x /workdir/scripts/winesapos-build.sh + run: docker run --rm -v $(pwd):/workdir -v /dev:/dev --env WINESAPOS_DISTRO=manjaro --env WINESAPOS_DEBUG_INSTALL=true --env WINESAPOS_DEBUG_TESTS=true --env WINESAPOS_ENABLE_PORTABLE_STORAGE=false --privileged=true winesapos-img-builder:latest /bin/bash -x /workdir/scripts/winesapos-build.sh diff --git a/.github/workflows/repo-testing.yml b/.github/workflows/repo-rolling.yml similarity index 91% rename from .github/workflows/repo-testing.yml rename to .github/workflows/repo-rolling.yml index 47d9c36..d2078b8 100644 --- a/.github/workflows/repo-testing.yml +++ b/.github/workflows/repo-rolling.yml @@ -36,7 +36,7 @@ jobs: run: mkdir output && chmod 777 output - name: Build winesapOS testing repository id: build_repo_testing - run: docker run --name winesapos-build-repo --rm --env WINESAPOS_REPO_BUILD_TESTING=true --volume "$(pwd)/output":/output ekultails/winesapos-build-repo:latest &> /dev/stdout | tee ./output/winesapos-build-repo_$(date --iso-8601=seconds).log + run: docker run --name winesapos-build-repo --rm --env WINESAPOS_REPO_BUILD_ROLLING=true --volume "$(pwd)/output":/output ekultails/winesapos-build-repo:latest &> /dev/stdout | tee ./output/winesapos-build-repo_$(date --iso-8601=seconds).log - name: Check status code # Provide the return code without actually exiting. run: (exit $(cat ./output/winesapos-build-repo_exit-code.txt)) @@ -61,8 +61,8 @@ jobs: SSH_KEY: ${{ secrets.REPO_SSH_KEY }} SSH_HOST: ${{ secrets.REPO_SSH_HOST }} - name: Back up old repository files - run: ssh repo "mv /data/winesapos-repo/repo/winesapos-testing /data/winesapos-repo/repo/winesapos-testing_$(date --iso-8601=seconds)" + run: ssh repo "mv /data/winesapos-repo/repo/winesapos-rolling /data/winesapos-repo/repo/winesapos-rolling_$(date --iso-8601=seconds)" - name: Create new repository folder - run: ssh repo "mkdir -p /data/winesapos-repo/repo/winesapos-testing/x86_64" + run: ssh repo "mkdir -p /data/winesapos-repo/repo/winesapos-rolling/x86_64" - name: Copy the new repository over to the server - run: rsync -avurP ./output/ repo:/data/winesapos-repo/repo/winesapos-testing/x86_64/ + run: rsync -avurP ./output/ repo:/data/winesapos-repo/repo/winesapos-rolling/x86_64/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 391bf17..fbc11c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - Add GIMP for photo editing. - Add mpv for HDR video playback. - Add ckb-next for supporting RGB on Corsair keyboards and mice. +- Change winesapOS testing repository to be a rolling updates repository. ## 4.3.0 - The Wayland Update diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c4a4483..f6a612d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -304,7 +304,7 @@ $ export <KEY>=<VALUE> | --- | ------ | --------------------------- | ------------ | ------------- | ----------- | | WINESAPOS_DEBUG_INSTALL | true or false | true | true | true | Use `set -x` for debug shell logging during the installation. | | WINESAPOS_DEBUG_TESTS | true or false | false | false | false | Use `set -x` for debug shell logging during the tests. | -| WINESAPOS_ENABLE_TESTING_REPO | true or false | false | false | false | Use the `[winesapos-testing]` repository instead of the stable `[winesapos]` repository during the installation. | +| WINESAPOS_ENABLE_REPO_ROLLING | true or false | true | true | true | Use the `[winesapos-rolling]` repository instead of the stable `[winesapos]` repository during the installation. | | WINESAPOS_BUILD_IN_VM_ONLY | true or false | true | true | true | If the build should fail and exit if it is not in a virtual machine. Set to `false` for a bare-metal installation. | | WINESAPOS_CREATE_DEVICE | true or false | false | false | false | If the build should create and use an image file instead of using an existing block device. | | WINESAPOS_CREATE_DEVICE_SIZE | integer for GiB | (None) | (None) | (None) | Manually override the default values for the device size (8 GiB with no cross-platform storage and 25 GiB with). | @@ -464,7 +464,9 @@ sudo docker build --pull --no-cache -t winesapos-img-builder:manjaro build/. sudo docker run --rm -v $(pwd):/workdir -v /dev:/dev --env WINESAPOS_DISTRO=manjaro --privileged=true winesapos-img-builder:manjaro /bin/bash -x /workdir/scripts/winesapos-build.sh ``` -By default, the performance image is built. Use `--env WINESAPOS_ENV_FILE=winesapos-env-minimal.sh` or `--env WINESAPOS_ENV_FILE=winesapos-env-secure.sh` to build a different image type. Use the winesapOS testing repository with the argument `--env WINESAPOS_ENABLE_TESTING_REPO=true`. +For a new stable release, use the winesapOS repository repository with the argument `--env WINESAPOS_ENABLE_REPO_ROLLING=false`. + +By default, the performance image is built. Use `--env WINESAPOS_ENV_FILE=winesapos-env-minimal.sh` or `--env WINESAPOS_ENV_FILE=winesapos-env-secure.sh` to build a different image type. Optionally do a build using the Arch Linux Archive (ALA) by using `--env WINESAPOS_SINGLE_MIRROR=true --env WINESAPOS_SINGLE_MIRROR_URL=https://archive.archlinux.org/repos/2024/08/12`. Manjaro does not have an ALA equivalent. @@ -527,12 +529,17 @@ Manual tests for each image type: ##### Upgrades -By default, the winesapOS upgrade script will update all upgrade files and exit if there are changes detected. For testing on a branch that is not `stable` (such as `staging`), set an environment variable to skip updating upgrade files as these are pulled from the `stable` branch. +Optionally set environmnet variables first. + +| Key | Values | Default | Description | +| --- | ------ | ------- | ----------- | +| WINESAPOS_UPGRADE_FILES | true or false | true | Replace the remote upgrade desktop shortcut and script with newer versions if they are older. | +| WINESAPOS_UPGRADE_REPO_ROLLING | true or false | true | Use the winesapOS rolling updates package repository instead of the stable package repository. | +| WINESAPOS_UPGRADE_VERSION_CHECK | true or false | false | Only upgrade if a newer version is available. | + +Then run the upgrade script. ``` -export WINESAPOS_UPGRADE_FILES=false -export WINESAPOS_UPGRADE_TESTING_REPO=true -export WINESAPOS_UPGRADE_VERSION_CHECK=false curl https://raw.githubusercontent.com/winesapOS/winesapOS/staging/scripts/winesapos-upgrade.sh | sudo -E bash ``` @@ -617,14 +624,14 @@ kubectl --namespace winesapos-repo cp <PACKAGE_FILE> deploy-winesapos-repo-<UUID For specialized repository builds, use environment variables to determine what packages will be built. ``` -sudo docker run --name winesapos-build-repo --rm --env WINESAPOS_REPO_BUILD_TESTING=true --env WINESAPOS_REPO_BUILD_LINUX_GIT=true --env WINESAPOS_REPO_BUILD_MESA_GIT=true --volume /tmp/winesapos-build-repo:/output ekultails/winesapos-build-repo:latest &> /tmp/winesapos-build-repo_$(date --iso-8601=seconds).log +sudo docker run --name winesapos-build-repo --rm --env WINESAPOS_REPO_BUILD_ROLLING=true --env WINESAPOS_REPO_BUILD_LINUX_GIT=true --env WINESAPOS_REPO_BUILD_MESA_GIT=true --volume /tmp/winesapos-build-repo:/output ekultails/winesapos-build-repo:latest &> /tmp/winesapos-build-repo_$(date --iso-8601=seconds).log ``` | Key | Values | Default | Description | | --- | ------ | ------- | ----------- | -| WINESAPOS_REPO_BUILD_TESTING | true or false | false | Name the Pacman repository database as "winesapos-testing" instead of "winesapos". | | WINESAPOS_REPO_BUILD_LINUX_GIT | true or false | false | Build `linux-git`. | | WINESAPOS_REPO_BUILD_MESA_GIT | true or false | false | Build `mesa-git` and `lib32-mesa-git`. | +| WINESAPOS_REPO_BUILD_ROLLING | true or false | false | Name the Pacman repository database as "winesapos-rolling" instead of "winesapos". | #### GPG Signing @@ -699,7 +706,7 @@ Major release schedule for Arch Linux: These are tasks that need to happen before publishing a stable release. - Rebuild all AUR packages. - - First publish them to the `[winesapos-testing]` repository and test them via a new build. + - First publish them to the `[winesapos-rolling]` repository and test them via a new build. - For the stable build and release, sign and then move these packages to the `[winesapos]` repository. - Update the versions for these programs by changing these variables: - rootfs/usr/local/bin/winesapos-ventoy-bootstrap.sh @@ -731,7 +738,7 @@ These are tasks that need to happen before publishing a stable release. - Add change log notes to the [CHANGELOG.md](CHANGELOG.md) file. - Add upgrade notes to the [UPGRADES.md](CHANGELOG.md) file. - For a new release, update the `rootfs/usr/lib/os-release-winesapos` file in the git repository with the new `VERSION` and `VERSION_ID` before building an image. -- Before building an alpha or beta build, enable the `[winesapos-testing]` repository with `export WINESAPOS_ENABLE_TESTING_REPO=true`. +- Before building an alpha or beta build, enable the `[winesapos-rolling]` repository with `export WINESAPOS_ENABLE_REPO_ROLLING=true`. - Create a "minimal" and "performance" release image (not "secure") using a [container build](#automated-container-build). - Due to the "secure" image having a common LUKS container encryption key that would be shared, users are encouraged to do their own custom build of winesapOS to generate a unique key instead. - Make sure that no tests failed by checking the exit/return code of the installation script. It should be zero. If not, that is how many tests have failed. diff --git a/UPGRADES.md b/UPGRADES.md index 6e3f9b2..768adc2 100644 --- a/UPGRADES.md +++ b/UPGRADES.md @@ -1,5 +1,15 @@ # Upgrade Notes +## 4.3.0 to 4.4.0 + +**Action Required:** + +- None. + +**No Action Required:** + +- Change the winesapOS stable repository to be the winesapOS rolling updates repository. + ## 4.2.0 to 4.3.0 **Action Required:** diff --git a/scripts/env/winesapos-env-defaults.sh b/scripts/env/winesapos-env-defaults.sh index 7663395..aca76ba 100755 --- a/scripts/env/winesapos-env-defaults.sh +++ b/scripts/env/winesapos-env-defaults.sh @@ -6,7 +6,7 @@ export \ WINESAPOS_INSTALL_DIR="${WINESAPOS_INSTALL_DIR:-/winesapos}" \ WINESAPOS_DISTRO="${WINESAPOS_DISTRO:-arch}" \ WINESAPOS_DISTRO_DETECTED="${winesapos_distro_detected}" \ - WINESAPOS_ENABLE_TESTING_REPO="${WINESAPOS_ENABLE_TESTING_REPO:-false}" \ + WINESAPOS_ENABLE_REPO_ROLLING="${WINESAPOS_ENABLE_REPO_ROLLING:-true}" \ WINESAPOS_DE="${WINESAPOS_DE:-plasma}" \ WINESAPOS_ENCRYPT="${WINESAPOS_ENCRYPT:-false}" \ WINESAPOS_ENCRYPT_PASSWORD="${WINESAPOS_ENCRYPT_PASSWORD:-password}" \ diff --git a/scripts/repo/winesapos-build-repo.sh b/scripts/repo/winesapos-build-repo.sh index d62a0b4..70ea159 100755 --- a/scripts/repo/winesapos-build-repo.sh +++ b/scripts/repo/winesapos-build-repo.sh @@ -117,7 +117,7 @@ makepkg_fn inputmodule-control #makepkg_fn aw87559-firmware mkdir /tmp/aw87559-firmware/ cd /tmp/aw87559-firmware/ -curl --location --remote-name https://winesapos.lukeshort.cloud/repo/winesapos-testing/x86_64/aw87559-firmware-8.0.1.10-1-x86_64.pkg.tar.zst +curl --location --remote-name https://winesapos.lukeshort.cloud/repo/winesapos-4.3.0//x86_64/aw87559-firmware-8.0.1.10-1-x86_64.pkg.tar.zst makepkg_local_fn noop git clone https://github.com/TheoBrigitte/pkgbuilds.git @@ -160,9 +160,9 @@ if [[ "${WINESAPOS_REPO_BUILD_MESA_GIT}" == "true" ]]; then fi # Build Pacman repository metadata. -WINESAPOS_REPO_BUILD_TESTING="${WINESAPOS_REPO_BUILD_TESTING:-false}" -if [[ "${WINESAPOS_REPO_BUILD_TESTING}" == "true" ]]; then - if ! repo-add "${OUTPUT_DIR}"/winesapos-testing.db.tar.gz "${OUTPUT_DIR}"/*pkg.tar.xz "${OUTPUT_DIR}"/*pkg.tar.zst; then +WINESAPOS_REPO_BUILD_ROLLING="${WINESAPOS_REPO_BUILD_ROLLING:-false}" +if [[ "${WINESAPOS_REPO_BUILD_ROLLING}" == "true" ]]; then + if ! repo-add "${OUTPUT_DIR}"/winesapos-rolling.db.tar.gz "${OUTPUT_DIR}"/*pkg.tar.xz "${OUTPUT_DIR}"/*pkg.tar.zst; then # shellcheck disable=SC2003 failed_builds=$(expr ${failed_builds} + 1) fi diff --git a/scripts/winesapos-install.sh b/scripts/winesapos-install.sh index 2fd1514..656f9b0 100755 --- a/scripts/winesapos-install.sh +++ b/scripts/winesapos-install.sh @@ -285,12 +285,12 @@ else fi echo "Adding the winesapOS repository..." -if [[ "${WINESAPOS_ENABLE_TESTING_REPO}" == "false" ]]; then +if [[ "${WINESAPOS_ENABLE_REPO_ROLLING}" == "false" ]]; then # shellcheck disable=SC2016 sed -i 's/\[core]/[winesapos]\nServer = http:\/\/winesapos.lukeshort.cloud\/repo\/$repo\/$arch\n\n[core]/g' "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf else # shellcheck disable=SC2016 - sed -i 's/\[core]/[winesapos-testing]\nServer = http:\/\/winesapos.lukeshort.cloud\/repo\/$repo\/$arch\nSigLevel = Never\n\n[core]/g' "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf + sed -i 's/\[core]/[winesapos-rolling]\nServer = http:\/\/winesapos.lukeshort.cloud\/repo\/$repo\/$arch\nSigLevel = Never\n\n[core]/g' "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf fi # DNS resolvers need to be configured first before accessing the GPG key server. diff --git a/scripts/winesapos-tests.sh b/scripts/winesapos-tests.sh index 02e54b7..e2b8a7d 100755 --- a/scripts/winesapos-tests.sh +++ b/scripts/winesapos-tests.sh @@ -245,14 +245,14 @@ printf "Testing user creation complete.\n\n" echo "Testing package repositories..." printf "\tChecking that the winesapOS repository was added..." -if [[ "${WINESAPOS_ENABLE_TESTING_REPO}" == "false" ]]; then +if [[ "${WINESAPOS_ENABLE_REPO_ROLLING}" == "false" ]]; then if grep -q -P "^\[winesapos\]" "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf; then echo PASS else winesapos_test_failure fi else - if grep -q -P "^\[winesapos-testing\]" "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf; then + if grep -q -P "^\[winesapos-rolling\]" "${WINESAPOS_INSTALL_DIR}"/etc/pacman.conf; then echo PASS else winesapos_test_failure diff --git a/scripts/winesapos-uninstall.sh b/scripts/winesapos-uninstall.sh index 4ec2170..c46d7a9 100755 --- a/scripts/winesapos-uninstall.sh +++ b/scripts/winesapos-uninstall.sh @@ -5,6 +5,7 @@ exec > >(tee /root/winesapos-uninstall.log) 2>&1 # Remove winesapOS and SteamOS repositories. crudini --del /etc/pacman.conf winesapos +crudini --del /etc/pacman.conf winesapos-rolling crudini --del /etc/pacman.conf winesapos-testing crudini --del /etc/pacman.conf jupiter crudini --del /etc/pacman.conf holo diff --git a/scripts/winesapos-upgrade.sh b/scripts/winesapos-upgrade.sh index 75c8880..a29b61c 100755 --- a/scripts/winesapos-upgrade.sh +++ b/scripts/winesapos-upgrade.sh @@ -7,6 +7,7 @@ exec > >(tee "/tmp/upgrade_${START_TIME}.log") 2>&1 echo "Start time: ${START_TIME}" WINESAPOS_UPGRADE_FILES="${WINESAPOS_UPGRADE_FILES:-true}" +WINESAPOS_UPGRADE_REPO_ROLLING="${WINESAPOS_UPGRADE_REPO_ROLLING:-true}" WINESAPOS_UPGRADE_VERSION_CHECK="${WINESAPOS_UPGRADE_VERSION_CHECK:-false}" # Check for a custom user name. Default to 'winesap'. @@ -358,10 +359,11 @@ sudo -E -u "${WINESAPOS_USER_NAME}" "${qdbus_cmd}" "${kdialog_dbus}" /ProgressDi echo "Adding the winesapOS repository..." crudini_wrapper --del /etc/pacman.conf winesapos +crudini_wrapper --del /etc/pacman.conf winesapos-rolling crudini_wrapper --del /etc/pacman.conf winesapos-testing -if [[ "${WINESAPOS_UPGRADE_TESTING_REPO}" == "true" ]]; then +if [[ "${WINESAPOS_UPGRADE_REPO_ROLLING}" == "true" ]]; then # shellcheck disable=SC2016 - sed -i 's/\[core]/[winesapos-testing]\nServer = https:\/\/winesapos.lukeshort.cloud\/repo\/$repo\/$arch\nSigLevel = Never\n\n[core]/g' /etc/pacman.conf + sed -i 's/\[core]/[winesapos-rolling]\nServer = https:\/\/winesapos.lukeshort.cloud\/repo\/$repo\/$arch\nSigLevel = Never\n\n[core]/g' /etc/pacman.conf else # shellcheck disable=SC2016 sed -i 's/\[core]/[winesapos]\nServer = https:\/\/winesapos.lukeshort.cloud\/repo\/$repo\/$arch\n\n[core]/g' /etc/pacman.conf