#!/bin/sh # # Copyright (C) 2025 Luis Guzmán # Copyright (C) 2008-2024 Ruben Rodriguez # Copyright (C) 2014 Santiago Rodriguez # Copyright (C) 2019 Mason Hock # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # Note that you would need to publish and sign the upgrade tarball # gpg -ba release_name.tar.gz # Also, don't forget to update the meta-release files at archive and packages.t.i # The "obsoletes" list from ubuntu has been removed VERSION=16.2 . ./config # Previous upstream release name, update for each release. PREV_UPS_REL=jammy PREV_TRIS_REL=aramo # Use git Mirrors.masterlist as source. Mirrors_masterlist=$(mktemp) Mirrors_masterlist_git="trisquel-packages/-/raw/master/extra/mirrors/Mirrors.masterlist" TPH_GIT_URL="https://gitlab.trisquel.org/trisquel/package-helpers/" # Fix PEP440 version compatibility # https://salsa.debian.org/debian/distro-info/-/commit/e2877dc44659d034155495e91976874c209a3c02 patch_p1 $DATA/pep440.patch #%FSDG: Remove functions to deal with proprietary drivers rm ./DistUpgrade/xorg_fix_proprietary.py rm ./DistUpgrade/NvidiaDetector sed s/self.checkForNvidia/#self.checkForNvidia/ DistUpgrade/DistUpgradeCache.py -i sed '/_add_extras_repository/,/adding extras.ubuntu.com/d' -i DistUpgrade/DistUpgradeQuirks.py sed 's/01ubuntu/01backports/' -i DistUpgrade/DistUpgradeController.py rm tests/test-data/xorg.conf.fglrx # Fix mirror checker sed '/security.ubuntu.com" in entry.uri or/d' -i DistUpgrade/DistUpgradeController.py #https://bugs.launchpad.net/ubuntu/+source/python-defaults/+bug/990740 cat << EOF >> DistUpgrade/DistUpgradeQuirks.py def from_taranisPostInitialUpdate(self): logging.debug("Setting APT::Immediate-Configure=false") apt.apt_pkg.config.set("APT::Immediate-Configure", "false") os.system("apt-get install --force-yes -y libblkid1 lzma dpkg") def from_taranisPostCleanup(self): logging.debug("Setting APT::Immediate-Configure=true") apt.apt_pkg.config.set("APT::Immediate-Configure", "true") EOF rm $(find . -name Ubuntu.info) cat << EOF > DistUpgrade/Trisquel.info ChangelogURI: https://packages.trisquel.org/changelogs/pool/%s/%s/%s/%s_%s/%s Suite: $CODENAME RepositoryType: deb BaseURI: https://archive.trisquel.org/trisquel/ Description: Trisquel $CODENAME Component: main Enabled: 1 CompDescription: Trisquel GNU/linux packages Suite: $CODENAME-security RepositoryType: deb BaseURI: https://archive.trisquel.org/trisquel/ Description: Trisquel $CODENAME Security Updates Component: main Enabled: 1 CompDescription: Trisquel GNU/linux packages Suite: $CODENAME-updates RepositoryType: deb BaseURI: https://archive.trisquel.org/trisquel/ Description: Trisquel $CODENAME Updates Component: main Enabled: 1 CompDescription: Trisquel GNU/linux packages Suite: $CODENAME-backports RepositoryType: deb BaseURI: https://archive.trisquel.org/trisquel/ Description: Trisquel $CODENAME Backports Component: main Enabled: 0 CompDescription: Trisquel GNU/linux packages EOF rm DistUpgrade/ReleaseAnnouncement cat << EOF > DistUpgrade/ReleaseAnnouncement = Welcome to Trisquel GNU/Linux $REVISION '$CODENAME' = The Trisquel team is proud to announce Trisquel $REVISION '$CODENAME'. We recommend to apply all pending updates to the system before upgrading. Trisquel is a fully free operating system based in GNU/Linux, for domestic users, small enterprises and educational centers. We hope you enjoy Trisquel. == Feedback and Helping == If you would like to help shape Trisquel, take a look at the list of ways you can participate at https://trisquel.info/en/wiki/how-help Your comments, bug reports, patches and suggestions will help ensure that our next release is the best release of Trisquel ever. If you feel that you have found a bug please send it to us via https://gitlab.trisquel.org/trisquel/package-helpers/-/issues If you have a question, or if you think you may have found a bug but aren't sure, first try asking on the #trisquel IRC channel on LiberaChat, on the Trisquel Users mailing list, or on the Trisquel forums: https://listas.trisquel.info/ https://trisquel.info/forum == More Information == You can find out more about Trisquel on our website, IRC channel and wiki. If you're new to Trisquel, please visit: https://trisquel.info To sign up for future Trisquel announcements, please subscribe to Trisquel's very low volume announcement list at: https://listas.trisquel.info/mailman/listinfo/trisquel-announce EOF rm DistUpgrade/DevelReleaseAnnouncement cat << EOF > DistUpgrade/DevelReleaseAnnouncement This is a development release, do not install on production systems! EOF cat DistUpgrade/ReleaseAnnouncement >> DistUpgrade/DevelReleaseAnnouncement rm DistUpgrade/EOLReleaseAnnouncement cat << EOF > DistUpgrade/EOLReleaseAnnouncement = Trisquel GNU/Linux $REVISION '$CODENAME' is NO LONGER SUPPORTED! = You are attempting to upgrade to a version of Trisquel that is no longer supported. Since we do only keep upgrade packages for decomissioned releases for a while, this upgrade may fail. Try the sandbox method first (by running update-manager -s) or ask in our forums, lists or irc channels if you are unsure about this procedure. Even if the required upgrade packages for $CODENAME are still available, to get a currently supported release you would need to upgrade at least once more after this procedure ends, so we recommend you to do a clean install using the latest LTS or STS edition. == Feedback and Helping == If you would like to help shape Trisquel, take a look at the list of ways you can participate at https://trisquel.info/en/wiki/how-help Your comments, bug reports, patches and suggestions will help ensure that our next release is the best release of Trisquel ever. If you feel that you have found a bug please send it to us via https://gitlab.trisquel.org/trisquel/package-helpers/-/issues If you have a question, or if you think you may have found a bug but aren't sure, first try asking on the #trisquel IRC channel on LiberaChat, on the Trisquel Users mailing list, or on the Trisquel forums: https://listas.trisquel.info/ https://trisquel.info/forum == More Information == You can find out more about Trisquel on our website, IRC channel and wiki. If you're new to Trisquel, please visit: https://trisquel.info To sign up for future Trisquel announcements, please subscribe to Trisquel's very low volume announcement list at: https://listas.trisquel.info/mailman/listinfo/trisquel-announce EOF rm DistUpgrade/EOLReleaseAnnouncement.html DistUpgrade/ReleaseAnnouncement.html perl $DATA/parsewiki DistUpgrade/EOLReleaseAnnouncement > DistUpgrade/EOLReleaseAnnouncement.html perl $DATA/parsewiki DistUpgrade/ReleaseAnnouncement > DistUpgrade/ReleaseAnnouncement.html perl $DATA/parsewiki DistUpgrade/DevelReleaseAnnouncement > DistUpgrade/DevelReleaseAnnouncement.html cat < data/removal_denylist.cfg # list of packages that should never be removed trisquel-base trisquel-minimal trisquel-desktop-common trisquel-mini triskel trisquel-sugar # update-manager should not remove itself update-manager update-manager-core trisquel-release-upgrader-core # if for example postgresql-10 is purged the cluster can be dropped which we # should prevent (LP: #871893, #1825563) ^postgresql-.*[0-9]\.[0-9].* ^postgresql-.*[0-9][0-9].* # the upgrade runs in it ^screen$ # the upgrade might be run over ssh ^openssh-server$ EOF rm data/mirrors.cfg # https://gitlab.trisquel.org/trisquel/trisquel-packages/-/tree/master/extra/mirrors # FIXME: Propose a way to integrate from git and avoid fetching via wget/curl. wget https://gitlab.trisquel.org/trisquel/$Mirrors_masterlist_git -o /dev/null -O $Mirrors_masterlist python3 $DATA/../python-apt/parse-mirror-masterlist.py $Mirrors_masterlist|grep https|sort > data/mirrors.cfg rm $Mirrors_masterlist replace changelogs.ubuntu.com packages.trisquel.org . rpl ubuntu-archive-keyring.gpg trisquel-archive-keyring.gpg . -R rpl 11\.04 5\.0 DistUpgrade/*.ui rpl 11\.04 5\.0 po/* -R rpl 11\.10 5\.5 DistUpgrade/*.ui rpl 11\.10 5\.5 po/* -R rpl 12\.04 6\.0 DistUpgrade/*.ui rpl 12\.04 6\.0 po/* -R rpl 14\.04 7\.0 po/* -R rpl 14\.04 7\.0 DistUpgrade/*.ui -R replace '14.04' '7.0' rpl 16\.04 8\.0 po/* -R rpl 16\.04 8\.0 DistUpgrade/*.ui -R replace '16.04' '8.0' rpl 18\.04 9\.0 po/* -R rpl 18\.04 9\.0 DistUpgrade/*.ui -R replace '18.04' '9.0' rpl 20\.04 10\.0 po/* -R rpl 20\.04 10\.0 DistUpgrade/*.ui -R replace '20.04' '10.0' replace '22.04' '11.0' replace '24.04' '12.0' rpl oneiric brigantia . -R rpl natty dagda . -R rpl maverick slaine . -R rpl lucid taranis . -R rpl karmic awen . -R rpl jaunty dwyn . -R rpl hardy robur . -R rpl lucid taranis . -R rpl precise toutatis . -R rpl trusty belenos . -R rpl xenial flidas . -R rpl bionic etiona . -R rpl focal nabia . -R rpl jammy aramo . -R rpl noble ecne . -R rm data/DistUpgrade.cfg* cp $DATA/DistUpgrade.cfg* data/ cat << EOF | tee -a utils/demoted.cfg utils/demoted.cfg.$PREV_UPS_REL notification-daemon resolvconf eom desktop-common EOF for i in utils/demoted.cfg utils/demoted.cfg.$PREV_UPS_REL do sort -o $i $i done mv data/demoted.cfg.$PREV_UPS_REL data/demoted.cfg.$PREV_TRIS_REL sed -i "s|the command .ubuntu-bug ubuntu-release-upgrader-core. in a terminal|$TPH_GIT_URL|" DistUpgrade/DistUpgradeCache.py replace "https*://launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+filebug" "${TPH_GIT_URL}-/issues" . replace "https*://launchpad.net/ubuntu/+source/ubuntu-release-upgrader" "$TPH_GIT_URL" . replace "https*://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+filebug" "${TPH_GIT_URL}-/issues" . find -type f |xargs rename 's/ubuntu-release-upgrader/trisquel-release-upgrader/g' replace "ubuntu-release-upgrader" "trisquel-release-upgrader" . mv kubuntu-devel-release-upgrade triskel-devel-release-upgrade #mv tests/test-data-cdrom/ubuntu tests/test-data-cdrom/trisquel replace old-releases.ubuntu.com oldarchive.trisquel.org rpl "edubuntu" "trisquel-sugar" . -R rpl "xubuntu" "trisquel-mini" . -R rpl "kubuntu" "triskel" . -R rpl "Kubuntu" "Triskel" . -R rpl " Ubuntu " " Trisquel " . -R rpl "Ubuntu " "Trisquel " . -R rpl " Ubuntu" " Trisquel" . -R rpl " ubuntu " " trisquel " . -R rpl "ubuntu " "trisquel " . -R rpl " ubuntu" " trisquel" . -R rpl archive.ubuntu.com/ubuntu archive.trisquel.org/trisquel . -R rpl security.ubuntu.com/ubuntu archive.trisquel.org/trisquel . -R rpl archive.ubuntu.com archive.trisquel.org . -R rpl security.ubuntu.com archive.trisquel.org . -R sed "s/.main., .restricted., .universe., .multiverse./'main'/g" DistUpgrade/DistUpgradeController.py -i utils/demotions.py sed '/restricted/d' -i utils/demotions.py rpl "main restricted" "main" DistUpgrade -R replace Ubuntu Trisquel replace Canonical Trisquel replace "https*://www.ubuntu.com/" "https://trisquel.info" . replace "https*://wiki.ubuntu.com/X/Bugs/" "${TPH_GIT_URL}-/issues" . replace "https*://wiki.ubuntu.com/" "https://trisquel.info/wiki" . replace "https*://help.ubuntu.com/community" "https://trisquel.info/wiki" . /bin/sed -i \ -e 's/kubuntu/triskel/g' \ -e 's/xubuntu/trisquel-mini/g' \ -e 's/�~Lubuntu/�~Ltrisquel/g' \ -e 's/被ubuntu/被trisquel/g' \ -e "s#http://launchpad.net/ubuntu/+source/%s/%s/+changelog#$TPH_GIT_URL#g" \ -e 's/<.*@ubuntu.com/ data/meta-release # default location for the meta-release file [METARELEASE] URI = https://archive.trisquel.org/trisquel/meta-release URI_LTS = https://archive.trisquel.org/trisquel/meta-release URI_UNSTABLE_POSTFIX = -development URI_PROPOSED_POSTFIX = -proposed MR-FILE # Modify build-scripts sed -i "s|DIST=.*|DIST=$CODENAME|" DistUpgrade/build-dist.sh sed -i "s|MAINTAINER=.*|MAINTAINER=\"$DEBFULLNAME <$DEBEMAIL>\"|" DistUpgrade/build-dist.sh #NOTE: In order to run build-dist.sh it is required: # - apt-clone # - intltool changelog "Compiled for Trisquel" PARALLEL=false package