Compare commits

..

15 Commits

Author SHA1 Message Date
Christoph Reiter
2480a1e1ae shortcuts: start launcher and rename
Instead of calling msys2_shell.cmd call the respective launchers.
This unifies the way MSYS2 is started for most users and allows them
to set launch variables in the launcher .ini files.

While at it also rename the shortcuts to reference the environment names
instead of describing the environment. Not everyone might care or know
what these mean, so just unify them with the MSYSTEM env var which is
shown when starting bash right after.

Fixes #24
2022-08-15 22:09:51 +02:00
Christoph Reiter
bb31bc4758 Run package checksum tests as well
But don't fail, since most packages are missing the checksums still.
Once we have rebuilt everything in base we can treat errors there as fatal.

This shows us what is missing still..
2022-05-03 09:50:47 +02:00
Christoph Reiter
a63c2efbb1 release todo list: update setup-msys2 first, to make sure all tests pass 2022-03-19 09:25:25 +01:00
Christoph Reiter
0f0ce8ac4a CI: prefix the matrix job name with the parent job name
so it's easier to understand what type of test it runs
2022-01-28 12:03:05 +01:00
Christoph Reiter
92cd8703f0 Fix install scripts failing when installing into the chroot
While everything can asume base is there, packages in base also
implicitely depend on the runtime (and maybe filesystem?), so install
them first.

Until now we were just lucky that pacman installed them in the right order.

Fixes #40
2022-01-28 12:03:05 +01:00
Christoph Reiter
d7119e21be CI: test syncing without a login shell and installing a package 2022-01-28 12:03:05 +01:00
Christoph Reiter
3afa802e7b Move to the 2022 image, like everywhere else 2022-01-28 12:03:05 +01:00
Christoph Reiter
109259037b Use a higher compression level for xz 2022-01-01 14:23:47 +01:00
Christoph Reiter
ff11ad435d CI: run daily 2021-12-20 08:56:37 +01:00
Christoph Reiter
5ff691e212 CI: stop testing with windows-2016
The image is going away beginning of next year.
2021-12-12 14:46:57 +01:00
Christoph Reiter
a2903688fa Update .gitignore
Co-authored-by: Naveen M K <naveen521kk@gmail.com>
2021-11-29 17:31:21 +01:00
Christoph Reiter
c898282f3f Switch the sfx installer to zstandard
Using a 7zip fork with zstandard support: https://github.com/mcmilk/7-Zip-zstd

Saves 20% CPU when extracting, also uses ~50MB less peak memory.
Downside is a 5% larger installer.
2021-11-29 17:31:21 +01:00
Christoph Reiter
289a0c9938 Fix switching to the main mirror
The config files have changed in the mean time.
2021-11-23 09:57:15 +01:00
Christoph Reiter
097ca2e025 CI: only upload the "latest" variants 2021-11-23 09:53:01 +01:00
Mehdi Chinoune
14c8d38bc1 Use github-cli to upload installers 2021-11-23 08:56:39 +01:00
9 changed files with 109 additions and 54 deletions

View File

@@ -1,13 +0,0 @@
FROM mcr.microsoft.com/windows/servercore:ltsc2016
COPY ./msys2-base-x86_64-latest.sfx.exe /msys2.exe
RUN powershell -Command \
$ErrorActionPreference = 'Stop'; \
$ProgressPreference = 'SilentlyContinue'; \
/msys2.exe -y -oC:\; \
function msys() { C:\msys64\usr\bin\bash.exe @('-lc') + @Args; } \
msys ' '; \
msys 'pacman --noconfirm -Syuu'; \
msys 'pacman --noconfirm -Syuu'; \
msys 'pacman --noconfirm -Scc';

View File

