Skip to content

Commit dceba1d

Browse files
committed
Try use pacman to fix cert error
Signed-off-by: Egor Savkin <[email protected]>
1 parent 60ec036 commit dceba1d

19 files changed

+1303
-1177
lines changed

.github/workflows/build.yml

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: 'build'
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
7+
concurrency: nope
8+
9+
jobs:
10+
build-installer:
11+
runs-on: windows-2022
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
- name: setup-msys2
17+
uses: msys2/setup-msys2@v2
18+
with:
19+
msystem: MINGW64
20+
update: true
21+
install: >-
22+
tar
23+
pacboy: >-
24+
qt-installer-framework:p
25+
7zip:p
26+
27+
- name: Switch to the main mirror
28+
shell: msys2 {0}
29+
run: |
30+
echo 'Server = https://repo.msys2.org/mingw/$repo/' > /etc/pacman.d/mirrorlist.mingw
31+
echo 'Server = https://repo.msys2.org/msys/$arch/' > /etc/pacman.d/mirrorlist.msys
32+
pacman-conf.exe
33+
34+
- name: Update using the main mirror & Check install
35+
run: |
36+
msys2 -c 'pacman --noconfirm -Suuy'
37+
msys2 -c 'pacman --noconfirm -Suu'
38+
msys2 -c 'pacman -Qkq'
39+
40+
- name: Build Installer
41+
shell: msys2 {0}
42+
run: |
43+
printf "\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n" >> /etc/pacman.conf
44+
pacman --noconfirm -Syy
45+
bash make-msys2-installer
46+
47+
- name: Create 'latest' Variants and Checksums
48+
run: |
49+
mv msys2-base-x86_64-[0-9]*.sfx.exe msys2-base-x86_64-latest.sfx.exe
50+
mv msys2-x86_64-[0-9]*.exe msys2-x86_64-latest.exe
51+
mv msys2-*.tar.xz msys2-base-x86_64-latest.tar.xz
52+
mv msys2-*.tar.zst msys2-base-x86_64-latest.tar.zst
53+
mv msys2-*.packages.txt msys2-base-x86_64-latest.packages.txt
54+
sha256sum.exe msys2-*
55+
sha256sum.exe msys2-* > msys2-checksums.txt
56+
57+
- name: Upload Results
58+
uses: actions/upload-artifact@v4
59+
with:
60+
name: installer
61+
path: msys2-*
62+
63+
test-installer:
64+
name: installer-${{ matrix.image }}
65+
runs-on: windows-${{ matrix.image }}
66+
needs: build-installer
67+
strategy:
68+
fail-fast: false
69+
matrix:
70+
image: [2022]
71+
steps:
72+
- name: Checkout code
73+
uses: actions/checkout@v4
74+
75+
- uses: actions/download-artifact@v4
76+
with:
77+
name: installer
78+
79+
- name: Install
80+
run: |
81+
./msys2-x86_64-latest.exe in --confirm-command --accept-messages --root C:/msys2-install-test
82+
83+
- name: Test without Login Shell
84+
run: |
85+
C:\msys2-install-test\usr\bin\pacman.exe -Syy
86+
C:\msys2-install-test\usr\bin\pacman.exe --noconfirm -S vim
87+
88+
- name: Test
89+
run: |
90+
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman --version"
91+
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman -Qkv"
92+
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman -Syy"
93+
C:\msys2-install-test\usr\bin\bash.exe -lc "pacman --noconfirm -S git"
94+
95+
- name: Uninstall
96+
run: |
97+
C:\msys2-install-test\uninstall.exe pr --confirm-command

HACKING.md

-16
This file was deleted.

flake.nix

