Hi Neil,MSYS2 has been migrating away from 32-bit support. To recolve the issue, it is usually a matter of identifying the appropriate packages still mainained at https://repo.msys2.org/mingw/mingw32 and pulling them ourselves. When I decide to setup the environment, I usually modify the setup-mingw64.ps1 script locally. The attached version is what I used in June. Note: At the pause, I apply updates within the gnucash-on-windows.git folder that I find appropriate.
Regards, Sherlock On 8/8/26 3:06 AM, Neil Aggarwal wrote:
Hello all: I am following this guide: https://wiki.gnucash.org/wiki/Building_on_Windows Everything seems to go fine until I ran this command: jhbuild -f src/gnucash-on-windows.git/jhbuildrc build It gives me this output: Required packages: System installed packages which are too old: (none) No matching system package installed: boost cmake ninja jhbuild build: Required system dependencies not installed. Install using the command 'jhbuild sysdeps --install' or to ignore system dependencies use command-line option --nodeps When I ran jhbuild sysdeps --install the first time, it installed some stuff, but gave me some messages about things not found so I ran it multiple times with it installing some packages. Now, when I run it, nothing installs and I get this output: System installed packages which are new enough: automake libtool make pkg-config libxslt (libxslt.pc, required=1.1.26, installed=1.1.45) libxml2 (libxml-2.0.pc, required=2.7.8, installed=2.15.3) intltool (required=0.50.2) itstool git xmllint xsltproc python3-devel (python3.pc, required=3.2, installed=3.14) xmlcatalog docbook-xml docbook-xsl cc libffi (libffi.pc, required=3.0.0, installed=3.7.1) zlib (zlib.pc, installed=1.3.2) libpcre (libpcre.pc, required=8.31, installed=8.45) libpng (libpng.pc, installed=1.6.58) freetype2 (freetype2.pc, required=12.0.6, installed=26.6.20) bison (required=2.4) flex (required=2.0) c++ libicu (icu-i18n.pc, required=4, installed=76.1) bash-completion (bash-completion.pc, installed=2.17.0) gperf libarchive (libarchive.pc, required=3.2.1, installed=3.8.9) sqlite3 (sqlite3.pc, required=3.8.3, installed=3.53.4) gnutls (gnutls.pc, required=3.1, installed=3.8.13) p11-kit (p11-kit-1.pc, required=0.19.0, installed=0.26.4) libuuid (uuid.pc, installed=2.40.2) libyaml libgcrypt (required=1.5.0) libnghttp2 (libnghttp2.pc, installed=1.70.0) krb5 texinfo libtasn1 (libtasn1.pc, required=2.7, installed=4.21.0) asciidoc libdb llvm libclang readline hogweed (hogweed.pc, required=3.2, installed=4.0) nettle (nettle.pc, required=3.2, installed=4.0) libcurl (libcurl.pc, installed=8.21.0) gpgme (required=1.0.0) file mpc mpfr libunistring Required packages: System installed packages which are too old: (none) No matching system package installed: ninja shared-mime-info (shared-mime-info.pc, required=1.0) fontconfig (fontconfig.pc, required=2.13.0) gl (gl.pc) libXext (xext.pc) libXrender (xrender.pc) x11 (x11.pc) libXft (xft.pc, required=2.0.0) ragel libjpeg egl (egl.pc, required=1.3) cups (required=1.4) libXcursor (xcursor.pc) desktop-file-utils (required=0.20) flac (flac.pc, required=1.1.4) libvpx (vpx.pc) taglib (taglib.pc, required=1.5) wavpack (wavpack.pc, required=4.2) libavfilter (libavfilter.pc) libavformat (libavformat.pc) libavcodec (libavcodec.pc) libavutil (libavutil.pc) x11-xcb (x11-xcb.pc) libv4l (libv4l2.pc) dbus (dbus-1.pc, required=1.4.10) libXtst (xtst.pc, required=1) xi (xi.pc) xkbcommon-x11 (xkbcommon-x11.pc) pulseaudio (libpulse-mainloop-glib.pc, required=2.0) yasm cargo graphviz (libgvc.pc, required=2.26.0) vala-bootstrap polkit-gobject (polkit-gobject-1.pc, required=0.103) libcanberra (libcanberra-gtk.pc, required=0.30) nss (nss.pc, required=3.12.11) pam cmake libproxy (libproxy-1.0.pc) argyll lcms2 (lcms2.pc, required=2.6) docbook-utils (required=0.6.14) libxkbfile (xkbfile.pc) libXrandr (xrandr.pc, required=1.3) xkeyboard-config (xkeyboard-config.pc) libexif (libexif.pc, required=0.6.19) libtiff libdrm (libdrm.pc, required=2.4.45) libXcomposite (xcomposite.pc) xcb-dri2 (xcb-dri2.pc, required=1.8.1) hunspell (hunspell.pc) avahi (avahi-gobject.pc, required=0.6.31) hyphen libwebp mesa-libGLES (glesv2.pc, required=3.0) openjpeg (libopenjp2.pc, required=2.2.0) ruby libXdamage (xdamage.pc) libXt (xt.pc) libcanberra-gtk3 (libcanberra-gtk3.pc) dbus-glib (dbus-glib-1.pc, required=0.98) libpwquality (pwquality.pc) smbclient (smbclient.pc) kyotocabinet (kyotocabinet.pc) anthy (anthy.pc, required=0.3) libhangul (libhangul.pc, required=0.1.0) libxklavier (libxklavier.pc, required=5.0) sm (sm.pc) xtrans (xtrans.pc, required=1.3.5) liboauth (oauth.pc, required=0.9.4) openldap nspr (nspr.pc, required=4.9.2) dbus-run-session cvt libevdev (libevdev.pc, required=1.2.2) libxkbcommon (xkbcommon.pc, required=0.5.0) libX11 (x11.pc) libXfixes (xfixes.pc) libXi (xi.pc, required=1.7.4) libXinerama mesa-libEGL startup-notification (libstartup-notification-1.0.pc, required=0.12) xcb-randr (xcb-randr.pc) xcb-res (xcb-res.pc) xvfb-run polkit-agent (polkit-agent-1.pc, required=0.102) fuse (fuse.pc, required=2.8.0) libbluray (libbluray.pc) libcap libimobiledevice (libimobiledevice-1.0.pc, required=1.2.0) libnfs (libnfs.pc, required=1.9.8) libplist-2.0 (libplist-2.0.pc, required=2.2.0) libusb1 (libusb-1.0.pc, required=1.0.19) dotconf (dotconf.pc, required=1.3) espeak (required=1.46.02) libsndfile (sndfile.pc, required=1.0.21) exempi (exempi-2.0.pc, required=2.2.0) boost (required=1.33.1) libdmapsharing (libdmapsharing-3.0.pc) libvorbis (vorbisfile.pc) libraw (libraw.pc) lmdb libstemmer valgrind (valgrind.pc, required=3.10.0) libmusicbrainz (libmusicbrainz5.pc, required=5.0) Optional packages: (JHBuild will build the missing packages) System installed packages which are too old: (none) No matching system package installed: libepoxy (epoxy.pc) iso-codes (iso-codes.pc) cogl (cogl-1.0.pc) libgdata (libgdata.pc) WebKit6.0 (webkitgtk-6.0.pc, required=2.41.90) mozjs102 (mozjs-102.pc, required=102.1.0gnome1) telepathy-glib (telepathy-glib.pc) telepathy-logger (telepathy-logger-0.2.pc) libgee (gee-0.8.pc) WebKit (webkit2gtk-4.0.pc, required=2.41.90) I: Installing dependencies on system: ninja shared-mime-info fontconfig gl libXext libXrender x11 libXft ragel libjpeg egl cups libXcursor desktop-file-utils flac libvpx taglib wavpack libavfilter libavformat libavcodec libavutil x11-xcb libv4l dbus libXtst xi xkbcommon-x11 pulseaudio yasm cargo graphviz vala-bootstrap polkit-gobject libcanberra nss pam cmake libproxy argyll lcms2 docbook-utils libxkbfile libXrandr xkeyboard-config libexif libtiff libdrm libXcomposite xcb-dri2 hunspell avahi hyphen libwebp mesa-libGLES openjpeg ruby libXdamage libXt libcanberra-gtk3 dbus-glib libpwquality smbclient kyotocabinet anthy libhangul libxklavier sm xtrans liboauth openldap nspr dbus-run-session cvt libevdev libxkbcommon libX11 libXfixes libXi libXinerama mesa-libEGL startup-notification xcb-randr xcb-res xvfb-run polkit-agent fuse libbluray libcap libimobiledevice libnfs libplist-2.0 libusb1 dotconf espeak libsndfile exempi boost libdmapsharing libvorbis libraw lmdb libstemmer valgrind libmusicbrainz libepoxy iso-codes cogl libgdata WebKit6.0 mozjs102 telepathy-glib telepathy-logger libgee WebKit I: Using pacman to install packages. Please wait. W: Provider for "ninja" was not found, ignoring W: Provider for "ragel" was not found, ignoring W: Provider for "libjpeg" was not found, ignoring W: Provider for "cups" was not found, ignoring W: Provider for "desktop-file-utils" was not found, ignoring W: Provider for "yasm" was not found, ignoring W: Provider for "cargo" was not found, ignoring W: Provider for "vala-bootstrap" was not found, ignoring W: Provider for "pam" was not found, ignoring W: Provider for "cmake" was not found, ignoring W: Provider for "argyll" was not found, ignoring W: Provider for "docbook-utils" was not found, ignoring W: Provider for "libtiff" was not found, ignoring W: Provider for "hyphen" was not found, ignoring W: Provider for "libwebp" was not found, ignoring W: Provider for "ruby" was not found, ignoring W: Provider for "openldap" was not found, ignoring W: Provider for "dbus-run-session" was not found, ignoring W: Provider for "cvt" was not found, ignoring W: Provider for "libXinerama" was not found, ignoring W: Provider for "mesa-libEGL" was not found, ignoring W: Provider for "xvfb-run" was not found, ignoring W: Provider for "libcap" was not found, ignoring W: Provider for "espeak" was not found, ignoring W: Provider for "boost" was not found, ignoring W: Provider for "lmdb" was not found, ignoring W: Provider for "libstemmer" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/shared-mime-info.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/fontconfig.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/gl.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xext.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xrender.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/x11.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xft.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/egl.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xcursor.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/flac.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/vpx.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/taglib.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/wavpack.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libavfilter.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libavformat.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libavcodec.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libavutil.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/x11-xcb.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libv4l2.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/dbus-1.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xtst.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xi.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xkbcommon-x11.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libpulse-mainloop-glib.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libgvc.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/polkit-gobject-1.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libcanberra-gtk.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/nss.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libproxy-1.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/lcms2.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xkbfile.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xrandr.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xkeyboard-config.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libexif.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libdrm.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xcomposite.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xcb-dri2.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/hunspell.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/avahi-gobject.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/glesv2.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libopenjp2.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xdamage.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xt.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libcanberra-gtk3.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/dbus-glib-1.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/pwquality.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/smbclient.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/kyotocabinet.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/anthy.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libhangul.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libxklavier.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/sm.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xtrans.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/oauth.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/nspr.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libevdev.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xkbcommon.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/x11.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xfixes.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xi.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libstartup-notification-1.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xcb-randr.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/xcb-res.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/polkit-agent-1.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/fuse.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libbluray.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libimobiledevice-1.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libnfs.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libplist-2.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libusb-1.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/dotconf.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/sndfile.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/exempi-2.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libdmapsharing-3.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/vorbisfile.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libraw.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/valgrind.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libmusicbrainz5.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/epoxy.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/iso-codes.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/cogl-1.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/libgdata.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/webkitgtk-6.0.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/mozjs-102.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/telepathy-glib.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/telepathy-logger-0.2.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/gee-0.8.pc" was not found, ignoring W: Provider for "/usr/lib/pkgconfig/webkit2gtk-4.0.pc" was not found, ignoring I: Nothing to install Any ideas what went wrong? Thank you, Neil
# setup-mingw64.ps1: Powershell Script to create a MinGW64 Build Environment. # Copyright 2017 John Ralls <[email protected]> # # 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, contact: # Free Software Foundation Voice: +1-617-542-5942 # 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 # Boston, MA 02110-1301, USA [email protected] <# .SYNOPSIS Prepares a MinGW-w64 development environment from scratch or enhances one already existing on the system. .DESCRIPTION Prepares a development environment for building GnuCash with jhbuild in a MinGW-w64 (a.k.a. MSys2) environment. All required packages are installed and the gnucash-on-windows repository containing the other needed scripts is cloned into the target. You may need to allow running scripts on your computer and depending on where the target_dir is you may need to run the script with Administrator privileges. .PARAMETER target_dir Optional. The path at which you wish to create the environment. If none is provided the environment will be created at C:\gcdev64. .PARAMETER download_dir Optional. A path to which to download installers. Defaults to target_dir\downloads. .PARAMETER msys2_root Optional. The root path of an already installed MSys2 environment. E.g. C:\msys64. .PARAMETER x86_64 Optional. A switch value. If true the toolchain will build x86_64 binaries; if false it will build i686 binaries. Defaults to false. .PARAMETER preferred_mirror Optional. A URI to a preferred repository mirror for both the development environment setup and for the MSys2 package manager. Defaults to http://repo.msys2.org #> [CmdletBinding()] Param( [Parameter()] [string]$target_dir = "c:\\gcdev64", [Parameter()] [string]$download_dir = "$target_dir\\downloads", [Parameter()] [string]$msys2_root = "$target_dir\\msys2", [Parameter()] [switch]$x86_64, [Parameter()] [string]$preferred_mirror = "http://repo.msys2.org" ) $bash_path = "$msys2_root\\usr\\bin\\bash.exe" $progressPreference = 'silentlyContinue' if ($x86_64) { $arch = "mingw64" $arch_code = "x86_64" } else { $arch = "mingw32" $arch_code = "i686" } $arch_long = "mingw-w64-$arch_code" $mingw_prefix = "$arch/$arch_long-" $mingw_path = "/$arch" $mingw_bin = "$mingw_path/bin" $preferred_mirror = $preferred_mirror.TrimEnd('/') $mingw_url_prefix = "$preferred_mirror/mingw/$arch_code/$arch_long-" $env:MSYSTEM = $arch.ToUpper() if (!(test-path -path $target_dir)) { new-item "$target_dir" -type directory } if (!(test-path -path $download_dir)) { new-item "$download_dir" -type directory } function make-pkgnames ([string]$prefix, [string]$items) { $items.split(" ") | foreach-object {"$prefix$_"} } function Install-Package([string]$url, [string]$install_dir, [string]$setup_args) { $filename = $url.Substring($url.LastIndexOf("/") + 1) $download_file = "$download_dir\$filename" if (!(test-path -path $download_file)) { write-host "Downloading $download_file from $url" (New-Object System.Net.WebClient).DownloadFile($url, "$download_file") } write-host "Installing $download_file $setup_args" $psi = new-object "Diagnostics.ProcessStartInfo" $psi.Filename = "$download_file" $psi.Arguments = "$setup_args" $proc = [Diagnostics.Process]::Start($psi) $proc.waitForExit() } function bash-command() { param ([string]$command = "") if (!(test-path -path $bash_path)) { write-host "Shell program not found, aborting." return } #write-host "Running bash command ""$command""" Start-Process -FilePath "$bash_path" -ArgumentList "-c ""export PATH=/usr/bin; $command""" -NoNewWindow -Wait } function make-unixpath([string]$path) { $path -replace "^([A-Z]):", '/$1' -replace "\\", '/' -replace "//", '/' -replace "\(", '\(' -replace "\)", '\)' -replace " ", '\ ' } # Install MSYS2 for the current machine's architechture. if (!(test-path -path $bash_path)) { $mingw64_installer32 = "$preferred_mirror/distrib/msys2-i686-latest.exe" $mingw64_installer64 = "$preferred_mirror/distrib/msys2-x86_64-latest.exe" $mingw64_installer = If ([IntPtr]::size -eq 4) {$mingw64_installer32} Else {$mingw64_installer64} $msys_install_dir = (join-path $target_dir "msys2") -replace "\\", '/' $msys_setup_args = @" "@ install-package -url $mingw64_installer -install_dir "$msys2_root" -setup_args "in --root $msys_install_dir --al --am -c" } if (!(test-path -path $bash_path)) { write-host "Failed to install MSys2, aborting." exit } # prepend preferred_mirror to pacman mirrorlists if ($PSBoundParameters.ContainsKey('preferred_mirror')) { $mirror_beacon = '# This and the next line are managed by GnuCash bootstrap: setup-mingw64.ps1' $mirrorconf_list = ( '[mingw32]', 'mingw/i686'), ( '[mingw64]', 'mingw/x86_64'), ( '[msys]', 'msys/$arch') $pacmanconf_path = "$msys2_root\etc\pacman.conf" $pacmanconf = (Get-Content -Path "$pacmanconf_path" -Raw) -creplace "(?m)^${mirror_beacon}\r?\nServer = .+\r?\n",'' foreach ($mirrorconf in $mirrorconf_list) { $mirror_prepend = "$($mirrorconf[0])`n$mirror_beacon`nServer = $preferred_mirror/$($mirrorconf[1])`n" $pacmanconf = $pacmanconf -creplace ([System.Text.RegularExpressions.Regex]::Escape($mirrorconf[0]) + '.*\r?\n'),$mirror_prepend } Set-Content -NoNewline -Value $pacmanconf -Path "$pacmanconf_path" } # Install Html Help Workshop $html_help_workshop_url = "http://web.archive.org/web/20160201063255/http://download.microsoft.com/download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe" $html_help_workshop_installer = "htmlhelp.exe" $installed_hh = get-item -path "hkcu:\SOFTWARE\Microsoft\HTML Help Workshop" | foreach-object{$_.GetValue("InstallDir")} if (! (($installed_hh) -and (test-path -path $installed_hh))) { install-package -url $html_help_workshop_url -download_file "$download_dir\\$html_help_workshop_installer" -install_dir ${env:ProgramFiles(x86)} -setup_cmd $html_help_workshop_installer } $hhctrl_ocx = "c:\Windows\System32\hhctrl.ocx" if (!(test-path -path $hhctrl_ocx)) { write-host "Something's wrong with HTML Help Workshop, couldn't find $hhctrl_ocx." exit } $hhctrl_ocx = make-unixpath -path $hhctrl_ocx # Install Inno Setup if (!(test-path -path ${env:ProgramFiles(x86)}\inno)) { $inno_setup_url = "http://files.jrsoftware.org/is/5/innosetup-5.5.9-unicode.exe" $inno_setup_installer = "innosetup-5.5.9-unicode.exe" $inno_setup_args = " /verysilent /suppressmsgboxes /nocancel /norestart /dir=""${env:ProgramFiles(x86)}\inno""" install-package -url $inno_setup_url -download_file "$download_dir\$inno_setup_installer" -install_dir ${env:ProgramFiles(x86)} -setup_cmd $inno_setup_installer -setup_args $inno_setup_args } #if MSys2 isn't already installed, install it. if (!(test-path -path $bash_path)) { Write-Host @" Updating the new installation. A bash window will open. In that window accept the proposed installation and close the window when the update completes. There will be a second update. "@ bash-command -command "pacman -Syyuu --noconfirm" } #Update the system. Write-Host @" Updating the installation.. "@ bash-command -command "pacman -Syyuu --noconfirm" # Set up aliases for the parts of msys-devtools and mingw-w64-toolchain that # we need: $devel = "asciidoc autoconf autoconf2.13 autogen automake-wrapper bison diffstat diffutils dos2unix file flex gawk gettext gettext-devel git gperf grep groff intltool libltdl libtool m4 make man-db pacman pactoys-git patch patchutils perl pkgconf python python-setuptools rsync sed texinfo texinfo-tex wget xmlto" if (!($x86_64)) { $toolchain = "binutils cmake crt-git gcc gcc-libs gdb headers-git libmangle-git libtool libwinpthread-git make tools-git winpthreads-git" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libyaml-0.2.5-2-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-appstream-glib-0.8.3-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-swig-4.4.1-1-any.pkg.tar.zst --noconfirm --needed" } else { $toolchain = "appstream-glib binutils cmake crt-git gcc gcc-libs gdb headers-git libmangle-git libtool libwinpthread-git make swig tools-git winpthreads-git" } # Install the system and toolchain: $msys_devel = make-pkgnames -prefix "msys/" -items $devel bash-command -command "pacman -S $msys_devel --noconfirm --needed" $mingw_toolchain = make-pkgnames -prefix $mingw_prefix -items $toolchain bash-command -command "pacman -S $mingw_toolchain --noconfirm --needed" # The mingw-w64-webkitgtk3 package is no longer supported by the msys2 # project so we have our own build on SourceForge. Write-Host @" Now we'll install a pre-built webkitgtk3 package we've created and placed in the GnuCash project on SourceForge. It will install several more dependencies from Mingw-w64's repository. First we need to import the signing key for it. That might hang, so if it takes more than a few seconds open task manager, find gpg-agent.exe in the Details tab, and end the task. You may have to to this twice. "@ $sourceforge_url = "https://downloads.sourceforge.net/gnucash/Dependencies/" $signing_keyfile = "jralls_public_signing_key.asc" $key_url = $sourceforge_url + $signing_keyfile $key_id = "C1F4DE993CF5835F" $webkit = "$arch_long-webkitgtk3-2.4.11-999.11-any.pkg.tar.zst" $libsoup = "$arch_long-libsoup-2.74.3-4-any.pkg.tar.zst" $webkit_url = $sourceforge_url + $webkit $webkit_sig = $webkit_url + ".sig" $libsoup_url = $sourceforge_url + $libsoup $libsoup_sig = $libsoup_url + ".sig" $download_unix = make-unixpath $download_dir bash-command -command "curl -L -s -S -o $signing_keyfile $key_url" bash-command -command "pacman-key --add $signing_keyfile" bash-command -command "pacman-key --lsign-key $key_id" bash-command -command "curl -L -s -S -O --output-dir $download_unix $webkit_url" bash-command -command "curl -L -s -S -O --output-dir $download_unix $webkit_sig" bash-command -command "curl -L -s -S -O --output-dir $download_unix $libsoup_url" bash-command -command "curl -L -s -S -O --output-dir $download_unix $libsoup_sig" $ignorefile = "" [IO.File]::WriteAllLines( "$msys2_root\etc\pacman.d\gnucash-ignores.pacman", $ignorefile) bash-command -command "perl -ibak -pe 'BEGIN{undef $/;} s#[[]options[]]\R(Include = [^\R]*\R)?#[options]\nInclude = /etc/pacman.d/gnucash-ignores.pacman\n#smg' /etc/pacman.conf" # Install the remaining dependencies. $deps = "boost libgcrypt iso-codes libsecret docbook-xsl" # Mingw-w64 has dropped 32-bit support of several packages that we need so we must install them from the archive. if (!($x86_64)) { bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-boost-libs-1.90.0-3-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-boost-1.90.0-3-any.pkg.tar.zst --noconfirm --needed" # bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-icu-76.1-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libgpg-error-1.60-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libgcrypt-1.12.2-2-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libmariadbclient-3.3.8-2-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libsecret-0.21.2-2-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-pdcurses-4.4.0-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-harfbuzz-14.2.1-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-harfbuzz-icu-11.0.1-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "sed -E -i 's/#IgnorePkg\s*=/IgnorePkg = mingw-w64-i686-harfbuzz/' /etc/pacman.conf" } else { $deps += " icu libmariadbclient libsoup pdcurses" } # Mingw-64 didn't pull gtk3 if (!($x86_64)) { bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libdatrie-0.2.14-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libthai-0.1.30-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-pango-1.57.1-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-librsvg-2.62.0-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-gtk-update-icon-cache-3.24.51-2-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-adwaita-icon-theme-legacy-46.2-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-adwaita-icon-theme-49.0-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-atk-2.60.4-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-json-glib-1.10.8-2-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-egl-headers-1.5.r284.3ae2b7c-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libepoxy-1.5.10-7-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-shared-mime-info-2.4-4-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-gtk3-3.24.51-2-any.pkg.tar.zst --noconfirm --needed" } # Mingw-64 didn't update libsoup when they reconfigure libxml2 so we need our own version on 32-bit builds. if (!($x86_64)) { bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-cantarell-fonts-0.311-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-adobe-source-code-pro-fonts-2.042u%2B1.062i%2B1.026vf-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-gsettings-desktop-schemas-50.0-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-duktape-2.7.0-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libproxy-0.5.9-1-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-glib-networking-2.80.1-3-any.pkg.tar.zst --noconfirm --needed" bash-command -command "pacman -U $download_unix/$libsoup --noconfirm --needed" } bash-command -command "pacman -U $download_unix/$webkit --noconfirm --needed" # Mingw-64 didn't update libxslt require by aqbanking if (!($x86_64)) { bash-command -command "pacman -U https://repo.msys2.org/mingw/mingw32/mingw-w64-i686-libxslt-1.1.45-1-any.pkg.tar.zst --noconfirm --needed" } $mingw_deps = make-pkgnames -prefix $mingw_prefix -items $deps bash-command -command "pacman -S $mingw_deps --noconfirm --needed" $target_unix = make-unixpath $target_dir Write-Host @" Next we'll install the HTML Help Workshop includes and libraries into our MinGW directory. "@ $htmlhelp_h = "$msys2_root/$mingw_path/include/htmlhelp.h" if (!(test-path -path $htmlhelp_h)) { if (!$installed_hh) { $installed_hh = get-item -path "hkcu:\SOFTWARE\Microsoft\HTML Help Workshop" | foreach-object{$_.GetValue("InstallDir")} } $installed_hh = make-unixpath -path $installed_hh if (!$installed_hh) { Write-Host @" ****** ERROR **** There was an error installing HTML Help Workshop. This will prevent building the documentation. If you didn't before, run setup-mingw64.ps1 in a PowerShell instance with Administrative priviledge. If you did that already, you may need to install HTML Help Workshop by hand. **************** "@ } else { bash-command -command "cp $installed_hh/include/htmlhelp.h $mingw_path/include" bash-command -command "$mingw_bin/gendef $hhctrl_ocx - > $mingw_path/lib/htmlhelp.def" bash-command -command "$mingw_bin/dlltool -k -d $mingw_path/lib/htmlhelp.def -l $mingw_path/lib/libhtmlhelp.a" } if (!(test-path -path $htmlhelp_h)) { Write-Host "HTML Help Workshop isn't correctly installed." } } Write-Host @" Clone the gnucash-on-windows repository into the target source directory, patch jhbuild to disable its DESTDIR dance and set up jhbuildrc with our prefixes. "@ if (!(test-path -path "$target_dir\\src")) { New-Item $target_dir\\src -type directory }if (!(test-path -path "$target_dir\\src\\gnucash-on-windows.git")) { bash-command -command "git clone https://github.com/gnucash/gnucash-on-windows.git $target_unix/src/gnucash-on-windows.git" } if (!(test-path -path "$target_dir\\src\\gnucash-on-windows.git")) { write-host "Failed to clone the gnucash-on-windows repo, exiting." exit } pause if (!(test-path -path "$target_dir\\src\\jhbuild.git")) { bash-command -command "git clone https://gitlab.gnome.org/GNOME/jhbuild $target_unix/src/jhbuild.git" bash-command -command "/usr/bin/patch -f -d $target_unix/src/jhbuild.git -p1 -i $target_unix/src/gnucash-on-windows.git/patches/jhbuild.patch" } if (!(test-path -path "$target_dir\\src\\jhbuild.git")) { write-host "Failed to clone the jhbuild repo, exiting." exit } if (!(test-path -path "$target_dir\\msys2\\usr\\bin\\jhbuild")) { $jhbuild = get-content "$target_dir\\src\\gnucash-on-windows.git\\jhbuild.in" | %{$_ -replace "@-BASE_DIR-@", "$target_unix"} [IO.File]::WriteAllLines("$target_dir\\msys2\\usr\\bin\\jhbuild", $jhbuild) } $jhbuildrc = get-content "$target_dir\\src\\gnucash-on-windows.git\\jhbuildrc.in" | %{$_ -replace "@-BASE_DIR-@", "$target_unix"} | %{$_ -replace "@-DOWNLOAD_DIR-@", "$download_unix"} | %{$_ -replace "@-ARCH-@", "$arch"} [IO.File]::WriteAllLines("$target_dir\\src\\gnucash-on-windows.git\\jhbuildrc", $jhbuildrc) Write-Host @" Your build environment is now ready to use. Open an MSys2/$arch shell from the start menu, cd to $target_unix, and run jhbuild -f src/gnucash-on-windows.git/jhbuildrc build Note that the build will not work with the plain MSys2 shell! "@
_______________________________________________ gnucash-user mailing list [email protected] To update your subscription preferences or to unsubscribe: https://lists.gnucash.org/mailman/listinfo/gnucash-user ----- Please remember to CC this list on all your replies. You can do this by using Reply-To-List or Reply-All.