@@ -5,13 +5,13 @@ on:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 3 * * 1,4'
- cron: '0 3 * * *'
concurrency: nope
jobs:
build-installer:
runs-on: windows-latest
runs-on: windows-2022
steps:
- name: Checkout code
uses: actions/checkout@v2
@@ -26,9 +26,8 @@ jobs:
- name: Switch to the main mirror
shell: msys2 {0}
run: |
sed -e "s|Include = /etc/pacman.d/mirrorlist.mingw32|Server = http://repo.msys2.org/mingw/i686/|g" -i /etc/pacman.conf
sed -e "s|Include = /etc/pacman.d/mirrorlist.mingw64|Server = http://repo.msys2.org/mingw/x86_64/|g" -i /etc/pacman.conf
sed -e "s|Include = /etc/pacman.d/mirrorlist.msys|Server = http://repo.msys2.org/msys/\$arch/|g" -i /etc/pacman.conf
echo 'Server = https://repo.msys2.org/mingw/$repo/' > /etc/pacman.d/mirrorlist.mingw
echo 'Server = https://repo.msys2.org/msys/$arch/' > /etc/pacman.d/mirrorlist.msys
pacman-conf.exe
- name: Update using the main mirror & Check install
@@ -41,15 +40,15 @@ jobs:
shell: msys2 {0}
run: |
bash make-msys2-installer
- name: Create 'latest' Variants and Checksums
run: |
mv msys2-base-x86_64-[0-9]*.sfx.exe msys2-base-x86_64-latest.sfx.exe
mv msys2-x86_64-[0-9]*.exe msys2-x86_64-latest.exe
mv msys2-*.tar.xz msys2-base-x86_64-latest.tar.xz
sha256sum.exe msys2-*
sha256sum.exe msys2-* > msys2-checksums.txt
- name: Create 'latest' Variants
run: |
cp msys2-base-x86_64-[0-9]*.sfx.exe msys2-base-x86_64-latest.sfx.exe
cp msys2-x86_64-[0-9]*.exe msys2-x86_64-latest.exe
cp msys2-*.tar.xz msys2-base-x86_64-latest.tar.xz
- name: Upload Results
uses: actions/upload-artifact@v2
with:
@@ -57,13 +56,13 @@ jobs:
path: msys2-*
test-installer:
name: windows-${{ matrix.image }}
name: installer-${{ matrix.image }}
runs-on: windows-${{ matrix.image }}
needs: build-installer
strategy:
fail-fast: false
matrix:
image: [2016, 2019, 2022]
image: [2019, 2022]
steps:
- name: Checkout code
uses: actions/checkout@v2
@@ -76,24 +75,30 @@ jobs:
run: |
./msys2-x86_64-latest.exe in --confirm-command --accept-messages --root C:/msys2-install-test
- name: Test without Login Shell
run: |
C:\msys2-install-test\usr\bin\pacman.exe -Syy
C:\msys2-install-test\usr\bin\pacman.exe --noconfirm -S vim
- name: Test
run: |
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman --version"
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman -Qkv"
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman -Syy"
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman --noconfirm -S git"
- name: Uninstall
run: |
C:\msys2-install-test\uninstall.exe pr --confirm-command
test-docker-sfx:
name: ltsc-${{ matrix.image }}
name: docker-sfx-${{ matrix.image }}
runs-on: windows-${{ matrix.image }}
needs: build-installer
strategy:
fail-fast: false
matrix:
image: [2016, 2019, 2022]
image: [2019, 2022]
steps:
- name: Checkout code
uses: actions/checkout@v2
@@ -106,11 +111,54 @@ jobs:
run: |
docker build -t msys2-base -f ./.ci/Dockerfile.${{ matrix.image }} .
- name: Test without Login Shell
run: |
docker run msys2-base C:\msys64\usr\bin\pacman.exe -Syy
docker run msys2-base C:\msys64\usr\bin\pacman.exe --noconfirm -S vim
- name: Test
run: |
docker run msys2-base C:\msys64\usr\bin\bash.exe -lc "pacman --version"
docker run msys2-base C:\msys64\usr\bin\bash.exe -lc "pacman -Qkv"
docker run msys2-base C:\msys64\usr\bin\bash.exe -lc "pacman -Qkk || true"
docker run msys2-base C:\msys64\usr\bin\bash.exe -lc "pacman -Syy"
docker run msys2-base C:\msys64\usr\bin\bash.exe -lc "pacman -S --noconfirm git"
test-sfx:
name: sfx-${{ matrix.image }}
runs-on: windows-${{ matrix.image }}
needs: build-installer
strategy:
fail-fast: false
matrix:
image: [2019, 2022]
steps:
- name: Checkout code
uses: actions/checkout@v2
- uses: actions/download-artifact@v2
with:
name: installer
- name: Install
run: |
./msys2-base-x86_64-latest.sfx.exe -y -oC:/msys2-install-test
- name: Test without Login Shell
run: |
$env:Path = 'C:\msys2-install-test\msys64\usr\bin;' + $env:Path
C:\msys2-install-test\msys64\usr\bin\bash.exe -c "pacman-key --init"
C:\msys2-install-test\msys64\usr\bin\bash.exe -c "pacman-key --populate"
C:\msys2-install-test\msys64\usr\bin\bash.exe -c "pacman -Syy"
C:\msys2-install-test\msys64\usr\bin\bash.exe -c "pacman --noconfirm -S vim"
- name: Test
run: |
C:\msys2-install-test\msys64\usr\bin\bash.exe -lc "pacman --version"
C:\msys2-install-test\msys64\usr\bin\bash.exe -lc "pacman -Qkv"
C:\msys2-install-test\msys64\usr\bin\bash.exe -lc "pacman -Qkk || true"
C:\msys2-install-test\msys64\usr\bin\bash.exe -lc "pacman -Syy"
C:\msys2-install-test\msys64\usr\bin\bash.exe -lc "pacman -S --noconfirm git"
upload-nightly:
permissions:
@@ -118,6 +166,7 @@ jobs:
needs:
- test-docker-sfx
- test-installer
- test-sfx
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
steps:
@@ -125,9 +174,8 @@ jobs:
with:
name: installer
- uses: eine/tip@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: nightly-x86_64
rm: true
files: msys2-*
- name: Upload Installers
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload nightly-x86_64 msys2-* --clobber -R ${{ github.repository }}

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
_cache
*.exe
*.xz

