{ "id": "140126", "key": "TIMOB-18065", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "16704", "description": "Release 3.5.0", "name": "Release 3.5.0", "archived": false, "released": true, "releaseDate": "2015-01-13" }, { "id": "16593", "description": "Release 4.0.0", "name": "Release 4.0.0", "archived": false, "released": true, "releaseDate": "2015-05-21" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2014-11-21T23:33:16.000+0000", "created": "2014-11-21T00:02:00.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "43145", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "140180", "key": "TIMOB-18071", "fields": { "summary": "CLI: Fail build if compiled architectures do not match module manifest", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2015-01-20T21:23:56.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" }, { "id": "10230", "name": "BlackBerry", "description": "BlackBerry Platform" }, { "id": "13103", "name": "CLI", "description": "Node-based command line interface" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "With the addition of 64-bit support, it becomes helpful to know the architectures available in a compiled module. We can then use this ins tooling to make sure modules are compiled correctly for use.\r\n\r\nWe update the module template manifest file with the following values (*notice they are space delimited*):\r\n\r\nAndroid:\r\narchitectures: armeabi armeabi-v7a x86\r\n\r\nBlackBerry:\r\narchitectures: arm x86\r\n\r\niOS:\r\narchitectures: armv7 i386 x86_64 arm64\r\n\r\nAn example:\r\n\r\n{code:title=manifest}\r\n#\r\n# this is your module manifest and used by Titanium\r\n# during compilation, packaging, distribution, etc.\r\n#\r\nversion: 1.1.0\r\napiversion: 2\r\narchitectures: armv7 i386 x86_64 arm64\r\ndescription: Awesome App Functionality\r\nauthor: Appcelerator\r\nlicense: Apache v2\r\ncopyright: Copyright (c) 2013 by Appcelerator\r\n\r\n# these should not be edited\r\n...\r\n{code}\r\n", "attachment": [], "flagged": false, "summary": "Add compiled architectures to module manifest template", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "333192", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "I could use this perfectly for gitt.io as well, showing what modules are 64bit e.g.\r\n\r\nThe manifest is the best place to have it, as long as we can be sure any module made compatible for 64-bit will always have this in it, so it should not require any manual action by the module developer.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2014-11-21T07:53:48.000+0000", "updated": "2014-11-21T07:53:48.000+0000" }, { "id": "333205", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I think the question is how/if we can auto-update these values. We can place them in the manifest by default, but should we re-update them on module rebuild?", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-21T14:50:49.000+0000", "updated": "2014-11-21T14:50:49.000+0000" }, { "id": "333206", "author": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "body": "If a developer changes something in their default xcode projects, something that changes the architectures, it be nice if the manifest in the .zip would reflect the true architectures. How hard is this to implement, @ingo?\r\n\r\nSo, yes, the primary manifest needs to be updated. :(", "updateAuthor": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "created": "2014-11-21T14:53:51.000+0000", "updated": "2014-11-21T15:03:57.000+0000" }, { "id": "333210", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The consensus is that we should auto-update the manifest on each build. Thus, run these commands after the build to confirm architectures:\r\n\r\n* iOS: http://ss64.com/osx/lipo.html\r\n* Android: Appears the simplest approach is enumerate the folder names under the \"libs\" directory: https://software.intel.com/en-us/blogs/2014/07/03/how-to-set-up-an-ndk-project-to-compile-for-multiple-target-platforms\r\n* BlackBerry: TBD", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-21T15:10:29.000+0000", "updated": "2014-11-21T16:45:41.000+0000" }, { "id": "333212", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Looks good!", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2014-11-21T15:30:08.000+0000", "updated": "2014-11-21T15:30:08.000+0000" }, { "id": "333275", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We moved to space-delimited architectures, which seems acceptable, since Java does this in manifest lists: https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-21T20:38:00.000+0000", "updated": "2014-11-21T20:38:00.000+0000" }, { "id": "333283", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PRs:\r\nti.map (ios/android): https://github.com/appcelerator-modules/ti.map/pull/73\r\nti.facebook (ios): https://github.com/appcelerator-modules/ti.facebook/pull/15\r\nti.touchid (ios): https://github.com/appcelerator-modules/ti.touchid/pull/12\r\n\r\nAdding above modules to timob\r\nmaster: https://github.com/appcelerator/titanium_mobile/pull/6373\r\n3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6374", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-21T21:59:47.000+0000", "updated": "2014-11-21T22:26:01.000+0000" }, { "id": "333306", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Updating module template in timob\r\nmaster: https://github.com/appcelerator/titanium_mobile/pull/6375\r\n3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6376", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-21T23:31:47.000+0000", "updated": "2014-11-21T23:31:47.000+0000" }, { "id": "333307", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Approved. Merged.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-21T23:33:42.000+0000", "updated": "2014-11-21T23:33:42.000+0000" }, { "id": "333427", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Updating Ti.CloudPush module in timob:\r\nmaster: https://github.com/appcelerator/titanium_mobile/pull/6384\r\n3_5_X: https://github.com/appcelerator/titanium_mobile/pull/6386", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-24T18:36:07.000+0000", "updated": "2014-11-24T18:36:07.000+0000" }, { "id": "338901", "author": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Blackberry PR: https://github.com/appcelerator/titanium_mobile_blackberry/pull/274", "updateAuthor": { "name": "jalter", "key": "jalter", "displayName": "Jon Alter", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-13T17:23:07.000+0000", "updated": "2015-01-13T17:23:07.000+0000" }, { "id": "339991", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Validated module manifest template has compiled architectures", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-20T21:23:51.000+0000", "updated": "2015-01-20T21:23:51.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }