Makefile: improve nuget restore & clean
In some cases, nuget restore isn't sufficient to restore everything, especially if project.assets.json files are missing or were removed. So we add a call to MSBuild -t:restore to build it. Both nuget & msbuild are required because msbuild can only restore packages in 'packages.config' from version 16.5
This commit is contained in:
20
.github/workflows/build.yml
vendored
20
.github/workflows/build.yml
vendored
@@ -64,8 +64,8 @@ jobs:
|
||||
sed -i '' '/TargetFrameworkVersion/ s|v9.0|v11.0|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
sed -i '' 's|<ReleaseVersion>1.0</ReleaseVersion>|<ReleaseVersion>1.0</ReleaseVersion><AndroidClassParser>class-parse</AndroidClassParser>|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
|
||||
- name: Install NuGet dependencies
|
||||
run: make nuget
|
||||
- name: Install NuGet dependencies (net)
|
||||
run: make nuget Flavor=Net
|
||||
|
||||
- name: Build keepass2android (net)
|
||||
run: |
|
||||
@@ -82,6 +82,9 @@ jobs:
|
||||
path: |
|
||||
src/keepass2android/bin/*/*-Signed.apk
|
||||
|
||||
- name: Install NuGet dependencies (nonet)
|
||||
run: make nuget Flavor=NoNet
|
||||
|
||||
- name: Build keepass2android (nonet)
|
||||
run: |
|
||||
make msbuild Flavor=NoNet
|
||||
@@ -174,8 +177,8 @@ jobs:
|
||||
sed -i '/TargetFrameworkVersion/ s|v9.0|v11.0|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
sed -i 's|<ReleaseVersion>1.0</ReleaseVersion>|<ReleaseVersion>1.0</ReleaseVersion><AndroidClassParser>class-parse</AndroidClassParser>|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
|
||||
- name: Install NuGet dependencies
|
||||
run: make nuget
|
||||
- name: Install NuGet dependencies (net)
|
||||
run: make nuget Flavor=Net
|
||||
|
||||
- name: Build keepass2android (net)
|
||||
run: |
|
||||
@@ -192,6 +195,9 @@ jobs:
|
||||
path: |
|
||||
src/keepass2android/bin/*/*-Signed.apk
|
||||
|
||||
- name: Install NuGet dependencies (nonet)
|
||||
run: make nuget Flavor=NoNet
|
||||
|
||||
- name: Build keepass2android (nonet)
|
||||
run: |
|
||||
make msbuild Flavor=NoNet
|
||||
@@ -264,6 +270,9 @@ jobs:
|
||||
sed -i '/TargetFrameworkVersion/ s|v9.0|v11.0|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
sed -i 's|<ReleaseVersion>1.0</ReleaseVersion>|<ReleaseVersion>1.0</ReleaseVersion><AndroidClassParser>class-parse</AndroidClassParser>|' src/SamsungPass/Xamarin.SamsungPass/SamsungPass/SamsungPass.csproj
|
||||
|
||||
- name: Install NuGet dependencies (net)
|
||||
run: make nuget Flavor=Net
|
||||
|
||||
- name: Build keepass2android (net)
|
||||
run: |
|
||||
make msbuild Flavor=Net
|
||||
@@ -279,6 +288,9 @@ jobs:
|
||||
path: |
|
||||
src/keepass2android/bin/*/*-Signed.apk
|
||||
|
||||
- name: Install NuGet dependencies (nonet)
|
||||
run: make nuget Flavor=NoNet
|
||||
|
||||
- name: Build keepass2android (nonet)
|
||||
run: |
|
||||
make msbuild Flavor=NoNet
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@@ -7,7 +7,9 @@ PCtest
|
||||
bin
|
||||
obj
|
||||
|
||||
allow_git_clean
|
||||
# Makefile-related files
|
||||
/allow_git_clean
|
||||
/stamp.nuget_*
|
||||
|
||||
Resource.designer.cs
|
||||
R.java
|
||||
|
32
Makefile
32
Makefile
@@ -25,7 +25,8 @@
|
||||
# - clean: all clean_* targets below
|
||||
# - clean_native: clean native lib
|
||||
# - clean_java: call clean target of java libs
|
||||
# - msbuild_clean: call clean target of java libs
|
||||
# - clean_nuget: cleanup the 'nuget restore'
|
||||
# - clean_msbuild: call clean target of msbuild
|
||||
#
|
||||
#
|
||||
#
|
||||
@@ -34,6 +35,7 @@ ifeq ($(OS),Windows_NT) # is Windows_NT on XP, 2000, 7, Vista, 10...
|
||||
detected_OS := Windows
|
||||
WHICH := where
|
||||
RM := RMDIR /S /Q
|
||||
RMFILE := DEL
|
||||
CP := copy
|
||||
GRADLEW := gradlew.bat
|
||||
# Force use of cmd shell (don't use POSIX shell because the user may not have one installed)
|
||||
@@ -42,6 +44,7 @@ else
|
||||
detected_OS := $(shell uname)
|
||||
WHICH := which
|
||||
RM := rm -rf
|
||||
RMFILE := $(RM)
|
||||
CP := cp
|
||||
GRADLEW := ./gradlew
|
||||
endif
|
||||
@@ -118,11 +121,11 @@ else
|
||||
endif
|
||||
|
||||
ifeq ($(detected_OS),Windows)
|
||||
define remove
|
||||
define remove_dir
|
||||
if exist $(1) ( $(RM) $(1) )
|
||||
endef
|
||||
else
|
||||
define remove
|
||||
define remove_dir
|
||||
$(RM) $(1)
|
||||
endef
|
||||
endif
|
||||
@@ -158,11 +161,12 @@ OUTPUT_Keepass2AndroidPluginSDK2 = src/java/Keepass2AndroidPluginSDK2/app/build/
|
||||
OUTPUT_KP2AKdbLibrary = src/java/KP2AKdbLibrary/app/build/outputs/aar/app-debug.aar
|
||||
OUTPUT_PluginQR = src/java/Keepass2AndroidPluginSDK2/app/build/outputs/aar/Keepass2AndroidPluginSDK2-release.aar src/java/PluginQR/app/build/outputs/apk/debug/app-debug.apk
|
||||
|
||||
|
||||
##### Targets definition
|
||||
|
||||
.PHONY: native $(NATIVE_COMPONENTS) clean_native $(NATIVE_CLEAN_TARGETS) \
|
||||
java $(JAVA_COMPONENTS) clean_java $(JAVA_CLEAN_TARGETS) \
|
||||
nuget \
|
||||
nuget clean_nuget \
|
||||
msbuild clean_msbuild \
|
||||
apk all clean
|
||||
|
||||
@@ -200,11 +204,15 @@ $(OUTPUT_PluginQR):
|
||||
|
||||
##### Nuget Dependencies
|
||||
|
||||
nuget:
|
||||
nuget: stamp.nuget_$(Flavor)
|
||||
stamp.nuget_$(Flavor): src/KeePass.sln $(wildcard src/*/*.csproj) $(wildcard src/*/packages.config) src/.nuget/packages.config
|
||||
ifeq ($(shell $(WHICH) nuget),)
|
||||
$(error "nuget" command not found. Check it is in your PATH)
|
||||
endif
|
||||
$(RMFILE) stamp.nuget_*
|
||||
nuget restore src/KeePass.sln
|
||||
$(MSBUILD) src/KeePass.sln -t:restore $(MSBUILD_PARAM) -p:RestorePackagesConfig=true
|
||||
@echo "" > stamp.nuget_$(Flavor)
|
||||
|
||||
#####
|
||||
src/Kp2aBusinessLogic/Io/DropboxFileStorageKeys.cs:
|
||||
@@ -240,10 +248,22 @@ clean_KP2AKdbLibrary:
|
||||
clean_PluginQR:
|
||||
cd src/java/PluginQR && $(GRADLEW) clean
|
||||
|
||||
# https://learn.microsoft.com/en-us/nuget/consume-packages/package-restore-troubleshooting#other-potential-conditions
|
||||
clean_nuget:
|
||||
cd src && $(call remove_dir,packages)
|
||||
ifeq ($(detected_OS),Windows)
|
||||
DEL /S src\project.assets.json
|
||||
DEL /S src\*.nuget.*
|
||||
else
|
||||
$(RM) src/*/obj/project.assets.json
|
||||
$(RM) src/*/obj/*.nuget.*
|
||||
endif
|
||||
$(RMFILE) stamp.nuget_*
|
||||
|
||||
clean_msbuild:
|
||||
$(MSBUILD) src/KeePass.sln -target:clean $(MSBUILD_PARAM)
|
||||
|
||||
clean: clean_native clean_java clean_msbuild
|
||||
clean: clean_native clean_java clean_nuget clean_msbuild
|
||||
|
||||
distclean: clean
|
||||
ifneq ("$(wildcard ./allow_git_clean)","")
|
||||
|
Reference in New Issue
Block a user