BIN
7zCon.sfx

Binary file not shown.

View File

@@ -39,6 +39,6 @@ Installing the self extracting archive to `C:\msys64`:
* Get all files with dates in their names, sign them and create checksum files (.sig and .sha256)
* Create a new git tag following format: `date -I`
* Upload the installer files to the release tag
* Update the download link and checksum for the GiHub action and verify that all tests pass: https://github.com/msys2/setup-msys2/blob/master/main.js
* Run `msys2-devtools/update-installer "$(date -I)"` on the server to copy the release from GitHub
* Update the link, name and checksum on the main website (pointing to GitHub): https://github.com/msys2/msys2.github.io/blob/source/web/index.md
* Update the download link and checksum for the GiHub action: https://github.com/msys2/setup-msys2/blob/master/main.js

28
create-sfx.sh Normal file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
# usage: ./create-sfx.sh /some/path/to/msys64 installer.exe
set -e
# Download and extract https://github.com/mcmilk/7-Zip-zstd
NAME="7z21.03-zstd-x64"
CHECKSUM="531b20dfb03d8f30f61ae56a181610bbb6f3cf7cc71dac1d8f95511289de76f3"
DIR="$( cd "$( dirname "$0" )" && pwd )"
mkdir -p "$DIR/_cache"
BASE="$DIR/_cache/$NAME"
if [ ! -f "$BASE.exe" ]; then
curl --fail -L "https://github.com/mcmilk/7-Zip-zstd/releases/download/v21.03-v1.5.0-R2/$NAME.exe" -o "$BASE.exe"
fi
echo "$CHECKSUM $BASE.exe" | sha256sum --quiet --check
if [ ! -d "$BASE" ]; then
7z e -o"$BASE" "$DIR/_cache/$NAME.exe"
fi
# Creat SFX installer
INPUT="$1"
OUTPUT="$2"
TEMP="$OUTPUT.payload"
rm -f "$TEMP"
"$BASE/7z" a "$TEMP" -ms1T -m0=zstd -mx22 "$INPUT"
cat "$BASE/7zCon.sfx" "$TEMP" > "$OUTPUT"
rm "$TEMP"

View File

