diff --git a/Makefile b/Makefile index c618dce..b52ab11 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ HASH_DIR ?= $(CURDIR)/hashes DOWNLOAD_DIR := $(CURDIR)/downloads OS_DOWNLOAD_DIR := $(DOWNLOAD_DIR)/os LIMA_DOWNLOAD_DIR := $(DOWNLOAD_DIR)/dependencies +LIMA_OUTDIR ?= $(OUTDIR)/lima ROOTFS_DOWNLOAD_DIR := $(DOWNLOAD_DIR)/os DEPENDENCIES_DOWNLOAD_DIR := $(DOWNLOAD_DIR)/dependencies SOCKET_VMNET_TEMP_PREFIX ?= $(OUTDIR)/dependencies/lima-socket_vmnet/opt/finch @@ -86,7 +87,7 @@ BUILD_OS ?= $(OS) ifeq ($(BUILD_OS), Windows_NT) binaries: rootfs lima download: download.rootfs -lima: lima-exe +lima: lima-exe install.lima-dependencies-wsl2 FINCH_IMAGE_LOCATION := $(FINCH_ROOTFS_LOCATION) FINCH_IMAGE_DIGEST := $(FINCH_ROOTFS_DIGEST) else @@ -129,66 +130,68 @@ download.lima-dependencies: $(LIMA_DOWNLOAD_DIR)/$(LIMA_DEPENDENCY_FILE_NAME) .PHONY: install.lima-dependencies install.lima-dependencies: download.lima-dependencies -.PHONY: install.lima-dependencies-wsl2 -install.lima-dependencies-wsl2: +# Only redownload/extract if this file is missing (there's no particular reason for choosing this file instead of any other) +$(LIMA_OUTDIR)/bin/ssh.exe: mkdir -p $(DEPENDENCIES_DOWNLOAD_DIR) mkdir -p $(OUTDIR)/bin curl -L --fail $(WINGIT_x86_URL) > $(DEPENDENCIES_DOWNLOAD_DIR)/$(WINGIT_x86_BASENAME) pwsh.exe -NoLogo -NoProfile -c ./verify_hash.ps1 "$(DEPENDENCIES_DOWNLOAD_DIR)\$(WINGIT_x86_BASENAME)" $(WINGIT_x86_HASH) - # this takes a long time - tar -xvzf "$(DEPENDENCIES_DOWNLOAD_DIR)\$(WINGIT_x86_BASENAME)" -C $(WINGIT_TEMP_DIR) + mkdir -p $(WINGIT_TEMP_DIR) + # this takes a long time because of an almost 4:1 compression ratio and needing to extract many small files + tar -xvjf "$(DEPENDENCIES_DOWNLOAD_DIR)\$(WINGIT_x86_BASENAME)" -C $(WINGIT_TEMP_DIR) # Lima runtime dependencies + mkdir -p $(LIMA_OUTDIR)/bin # From https://packages.msys2.org/package/gzip?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/gzip.exe $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/gzip.exe $(LIMA_OUTDIR)/bin/ # From https://packages.msys2.org/package/msys2-runtime?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/cygpath.exe $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/cygpath.exe $(LIMA_OUTDIR)/bin/ # From https://packages.msys2.org/package/tar?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/tar.exe $(OUTDIR)/bin/ - # From https://packages.msys2.org/package/openssh?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/ssh.exe $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/tar.exe $(LIMA_OUTDIR)/bin/ # From https://packages.msys2.org/package/openssh?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/ssh-keygen.exe $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/ssh.exe $(LIMA_OUTDIR)/bin/ + # Dependency DLLs, extracted with https://github.com/lucasg/Dependencies # Dependencies.exe -chain $(WINGIT_TEMP_DIR)\usr\bin\ssh.exe -depth 3 -json # Depth 3 is only needed for ssh.exe, everything else only needs depth 1 # TODO: Automate # Required by all MSYS2 programs, from https://github.com/msys2/msys2-runtime - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-2.0.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-2.0.dll $(LIMA_OUTDIR)/bin/ # Required by tar.exe, from https://packages.msys2.org/package/libiconv?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-iconv-2.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-iconv-2.dll $(LIMA_OUTDIR)/bin/ # Required by msys-iconv-2.dll, from https://packages.msys2.org/package/libintl?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-intl-8.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-intl-8.dll $(LIMA_OUTDIR)/bin/ # GCC exception handling, required for all programs that throw exceptions, from https://packages.msys2.org/package/gcc-libs?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-gcc_s-seh-1.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-gcc_s-seh-1.dll $(LIMA_OUTDIR)/bin/ # Required by ssh.exe, from https://packages.msys2.org/package/libopenssl?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-crypto-3.dll $(OUTDIR)/bin/ - # Required by ssh-keygen.exe, from https://packages.msys2.org/package/libopenssl?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-crypto-1.1.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-crypto-3.dll $(LIMA_OUTDIR)/bin/ # Required by ssh.exe, from https://packages.msys2.org/package/zlib-devel?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-z.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-z.dll $(LIMA_OUTDIR)/bin/ # Required by ssh.exe, from https://packages.msys2.org/package/libcrypt?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-crypt-0.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-crypt-0.dll $(LIMA_OUTDIR)/bin/ # Required by heimdal-libs, from https://packages.msys2.org/package/libsqlite?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-sqlite3-0.dll $(OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-sqlite3-0.dll $(LIMA_OUTDIR)/bin/ # Required by ssh.exe, from https://packages.msys2.org/package/heimdal-libs?repo=msys&variant=x86_64 - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-asn1-8.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-com_err-1.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-gssapi-3.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-hcrypto-4.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-heimbase-1.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-heimntlm-0.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-hx509-5.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-krb5-26.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-roken-18.dll $(OUTDIR)/bin/ - cp $(WINGIT_TEMP_DIR)/usr/bin/msys-wind-0.dll $(OUTDIR)/bin/ - - rm $(WINGIT_TEMP_DIR) + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-asn1-8.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-com_err-1.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-gssapi-3.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-hcrypto-4.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-heimbase-1.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-heimntlm-0.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-hx509-5.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-krb5-26.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-roken-18.dll $(LIMA_OUTDIR)/bin/ + cp $(WINGIT_TEMP_DIR)/usr/bin/msys-wind-0.dll $(LIMA_OUTDIR)/bin/ + + -@rm -rf $(WINGIT_TEMP_DIR) + +.PHONY: install.lima-dependencies-wsl2 +install.lima-dependencies-wsl2: $(LIMA_OUTDIR)/bin/ssh.exe .PHONY: lima-template lima-template: download