IOS builds broken

68 views
Skip to first unread message

Dave Dyer

unread,
Feb 3, 2017, 2:42:37 PM2/3/17
to CodenameOne Discussions

5 IOS builds in a row have failed with this error:

/Release-iphoneos/Develop.build/Objects-normal/armv7/com_codename1_ui_geom_GeneralPath.o
/var/folders/zh/kb_4hqhn4kg1h0r5dp_6htcm0000gn/T/build7366153678036003995xxx/dist/Develop-src/com_codename1_ui_geom_GeneralPath.m:1011:1: error: expected statement
}
^
1 error generated.


Carlos Verdier

unread,
Feb 3, 2017, 3:01:16 PM2/3/17
to CodenameOne Discussions
I'm not having errors but builds are extremely slow right now for iOS. Over 30 minutes.

Steve Hannah

unread,
Feb 3, 2017, 3:08:04 PM2/3/17
to codenameone...@googlegroups.com
I can't seem to reproduce this.  And I'm building an app that has full coverage in GeneralPath.  Are you doing a versioned build?

Steve

Steve Hannah

unread,
Feb 3, 2017, 3:48:32 PM2/3/17
to codenameone...@googlegroups.com
I've run every demo I have at it and can't reproduce this problem.   I've checked that GeneralPath has full coverage, so I'm at a loss on this error.  You'll need to provide a test case.

Steve
--
Steve Hannah
Software Developer
Codename One

Dave Dyer

unread,
Feb 3, 2017, 8:16:28 PM2/3/17
to CodenameOne Discussions
Sixth attempt at the same build was successful.   I suspect that a particular
server had a problem, and it was the luck of the draw that determined how many attempts
are needed to succeed.  It would be useful if the error log included some kind of server id.

Shai Almog

unread,
Feb 4, 2017, 1:34:08 AM2/4/17
to CodenameOne Discussions
I'm guessing slower builds are a result of some tests by Dave/us that flooded the iOS build queue.

@Dave Did you test your thesis by changing the generated code and rebuilding after the change or is it just a working theory?

Dave Dyer

unread,
Feb 4, 2017, 5:53:33 PM2/4/17
to CodenameOne Discussions
I just kept trying the same build, with no changes, until one succeeded.

Shai Almog

unread,
Feb 5, 2017, 1:08:27 AM2/5/17
to CodenameOne Discussions
I was talking about the multiple header include theory

Dave Dyer

unread,
Feb 5, 2017, 2:53:45 AM2/5/17
to CodenameOne Discussions
yes.  i rearranged some dependencies that were fairly easy to change and got a 50% decrease
in build times.  to do this systematically i proposed to rewrite the header files to separate the
exported apis from all the internal declarations, so only the external headers need be included.

as it is now, if a class uses a crapload of other classes, but exports only a trivial interface,
every other class that imports it also imports all the irrelevant crap.  The effect in complex
hierarchies is every class ends up importing everything.

Shai Almog

unread,
Feb 6, 2017, 1:32:01 AM2/6/17
to CodenameOne Discussions
Are they the headers included as part of the dependency block: https://github.com/codenameone/CodenameOne/blob/1ac7c6192cae151cb1665888d4a16175d56ef892/vm/ByteCodeTranslator/src/com/codename1/tools/translator/ByteCodeClass.java#L1011-L1019

If so do you have any concrete suggestions for optimizing that and detecting the cases where something isn't needed?

Dave Dyer

unread,
Feb 6, 2017, 1:59:30 AM2/6/17
to CodenameOne Discussions
My understanding of the standard Java compilation process is that you (conceptually) parse the .class file, and that tells you everything you are allowed to know about the class. so if you built a header file that way, that would be all that is needed for any other file that uses the class.

The header file you are currently producing is a superset, sometimes a vastly larger superset, of
That minimal header. The header you're producing is needed to compile the class, but not to use it.

Shai Almog

unread,
Feb 7, 2017, 3:42:13 AM2/7/17
to CodenameOne Discussions
The link I provided is literally to the translation code, notice it's just plain Java code that generates the C headers.

Dave Dyer

unread,
Feb 8, 2017, 2:20:08 AM2/8/17
to CodenameOne Discussions
Suppose I have a class that includes everything imaginable, but provides only a single parameterless method called DoIt()
If some other class uses it, it needs only a header that includes DoIt(), not all the rest of the classes in the world. It is
Admittedly a little more complicated to provide correct headers for private and protected interfaces, but the fundamental
Distinction between the classes it uses and the interfaces it provides is well defined.

Shai Almog

unread,
Feb 8, 2017, 2:56:36 AM2/8/17
to CodenameOne Discussions
I understood that premise before.
Notice that you probably built a debug version which is more lenient in terms of C syntax. Release versions are more strict and if a feature is used that hasn't been declared they will fail.

Also keep in mind that precompiled headers really impact build times so it might also impact things significantly.

Reply all
Reply to author
Forward
0 new messages