@@ -1,10 +0,0 @@
#!/bin/bash
set -e
# Fetch 7zCon.sfx from upstream 7-zip
curl "https://www.7-zip.org/a/7z1900.exe" -o 7z1900.exe
echo "759aa04d5b03ebeee13ba01df554e8c962ca339c74f56627c8bed6984bb7ef80 7z1900.exe" | sha256sum --check
7z x -o7zout 7z1900.exe
cp 7zout/7zCon.sfx .
rm -Rf 7zout 7z1900.exe

View File

@@ -74,6 +74,7 @@ create_archives() {
popd > /dev/null
pushd ${_newmsysbase} > /dev/null
export XZ_OPT="-e9T0"
local _compress_cmd2="/usr/bin/tar --transform='s/:/_/g' --dereference --hard-dereference -cJf ${_thisdir}/${_filename2} msys${_bitness}"
echo "Run: ${_compress_cmd2} ..." | tee -a ${_log}
eval "${_compress_cmd2}" 2>&1 | tee -a ${_log}
@@ -85,9 +86,7 @@ create_archives() {
fi
# self extracting cli 7z archive
7z a -mx=9 "${_thisdir}/_temp.7z" "msys${_bitness}"
cat ${_thisdir}/7zCon.sfx "${_thisdir}/_temp.7z" > "${_thisdir}/${_filename3}"
rm "${_thisdir}/_temp.7z"
"${_thisdir}/create-sfx.sh" "msys${_bitness}" "${_thisdir}/${_filename3}"
popd > /dev/null
}
@@ -114,6 +113,7 @@ create_chroot_system() {
mkdir -p tmp
eval "pacman -Syu --root \"${_newmsys}\"" | tee -a ${_log}
eval "pacman -S filesystem msys2-runtime --noconfirm --root \"${_newmsys}\"" | tee -a ${_log}
eval "pacman -S base --noconfirm --root \"${_newmsys}\"" | tee -a ${_log}
_result=$?
if [ "${_result}" -ne "0" ]; then

View File

@@ -17,12 +17,11 @@ function createShortcuts()
return;
}
var cmdLocation = installer.value("TargetDir") + "\\msys2_shell.cmd";
component.addOperation("CreateShortcut", cmdLocation, "@StartMenuDir@/MSYS2 MinGW x86.lnk", "-mingw32", "iconPath=@TargetDir@/mingw32.exe");
component.addOperation("CreateShortcut", cmdLocation, "@StartMenuDir@/MSYS2 MinGW x64.lnk", "-mingw64", "iconPath=@TargetDir@/mingw64.exe");
component.addOperation("CreateShortcut", cmdLocation, "@StartMenuDir@/MSYS2 MinGW UCRT x64.lnk", "-ucrt64", "iconPath=@TargetDir@/ucrt64.exe");
component.addOperation("CreateShortcut", cmdLocation, "@StartMenuDir@/MSYS2 MinGW Clang x64.lnk", "-clang64", "iconPath=@TargetDir@/clang64.exe");
component.addOperation("CreateShortcut", cmdLocation, "@StartMenuDir@/MSYS2 MSYS.lnk", "-msys", "iconPath=@TargetDir@/msys2.exe");
component.addOperation("CreateShortcut", "@TargetDir@/mingw32.exe", "@StartMenuDir@/MSYS2 MINGW32.lnk", "iconPath=@TargetDir@/mingw32.exe");
component.addOperation("CreateShortcut", "@TargetDir@/mingw64.exe", "@StartMenuDir@/MSYS2 MINGW64.lnk", "iconPath=@TargetDir@/mingw64.exe");
component.addOperation("CreateShortcut", "@TargetDir@/ucrt64.exe", "@StartMenuDir@/MSYS2 UCRT64.lnk", "iconPath=@TargetDir@/ucrt64.exe");
component.addOperation("CreateShortcut", "@TargetDir@/clang64.exe", "@StartMenuDir@/MSYS2 CLANG64.lnk", "iconPath=@TargetDir@/clang64.exe");
component.addOperation("CreateShortcut", "@TargetDir@/msys2.exe", "@StartMenuDir@/MSYS2 MSYS.lnk", "iconPath=@TargetDir@/msys2.exe");
if ("@BITNESS@bit" === "32bit") {
component.addOperation( "Execute",