Broken Remote Build iOS Trigger v2.7.1


#1

Hello!

After following the migration for 2.6.X to 2.7.X I am unable to complete a build for iOS.

Here is the failing build output:

https://pastebin.com/XfJTtd25
https://pastebin.com/KC4ZnvM1

Here is the config.json.

{
	"author": "tech@rinse.com",
	"config_version": "5",
	"core": {
		"android": {
			"adjust_content_insets": "always",
			"minimum_version": "14",
			"package_name": "com.rinse.team",
			"remote_debugging": true
		},
		"crosswalk": {
			"disable_pull_to_refresh_effect": true
		},
		"general": {
			"logging": {
				"level": "DEBUG"
			},
			"reload": true,
			"trusted_urls": [
				"www.rinse.com",
				"http://localhost/*"
			]
		},
		"ios": {
			"device_family": "any",
			"minimum_version": "9.3",
			"package_name": "com.rinse.team",
			"webview": "WKWebView",
			"adjust_content_insets": "never"
		}
	},
	"description": "A tool for Rinse Valets and Associates to manage Dry Cleaning and Laundry delivery.",
	"homepage": "www.rinse.com",
	"modules": {
		"addressbook": {
			"version": "2.2.1"
		},
		"androidviewport": {
			"version": "1.0.0"
		},
		"barcode": {
			"version": "2.5"
		},
		"camera": {
			"version": "2.3"
		},
		"capture": {
			"version": "2.0",
			"config": {
				"usage_description": "The Rinse Valet app needs to access your camera so you can provide photos to Rinse."
			}
		},
		"contact": {
			"config": {
				"usage_description": "The Rinse Valet app needs to access your contact list so you can communicate with customers."
			},
			"version": "2.12"
		},
		"display": {
			"config": {
				"orientations": {
					"android": "portrait",
					"ipad": "portrait",
					"iphone": "portrait"
				},
				"statusbar": {
					"android": {},
					"ios": {}
				}
			},
			"version": "2.11"
		},
		"file": {
			"config": {
				"usage_description": "The Rinse Valet App requires you to take photos of customers' clothes during delivery and pickup."
			},
			"version": "2.23"
		},
		"flurry": {
			"config": {
				"android_api_key": "32NGV7KCWYP2FVGNGX2R",
				"ios_api_key": "32NGV7KCWYP2FVGNGX2R"
			},
			"version": "2.7"
		},
		"geolocation": {
			"config": {
				"usage_description": "Used for mapping"
			},
			"version": "2.8"
		},
		"httpd": {
			"config": {},
			"version": "0.9"
		},
		"icons": {
			"config": {
				"android": {
					"48": "img/android-icon-48x48.png",
					"72": "img/android-icon-72x72.png",
					"96": "img/android-icon-96x96.png",
					"144": "img/android-icon-144x144.png",
					"192": "img/android-icon-192x192.png"
				},
				"ios": {
					"57": "img/apple-icon-57x57.png",
					"72": "img/apple-icon-72x72.png",
					"76": "img/apple-icon-76x76.png",
					"114": "img/apple-icon-114x114.png",
					"120": "img/apple-icon-120x120.png",
					"144": "img/apple-icon-144x144.png",
					"152": "img/apple-icon-152x152.png",
					"167": "img/apple-icon-180x180.png",
					"180": "img/apple-icon-180x180.png",
					"1024": "img/vendor-app-icon-1024x1024.png",
					"prerendered": true
				}
			},
			"version": "2.9"
		},
		"launchimage": {
			"config": {
				"android": {
					"background-color": "#000000",
					"background-size": "cover",
					"landscape": "splash/new_splash_1920x1080.png",
					"portrait": "splash/new_splash_1080x1920.png"
				},
				"ios": {
					"wC_hC": "splash/new_splash_1334x750.png",
					"wC_hR": "splash/new_splash_1080x1920.png",
					"wR_hC": "splash/new_splash_1920x1080.png",
					"wR_hR": "splash/new_splash_2732x2048.png"
				}
			},
			"version": "2.13"
		},
		"media": {
			"config": {},
			"version": "2.6"
		},
		"notification": {
			"version": "2.8"
		},
		"permissions": {
			"version": "2.0"
		},
		"platform": {
			"version": "2.3"
		},
		"prefs": {
			"version": "2.2"
		},
		"request": {
			"config": {
				"ats": [
					{
						"domain": "httpbin.org",
						"NSThirdPartyExceptionAllowsInsecureHTTPLoads": true,
						"NSThirdPartyExceptionRequiresForwardSecrecy": true,
						"NSThirdPartyExceptionMinimumTLSVersion": "TLSv1.0"
					}
				]
			},
			"version": "2.10.1"
		},
		"rinsecaptuvo": {
			"version": "0.6.3"
		},
		"sms": {
			"version": "2.3"
		},
		"tabbar": {
			"version": "2.7"
		},
		"topbar": {
			"config": {},
			"version": "2.15"
		},
		"urlhandler": {
			"config": {
				"scheme": "rinsevalet"
			},
			"version": "2.1"
		}
	},
	"name": "Team Rinse",
	"platform_version": "v2.7.1",
	"version": "6.0.0"
}

Is this something on my end, or yours? What can I do to help in solving this problem?


#2

Hi Daniel,

We added SSL support to the httpd module for this release which is now creating a conflict with your rinsecaptuvo module:

duplicate symbol _ECDSA_sign in:
/var/folders/cv/bb_0fr3d10x8f5g9bkh0yncw0000b4/T/tmpMS68wd/ios/app/httpd.a(ecdsa_sign.o)
/var/folders/cv/bb_0fr3d10x8f5g9bkh0yncw0000b4/T/tmpMS68wd/ios/app/rinsecaptuvo.a(primeec.o)
ld: 1 duplicate symbol for architecture x86_64

Because iOS does not support dynamic linking we’re ending up with a conflict because we’ve both linked our modules against the OpenSSL libraries.

We’ve unfortunately never found a clean solution for this situation so the options aren’t great:

  1. We can break the OpenSSL library into its own module. I’d like to avoid doing that if possible as httpd is going to be a default module in future and it would be nice not to clutter app configurations with non-intuitive dependencies.
  2. We could just ask you to remove OpenSSL from your module! :wink: I’d like to avoid that though because it’s going to complicate your module build process somewhat.
  3. We can provide a ‘system’ OpenSSL library within the Forge runtime which means that modules no longer have to include their own versions.

Given that the httpd module is probably going to move into ForgeCore itself in the near future I think we should opt with option number 3 here.

I’m busy pushing up new builds for the Forge platform and the httpd modules that will do this - will give you a shout as soon as they’re ready.


#3

My apologies - the forum went belly up at some point during the last week or so and I never saw this!


#4

Okay, can you please try:

  1. Change the platform version for your rinsecaptuvo module to v2.7.3beta-2
  2. Remove any OpenSSL library or framework binaries from your module.
  3. Rebuild your module and upload it.
  4. Try recompiling your app against platform v2.7.3beta-2 and the new version of your module.

Please let me know how it goes!