+57-12
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,67 @@
99
pkgs = import nixpkgs {
1010
inherit system;
1111
};
12-
msys2-env = pkgs.stdenvNoCC.mkDerivation rec {
13-
name = "msys2-env";
12+
msys2-image = pkgs.stdenvNoCC.mkDerivation rec {
13+
name = "msys2-image";
1414
srcs = import ./msys2_packages.nix { inherit pkgs; };
15-
buildInputs = [ pkgs.gnutar pkgs.zstd pkgs.p7zip ];
15+
base_srcs = import ./msys2_base_packages.nix { inherit pkgs; };
16+
mirrors = pkgs.fetchurl {
17+
url = "https://mirror.msys2.org/msys/x86_64/pacman-mirrors-20240210-1-any.pkg.tar.zst";
18+
name = "pacman-mirrors";
19+
sha256 = "0sjj38fkiaixv2vkmivb0l9isv3fbvpq44ml0wyc7jq59k75pp2s";
20+
};
21+
22+
ca_certs = pkgs.fetchurl {
23+
url = "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-ca-certificates-20240203-1-any.pkg.tar.zst";
24+
name = "mingw-w64-x86_64-ca-certificates";
25+
sha256 = "092wq5mainz3insakm9lacqa348p3ya6xnf2c3s65x7c6hw0702v";
26+
};
27+
src = ./.;
28+
buildInputs = [ pkgs.gnutar pkgs.zstd pkgs.pacman pkgs.fakeroot ];
1629
phases = [ "installPhase" ];
17-
installPhase = (pkgs.lib.strings.concatStringsSep "\n" (["mkdir $out"] ++ (map (p: "tar xvf ${p} -C $out") srcs) ++
18-
["printf \"\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n\" >> $out/etc/pacman.conf"]));
30+
31+
installPhase = ''
32+
ls -al $src
33+
mkdir -p $out/tmp
34+
mkdir -p $out/tmp/etc $out/tmp/var/lib/pacman $out/tmp/msys/etc
35+
36+
cp $src/pacman.conf .
37+
#cp pacman.conf tmp/etc/pacman.conf
38+
ls -al .
39+
ls -al $out/tmp/etc/
40+
tar xvf ${mirrors} -C $out/tmp
41+
tar xvf ${ca_certs} -C $out/tmp
42+
${pkgs.lib.strings.concatStringsSep "\n" (map (p: "tar xvf ${p} -C $out/tmp") base_srcs)}
43+
${pkgs.lib.strings.concatStringsSep "\n" (map (p: "tar xvf ${p} -C $out/tmp") srcs)}
44+
tar xvf ${ca_certs} -C $out/tmp
45+
cat pacman.conf | sed -e "s|/etc/pacman.d|$out/tmp/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > $out/tmp/etc/pacman.conf
46+
#fakeroot pacman --root $out/tmp --config $out/tmp/etc/pacman.conf -Syy
47+
48+
mkdir -p $out/var/lib/pacman $out/msys/etc
49+
tar xvf ${mirrors} -C $out
50+
cp $src/pacman.conf $out/etc/pacman.conf
51+
#fakeroot pacman --root $out --config $out/tmp/etc/pacman.conf -Syy
52+
ls -al /
53+
#ln -s /proc/mounts /etc/mtab
54+
ls -al /etc
55+
ls -al /proc
56+
57+
58+
#fakeroot pacman -U --noconfirm --cachedir $out/tmp/msys/cache --config $out/tmp/etc/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") base_srcs)}
59+
#fakeroot pacman -U --noconfirm --cachedir $out/tmp/msys/cache --config $out/tmp/etc/pacman.conf --root $out ${pkgs.lib.concatStringsSep " " (map (p: "${p}") srcs)}
60+
rm -rf $out/tmp
61+
'';
1962
};
20-
msys2-qt = pkgs.stdenvNoCC.mkDerivation rec {
21-
name = "msys2-qt";
22-
srcs = import ./msys2_qt_packages.nix { inherit pkgs; };
63+
msys2-qt-ifw = pkgs.stdenvNoCC.mkDerivation rec {
64+
name = "msys2-qt-ifw";
65+
srcs = import ./msys2_qt_ifw_packages.nix { inherit pkgs; };
2366
buildInputs = [ pkgs.gnutar pkgs.zstd ];
2467
phases = [ "installPhase" ];
2568
installPhase = (pkgs.lib.strings.concatStringsSep "\n" (["mkdir $out"] ++ (map (p: "tar xvf ${p} -C $out") srcs)));
2669
};
2770

2871
buildMsys2Installer = pkgs.stdenv.mkDerivation {
2972
name = "msys2-installer";
30-
__networked = true;
3173
buildInputs = with pkgs; [ curl pacman fakeroot p7zip wine64 ];
3274
src = ./.;
3375
phases = [ "buildPhase" "installPhase" ];
@@ -39,9 +81,9 @@
3981
find qt-ifw \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@DATE@|$(date +'%Y-%m-%d')|g" "{}" \;
4082
find qt-ifw \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@VERSION@|$(date +'%Y%m%d')|g" "{}" \;
4183
42-
7z a -mx9 -md128m "qt-ifw/packages/com.msys2.root/data/msys64.7z" "${msys2-env}/"*
43-
${pkgs.wineWowPackages.stable}/bin/wine64 ${msys2-qt}/mingw64/bin/binarycreator.exe \
44-
-t "${msys2-qt}/mingw64/bin/installerbase.exe" \
84+
7z a -mx9 -md128m "qt-ifw/packages/com.msys2.root/data/msys64.7z" "${msys2-image}/"*
85+
${pkgs.wineWowPackages.stable}/bin/wine64 ${msys2-qt-ifw}/mingw64/bin/binarycreator.exe \
86+
-t "${msys2-qt-ifw}/mingw64/bin/installerbase.exe" \
4587
-p "qt-ifw/packages" \
4688
-c "qt-ifw/config/config.xml" \
4789
--offline-only \
@@ -51,6 +93,9 @@
5193
installPhase = ''
5294
mkdir -p $out
5395
cp msys2-x86_64.exe $out/
96+
for i in $out/*.*; do
97+
echo file binary-dist $i >> $out/nix-support/hydra-build-products
98+
done
5499
'';
55100
};
56101
in

make-msys2-installer

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ create_tmp_system() {
6767
printf "\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n" >> ${OLDROOT}/etc/pacman.conf
6868
${PACMAN} -Syy --root "${_newmsys}" ${OLDCONFIG}
6969
${PACMAN} -S ${MINGW_PACKAGE_PREFIX}-artiq --noconfirm --root "${_newmsys}" ${OLDCONFIG}
70-
${PACMAN} -Sp --root "${_newmsys}" ${OLDCONFIG} > "${_thisdir}/msys2-base-x86_64.packages.txt"
70+
${PACMAN} -Q --root "${_newmsys}" ${OLDCONFIG} > "${_thisdir}/msys2-base-x86_64.packages.txt"
7171
popd > /dev/null
7272
}
7373

make_msys2_packages.sh

+25-31
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,36 @@ cd $(dirname $0)
66
MSYS2DIR=`pwd`/msys2
77
mkdir -p $MSYS2DIR/var/lib/pacman $MSYS2DIR/msys/etc
88

9-
curl -L https://mirror.msys2.org/msys/x86_64/pacman-mirrors-20220205-1-any.pkg.tar.zst | tar xvf - -C $MSYS2DIR --zstd
9+
curl -L https://repo.msys2.org/msys/x86_64/pacman-mirrors-20240210-1-any.pkg.tar.zst | tar xvf - -C $MSYS2DIR --zstd
1010
curl -L https://raw.githubusercontent.com/msys2/MSYS2-packages/master/pacman/pacman.conf | sed -e "s|/etc/pacman.d|$MSYS2DIR/etc/pacman.d|g" -e "s|SigLevel = Required|SigLevel = Never|g" > $MSYS2DIR/etc/pacman.conf
1111

1212
printf "\n[artiq]\nSigLevel = Optional TrustAll\nServer = https://msys2.m-labs.hk/artiq-beta\n" >> $MSYS2DIR/etc/pacman.conf
1313

1414
fakeroot pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf -Syy
1515
pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \
16-
--sync --print-format "%l %n" filesystem msys2-runtime base \
17-
mingw-w64-x86_64-artiq > $MSYS2DIR/packages.txt
16+
--sync --print-format "%l %n" mingw-w64-x86_64-artiq > $MSYS2DIR/packages.txt
1817

1918
pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \
20-
--sync --print-format "%l %n" mingw-w64-x86_64-qt-installer-framework > $MSYS2DIR/qt_packages.txt
21-
22-
echo "{ pkgs } : [" > msys2_packages.nix
23-
while IFS= read -r line; do
24-
read -r url package <<< "$line"
25-
hash=$(nix-prefetch-url $url --name $package)
26-
echo "
27-
(pkgs.fetchurl {
28-
url = \"$url\";
29-
name = \"$package\";
30-
sha256 = \"$hash\";
31-
})" >> msys2_packages.nix
32-
done < $MSYS2DIR/packages.txt
33-
echo "]" >> msys2_packages.nix
34-
35-
36-
echo "{ pkgs } : [" > msys2_qt_packages.nix
37-
while IFS= read -r line; do
38-
read -r url package <<< "$line"
39-
hash=$(nix-prefetch-url $url --name $package)
40-
echo "
41-
(pkgs.fetchurl {
42-
url = \"$url\";
43-
name = \"$package\";
44-
sha256 = \"$hash\";
45-
})" >> msys2_qt_packages.nix
46-
done < $MSYS2DIR/qt_packages.txt
47-
echo "]" >> msys2_qt_packages.nix
19+
--sync --print-format "%l %n" filesystem msys2-runtime base > $MSYS2DIR/packages_base.txt
20+
21+
pacman --root $MSYS2DIR --config $MSYS2DIR/etc/pacman.conf --cachedir $MSYS2DIR/msys/cache \
22+
--sync --print-format "%l %n" mingw-w64-x86_64-qt-installer-framework > $MSYS2DIR/qt_ifw_packages.txt
23+
24+
function generate_nix_packages() {
25+
echo "{ pkgs } : [" > $OUT
26+
while IFS= read -r line; do
27+
read -r url package <<< "$line"
28+
hash=$(nix-prefetch-url $url --name $package)
29+
echo "
30+
(pkgs.fetchurl {
31+
url = \"$url\";
32+
name = \"$package\";
33+
sha256 = \"$hash\";
34+
})" >> $OUT
35+
done < $IN
36+
echo "]" >> $OUT
37+
}
38+
39+
IN=$MSYS2DIR/packages.txt OUT=msys2_packages.nix generate_nix_packages
40+
IN=$MSYS2DIR/qt_ifw_packages.txt OUT=msys2_qt_ifw_packages.nix generate_nix_packages
41+
IN=$MSYS2DIR/packages_base.txt OUT=msys2_base_packages.nix generate_nix_packages

msys2/qt-ifw/config/msys2.ico

-37.5 KB
Binary file not shown.

msys2/var/lib/pacman/sync/artiq.db

2.09 KB
Binary file not shown.

msys2/var/lib/pacman/sync/clang32.db

234 KB
Binary file not shown.

msys2/var/lib/pacman/sync/clang64.db

497 KB
Binary file not shown.
454 KB
Binary file not shown.

msys2/var/lib/pacman/sync/mingw32.db

244 KB
Binary file not shown.

msys2/var/lib/pacman/sync/mingw64.db

490 KB
Binary file not shown.

msys2/var/lib/pacman/sync/msys.db

487 KB
Binary file not shown.

msys2/var/lib/pacman/sync/ucrt64.db

509 KB
Binary file not shown.

0 commit comments

Comments
 (0)