Skip to content

Commit 86bf5e0

Browse files
authored
Merge pull request BOINC#6201 from BOINC/dpa_docker_wrapper_mac
client, Mac: detect podman
2 parents 9d0877e + 9420a48 commit 86bf5e0

File tree

5 files changed

+448
-1
lines changed

5 files changed

+448
-1
lines changed

client/hostinfo_unix.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,6 +1238,12 @@ int HOST_INFO::get_virtualbox_version() {
12381238
//
12391239
bool HOST_INFO::get_docker_version_aux(DOCKER_TYPE type){
12401240
bool ret = false;
1241+
#ifdef __APPLE__
1242+
if (type == PODMAN) {
1243+
system("podman machine init");
1244+
system("podman machine start");
1245+
}
1246+
#endif
12411247
string cmd = string(docker_cli_prog(type)) + " --version 2>/dev/null";
12421248
FILE* f = popen(cmd.c_str(), "r");
12431249
if (f) {
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
BOINC_DIR = ../..
2+
BOINC_SOURCE_API_DIR = $(BOINC_DIR)/api
3+
BOINC_SOURCE_LIB_DIR = $(BOINC_DIR)/lib
4+
BOINC_SOURCE_ZIP_DIR = $(BOINC_DIR)/zip
5+
BOINC_BUILD_DIR = $(BOINC_DIR)/mac_build/build/Deployment
6+
BOINC_CONFIG_DIR = $(BOINC_DIR)/clientgui/mac
7+
8+
BOINC_API_DIR = $(BOINC_SOURCE_API_DIR)
9+
BOINC_LIB_DIR = $(BOINC_SOURCE_LIB_DIR)
10+
BOINC_ZIP_DIR = $(BOINC_SOURCE_ZIP_DIR)
11+
12+
## MAKEFILE_LDFLAGS = -lpthread libstdc++.a
13+
## MAKEFILE_STDLIB = libstdc++.a
14+
15+
CXXFLAGS += -g -std=gnu++17 \
16+
-Wall -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common \
17+
-I$(BOINC_CONFIG_DIR) \
18+
-I$(BOINC_DIR) \
19+
-I$(BOINC_SOURCE_API_DIR) \
20+
-I$(BOINC_SOURCE_LIB_DIR) \
21+
-I$(BOINC_SOURCE_ZIP_DIR) \
22+
-L$(BOINC_BUILD_DIR) \
23+
-L.
24+
25+
ifdef BUILD_APPS_WITH_VCPKG
26+
BUILD_DIR = $(BOINC_DIR)/3rdParty/linux
27+
VCPKG_DIR ?= $(BUILD_DIR)/vcpkg/installed/x64-linux
28+
29+
CXXFLAGS += \
30+
-I$(VCPKG_DIR)/include \
31+
-L$(VCPKG_DIR)/lib
32+
endif
33+
34+
ifdef BUILD_WITH_MINGW
35+
MAKEFILE_LDFLAGS += \
36+
-lws2_32
37+
endif
38+
39+
all: docker_wrapper
40+
41+
##libstdc++.a:
42+
## ln -s `$(CXX) $(CXXFLAGS) -print-file-name=libstdc++.a`
43+
44+
clean: distclean
45+
46+
distclean:
47+
/bin/rm -f docker_wrapper $(addsuffix .exe, docker_wrapper) *.o ## libstdc++.a
48+
49+
install: all
50+
51+
docker_wrapper: docker_wrapper.o $(MAKEFILE_STDLIB) $(BOINC_BUILD_DIR)/libboinc_api.a $(BOINC_BUILD_DIR)/libboinc.a
52+
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o docker_wrapper docker_wrapper.o \
53+
-lboinc_api -lboinc $(MAKEFILE_LDFLAGS) \
54+
$(STDCPPTC)

samples/docker_wrapper/docker_wrapper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,7 @@ int main(int argc, char** argv) {
682682
boinc_finish(1);
683683
}
684684
#else
685-
docker_type = boinc_is_standalone()?DOCKER:aid.host_info.docker_type;
685+
docker_type = boinc_is_standalone()?PODMAN:aid.host_info.docker_type;
686686
docker_conn.init(docker_type, config.verbose>0);
687687
#endif
688688
fprintf(stderr, "Using %s\n", docker_type_str(docker_type));
Lines changed: 309 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,309 @@
1+
// !$*UTF8*$!
2+
{
3+
archiveVersion = 1;
4+
classes = {
5+
};
6+
objectVersion = 77;
7+
objects = {
8+
9+
/* Begin PBXBuildFile section */
10+
81483B9B2D94EBC600592A5B /* docker_wrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81483B9A2D94EBC600592A5B /* docker_wrapper.cpp */; };
11+
/* End PBXBuildFile section */
12+
13+
/* Begin PBXCopyFilesBuildPhase section */
14+
81483B8E2D94E90E00592A5B /* CopyFiles */ = {
15+
isa = PBXCopyFilesBuildPhase;
16+
buildActionMask = 2147483647;
17+
dstPath = /usr/share/man/man1/;
18+
dstSubfolderSpec = 0;
19+
files = (
20+
);
21+
runOnlyForDeploymentPostprocessing = 1;
22+
};
23+
/* End PBXCopyFilesBuildPhase section */
24+
25+
/* Begin PBXFileReference section */
26+
81483B902D94E90E00592A5B /* docker_wrapper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = docker_wrapper; sourceTree = BUILT_PRODUCTS_DIR; };
27+
81483B9A2D94EBC600592A5B /* docker_wrapper.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = docker_wrapper.cpp; sourceTree = "<group>"; };
28+
81483B9C2D94EBDE00592A5B /* toml.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = toml.h; sourceTree = "<group>"; };
29+
/* End PBXFileReference section */
30+
31+
/* Begin PBXFrameworksBuildPhase section */
32+
81483B8D2D94E90E00592A5B /* Frameworks */ = {
33+
isa = PBXFrameworksBuildPhase;
34+
buildActionMask = 2147483647;
35+
files = (
36+
);
37+
runOnlyForDeploymentPostprocessing = 0;
38+
};
39+
/* End PBXFrameworksBuildPhase section */
40+
41+
/* Begin PBXGroup section */
42+
81483B872D94E90E00592A5B = {
43+
isa = PBXGroup;
44+
children = (
45+
81483B9A2D94EBC600592A5B /* docker_wrapper.cpp */,
46+
81483B9C2D94EBDE00592A5B /* toml.h */,
47+
81483B912D94E90E00592A5B /* Products */,
48+
);
49+
sourceTree = "<group>";
50+
};
51+
81483B912D94E90E00592A5B /* Products */ = {
52+
isa = PBXGroup;
53+
children = (
54+
81483B902D94E90E00592A5B /* docker_wrapper */,
55+
);
56+
name = Products;
57+
sourceTree = "<group>";
58+
};
59+
/* End PBXGroup section */
60+
61+
/* Begin PBXNativeTarget section */
62+
81483B8F2D94E90E00592A5B /* docker_wrapper */ = {
63+
isa = PBXNativeTarget;
64+
buildConfigurationList = 81483B972D94E90E00592A5B /* Build configuration list for PBXNativeTarget "docker_wrapper" */;
65+
buildPhases = (
66+
81483B8C2D94E90E00592A5B /* Sources */,
67+
81483B8D2D94E90E00592A5B /* Frameworks */,
68+
81483B8E2D94E90E00592A5B /* CopyFiles */,
69+
);
70+
buildRules = (
71+
);
72+
dependencies = (
73+
);
74+
name = docker_wrapper;
75+
packageProductDependencies = (
76+
);
77+
productName = docker_wrapper;
78+
productReference = 81483B902D94E90E00592A5B /* docker_wrapper */;
79+
productType = "com.apple.product-type.tool";
80+
};
81+
/* End PBXNativeTarget section */
82+
83+
/* Begin PBXProject section */
84+
81483B882D94E90E00592A5B /* Project object */ = {
85+
isa = PBXProject;
86+
attributes = {
87+
BuildIndependentTargetsInParallel = 1;
88+
LastUpgradeCheck = 1620;
89+
TargetAttributes = {
90+
81483B8F2D94E90E00592A5B = {
91+
CreatedOnToolsVersion = 16.2;
92+
};
93+
};
94+
};
95+
buildConfigurationList = 81483B8B2D94E90E00592A5B /* Build configuration list for PBXProject "docker_wrapper" */;
96+
developmentRegion = en;
97+
hasScannedForEncodings = 0;
98+
knownRegions = (
99+
en,
100+
Base,
101+
);
102+
mainGroup = 81483B872D94E90E00592A5B;
103+
minimizedProjectReferenceProxies = 1;
104+
preferredProjectObjectVersion = 77;
105+
productRefGroup = 81483B912D94E90E00592A5B /* Products */;
106+
projectDirPath = "";
107+
projectRoot = "";
108+
targets = (
109+
81483B8F2D94E90E00592A5B /* docker_wrapper */,
110+
);
111+
};
112+
/* End PBXProject section */
113+
114+
/* Begin PBXSourcesBuildPhase section */
115+
81483B8C2D94E90E00592A5B /* Sources */ = {
116+
isa = PBXSourcesBuildPhase;
117+
buildActionMask = 2147483647;
118+
files = (
119+
81483B9B2D94EBC600592A5B /* docker_wrapper.cpp in Sources */,
120+
);
121+
runOnlyForDeploymentPostprocessing = 0;
122+
};
123+
/* End PBXSourcesBuildPhase section */
124+
125+
/* Begin XCBuildConfiguration section */
126+
81483B952D94E90E00592A5B /* Debug */ = {
127+
isa = XCBuildConfiguration;
128+
buildSettings = {
129+
ALWAYS_SEARCH_USER_PATHS = NO;
130+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
131+
CLANG_ANALYZER_NONNULL = YES;
132+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
133+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
134+
CLANG_ENABLE_MODULES = YES;
135+
CLANG_ENABLE_OBJC_ARC = YES;
136+
CLANG_ENABLE_OBJC_WEAK = YES;
137+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
138+
CLANG_WARN_BOOL_CONVERSION = YES;
139+
CLANG_WARN_COMMA = YES;
140+
CLANG_WARN_CONSTANT_CONVERSION = YES;
141+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
142+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
143+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
144+
CLANG_WARN_EMPTY_BODY = YES;
145+
CLANG_WARN_ENUM_CONVERSION = YES;
146+
CLANG_WARN_INFINITE_RECURSION = YES;
147+
CLANG_WARN_INT_CONVERSION = YES;
148+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
149+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
150+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
151+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
152+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
153+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
154+
CLANG_WARN_STRICT_PROTOTYPES = YES;
155+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
156+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
157+
CLANG_WARN_UNREACHABLE_CODE = YES;
158+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
159+
COPY_PHASE_STRIP = NO;
160+
DEBUG_INFORMATION_FORMAT = dwarf;
161+
ENABLE_STRICT_OBJC_MSGSEND = YES;
162+
ENABLE_TESTABILITY = YES;
163+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
164+
GCC_C_LANGUAGE_STANDARD = gnu17;
165+
GCC_DYNAMIC_NO_PIC = NO;
166+
GCC_NO_COMMON_BLOCKS = YES;
167+
GCC_OPTIMIZATION_LEVEL = 0;
168+
GCC_PREPROCESSOR_DEFINITIONS = (
169+
"DEBUG=1",
170+
"$(inherited)",
171+
);
172+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
173+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
174+
GCC_WARN_UNDECLARED_SELECTOR = YES;
175+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
176+
GCC_WARN_UNUSED_FUNCTION = YES;
177+
GCC_WARN_UNUSED_VARIABLE = YES;
178+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
179+
MACOSX_DEPLOYMENT_TARGET = 15.2;
180+
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
181+
MTL_FAST_MATH = YES;
182+
ONLY_ACTIVE_ARCH = YES;
183+
SDKROOT = macosx;
184+
};
185+
name = Debug;
186+
};
187+
81483B962D94E90E00592A5B /* Release */ = {
188+
isa = XCBuildConfiguration;
189+
buildSettings = {
190+
ALWAYS_SEARCH_USER_PATHS = NO;
191+
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
192+
CLANG_ANALYZER_NONNULL = YES;
193+
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
194+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
195+
CLANG_ENABLE_MODULES = YES;
196+
CLANG_ENABLE_OBJC_ARC = YES;
197+
CLANG_ENABLE_OBJC_WEAK = YES;
198+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
199+
CLANG_WARN_BOOL_CONVERSION = YES;
200+
CLANG_WARN_COMMA = YES;
201+
CLANG_WARN_CONSTANT_CONVERSION = YES;
202+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
203+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
204+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
205+
CLANG_WARN_EMPTY_BODY = YES;
206+
CLANG_WARN_ENUM_CONVERSION = YES;
207+
CLANG_WARN_INFINITE_RECURSION = YES;
208+
CLANG_WARN_INT_CONVERSION = YES;
209+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
210+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
211+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
212+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
213+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
214+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
215+
CLANG_WARN_STRICT_PROTOTYPES = YES;
216+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
217+
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
218+
CLANG_WARN_UNREACHABLE_CODE = YES;
219+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
220+
COPY_PHASE_STRIP = NO;
221+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
222+
ENABLE_NS_ASSERTIONS = NO;
223+
ENABLE_STRICT_OBJC_MSGSEND = YES;
224+
ENABLE_USER_SCRIPT_SANDBOXING = YES;
225+
GCC_C_LANGUAGE_STANDARD = gnu17;
226+
GCC_NO_COMMON_BLOCKS = YES;
227+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
228+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
229+
GCC_WARN_UNDECLARED_SELECTOR = YES;
230+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
231+
GCC_WARN_UNUSED_FUNCTION = YES;
232+
GCC_WARN_UNUSED_VARIABLE = YES;
233+
LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
234+
MACOSX_DEPLOYMENT_TARGET = 15.2;
235+
MTL_ENABLE_DEBUG_INFO = NO;
236+
MTL_FAST_MATH = YES;
237+
SDKROOT = macosx;
238+
};
239+
name = Release;
240+
};
241+
81483B982D94E90E00592A5B /* Debug */ = {
242+
isa = XCBuildConfiguration;
243+
buildSettings = {
244+
ALWAYS_SEARCH_USER_PATHS = YES;
245+
CODE_SIGN_STYLE = Automatic;
246+
DEVELOPMENT_TEAM = T9VJ7T6N68;
247+
ENABLE_HARDENED_RUNTIME = YES;
248+
HEADER_SEARCH_PATHS = (
249+
../../,
250+
../../lib,
251+
../../api,
252+
../../clientgui/mac,
253+
);
254+
LIBRARY_SEARCH_PATHS = ../../mac_build/build/Deployment;
255+
OTHER_LDFLAGS = (
256+
"-lboinc_api",
257+
"-lboinc",
258+
);
259+
PRODUCT_NAME = "$(TARGET_NAME)";
260+
};
261+
name = Debug;
262+
};
263+
81483B992D94E90E00592A5B /* Release */ = {
264+
isa = XCBuildConfiguration;
265+
buildSettings = {
266+
ALWAYS_SEARCH_USER_PATHS = YES;
267+
CODE_SIGN_STYLE = Automatic;
268+
DEVELOPMENT_TEAM = T9VJ7T6N68;
269+
ENABLE_HARDENED_RUNTIME = YES;
270+
HEADER_SEARCH_PATHS = (
271+
../../,
272+
../../lib,
273+
../../api,
274+
../../clientgui/mac,
275+
);
276+
LIBRARY_SEARCH_PATHS = ../../mac_build/build/Deployment;
277+
OTHER_LDFLAGS = (
278+
"-lboinc_api",
279+
"-lboinc",
280+
);
281+
PRODUCT_NAME = "$(TARGET_NAME)";
282+
};
283+
name = Release;
284+
};
285+
/* End XCBuildConfiguration section */
286+
287+
/* Begin XCConfigurationList section */
288+
81483B8B2D94E90E00592A5B /* Build configuration list for PBXProject "docker_wrapper" */ = {
289+
isa = XCConfigurationList;
290+
buildConfigurations = (
291+
81483B952D94E90E00592A5B /* Debug */,
292+
81483B962D94E90E00592A5B /* Release */,
293+
);
294+
defaultConfigurationIsVisible = 0;
295+
defaultConfigurationName = Release;
296+
};
297+
81483B972D94E90E00592A5B /* Build configuration list for PBXNativeTarget "docker_wrapper" */ = {
298+
isa = XCConfigurationList;
299+
buildConfigurations = (
300+
81483B982D94E90E00592A5B /* Debug */,
301+
81483B992D94E90E00592A5B /* Release */,
302+
);
303+
defaultConfigurationIsVisible = 0;
304+
defaultConfigurationName = Release;
305+
};
306+
/* End XCConfigurationList section */
307+
};
308+
rootObject = 81483B882D94E90E00592A5B /* Project object */;
309+
}

0 commit comments

Comments
 (0)