Compile BRL-CAD on Windows using Cygwin (attempt #2)BRL-CAD
Status: ClosedTime to complete: 48 hrs Mentors: SeanTags: compile, cygwin, windows

BRL-CAD builds pervasively on a number of different operating systems, hardware, and compilers.  We actively seek out new compilation environments and like to get them working as best as we can.  We regularly build with Microsoft Visual Studio (the professional one you have to pay for).  One we have not tried in a long while is Cygwin.

This task involves attempting to compile BRL-CAD on Windows on Cygwin.

You'll need to download our source code, CMake, and a FULL install of Cygwin (including gcc, g++, make, and their other devs tools).  Try to get BRL-CAD to compile and keep notes of what you attempt along the way.  You'll report back any failures and otherwise document all the steps you take along the way.  Submit a complete build log (whether it succeeds or fails) and your notes documenting everything you did.

Note this was already attempted by someone else, so their efforts and logs may help you if you run into a problem. 

Resources:

  • http://brlcad.org/wiki/Compiling
  • http://www.cmake.org/
  • http://www.cygwin.com/
  • http://www.google-melange.com/gci/task/view/google/gci2012/7972239
Uploaded Work
File name/URLFile sizeDate submitted
brlcad-buildlog.txt44.7 KBDecember 17 2012 13:32 UTC
brlcad-buildlog.txt70.3 KBDecember 17 2012 15:37 UTC
brlcad-buildlog.txt126.7 KBDecember 17 2012 16:07 UTC
brlcad-buildlog.txt129.2 KBDecember 17 2012 16:24 UTC
brlcad-buildlog.txt317.7 KBDecember 18 2012 04:56 UTC
brlcad_buildlog_cmake_success.txt375.2 KBDecember 18 2012 08:05 UTC
brlcad-buildlog-part2.txt399.7 KBDecember 18 2012 09:46 UTC
Configurations for building.txt1.9 KBDecember 18 2012 14:39 UTC
build.txt49.7 KBDecember 21 2012 01:17 UTC
build_log_22_dec.txt97.3 KBDecember 22 2012 15:00 UTC
log_24_dec.txt132.8 KBDecember 24 2012 06:28 UTC
Makefile946.1 KBDecember 24 2012 06:29 UTC
final summary.txt128.3 KBDecember 26 2012 15:28 UTC
final summary - Strict.txt102.0 KBDecember 26 2012 15:29 UTC
Comments
Steven Kouon December 16 2012 13:32 UTCTask Claimed

I would like to work on this task.

Steven Kouon December 16 2012 13:40 UTCFilename

There are errors in the log that is something like


CMake Error: File /usr/brlcad/rel-7.22.1/brlcad-build/src/other/tcl/doc/mann/pkg::create.n does not exist.


CMake Error at CMakeLists.txt:417 (_configure_file):


  configure_file Problem configuring file


Call Stack (most recent call first):


  src/other/tcl/doc/CMakeLists.txt:291 (configure_file)


It says that the file pkg::create.n does not exist, but when viewed from windows explorer, the file is present but the file name looks like "pkgcreate.n" where the  looks like spaces. But when the file is listed in the cygwin terminal, it is called "pkg::create.n". This is mainly because the file name contains the character ":" which is not allowed in windows file name. Therefore, when cmake tries to access the file, it cannot be found, as it thinks that it is in the unix environment where such characters are allowed in file names.


In conclusion, many of these errors occured due to the character ":", I tried to find a way to bypass this, but unless there is a way for cmake to avoid using the character ":" when generating files, there is no way to compile brlcad using the cmake in cygwin.

Steven Kouon December 16 2012 13:59 UTCMy current build log

Here is the link to my build log before my claim is accepted:


https://www.box.com/s/ova6dm970kmzk41ngxcp

Sean on December 16 2012 20:30 UTCTask Assigned

This task has been assigned to Steven Kou. You have 48 hours to complete this task, good luck!

Sean on December 17 2012 05:13 UTCnot your build log

So for starters, that is not your build log.  That is your cmake configuration log.  That's a very important distinction to understand.


Second, so your inspection that the problem stems from those colons seems fair, but lacks understanding for where they're coming from.  Where are they coming from?


They are not specified in src/other/tcl/doc/CMakeLists.txt from what I can quickly tell.  If you are able to identify the source, you may identify the cause and a fix may present itself.


That said, those errors also do not seem to halt configuration.  You very well should be able to continue to the build phase ("make").

Steven Kouon December 17 2012 09:05 UTCClarification

I understand that it may be my bad that I did not explain clear enough. I apologize for that. But in the last line said that configurations are incomplete, so I think that building it will not be possible, nonetheless, I will still try to build using make and update the log.


I do not know how to edit the cmake configuration files to change the naming system such that colon will not exist in file names which is unacceptable in windows, although through the cygwin terminal the file names are correct and I do not know why cmake is unable to recognise the file. I will research on that or ask around if anyone has experience this problem.

Steven Kouon December 17 2012 13:59 UTCMake command

Due the error during cmake, the makefile is not generated, therefore make cannot continue, is there any cmake files that can be edited to stop cmake from generating file with names that include colons? As long as the files generated in the build directory does not contain colons which windows does not accept, there will be less errors.


I ran cmake a second time to consolidate the errors so that it is clearer to see. Hope that there would be a solution as the web don't seem to have such solutions.

Daniel Rossberg on December 17 2012 14:20 UTCTwo lines from your log-file

Call Stack (most recent call first):
  src/other/tcl/doc/CMakeLists.txt:291 (configure_file)


What happens there in this file?

Steven Kouon December 17 2012 14:23 UTCRe: Two lines from your log-file

 if (NOT CMAKE_CONFIGURATION_TYPES)


            configure_file(${man} ${CMAKE_BINARY_DIR}/${MAN_DIR}/mann/${tclmann} COPYONLY)


from line 290 to 291


Do you know what is happening?

Steven Kouon December 18 2012 08:06 UTCCMake success... make fails

From what I understand, zlib fails to build perhaps because of some syntax errors, but I do not understand the last few lines that make it giving me, hope that someone would explain it to me.

Daniel Rossberg on December 18 2012 08:25 UTCIt doesn't look like a syntax error

For me it looks like a misformed command line in the make script: "/usr/bin/windres: invalid option -- w" and "recipe for target ... failed".  What is in line 402 of src/other/libz/CMakeFiles/zlib.dir/build.make ?  What's the corresponding section in CMakeLists.txt?

Daniel Rossberg on December 18 2012 11:33 UTCYou found the right line with the first occurrence of -w

It's a zlib line (as you said on IRC) and the error message was about the zlib.  But look at the other lines in your log.  So the error was simply at the first occurrence of -w.  There is probably nothing special with zlib.  It had bad luck in beeing the first library.


Therefore, write down what you did (e.g. the cmake parameters you set), what you had found and what you recommend should be investigated next.  Then mark this task as completed.  You've invested enough time in this task then.

Steven Kouon December 18 2012 14:39 UTCReady for review

The work on this task is ready to be reviewed.

Steven Kouon December 18 2012 14:43 UTCReview and next

As per mentor Daniel Rossberg's advice, I have written down what I have done so far and did a summary. Hope that it will do along with all the logs I submitted.


Should I claim the task on http://www.google-melange.com/gci/task/view/google/gci2012/8093204 ? Or should it just be closed? I actually did the work of the other one instead, but since I went on to building, I might as well submit here.

Sean on December 18 2012 15:52 UTCTask Needs More Work

One of the mentors has sent this task back for more work. Talk to the mentor(s) assigned to this task to satisfy the requirements needed to complete this task, submit your work again and mark the task as complete once you re-submit your work.

Daniel Rossberg on December 18 2012 16:00 UTCAlmost

Fort the Windows MSVC build there seams to be a work around fore the :: problem by replacing it with _.  You did this by hand but there is perhaps already some code for it in the cmake files.  You should make a note about comparing cygwin with MSVC to get a solution fot this problem.


Furthermore I couldn't see any other reason for the zlib to fail than the -w parameter.  Where did you see the "unknown reason"?

Sean on December 18 2012 16:02 UTCthat's good but...

It's good to see what all you've tried, but that certainly isn't what's needed to close either task out.  Given your progress, I suggest you unclaim this task, claim the other, and work on submitting everything you did to get cmake to configure correctly.  That's not a text file like you submitted here.  That will be a single proper patch file (see http:://brlcad.org/wiki/Patches for help) that gets it all working.


That said, even your text file doesn't seem accurate:



  • don't need to edit packagens.n (probably)

  • there are no ttk::*.n files in src/other/tk/doc

  • ditto in tcl


I think what you probably meant to say is to edit the ttk_*.n files and change the ttk::* references within the file to ttk_* references?  Still, I don't think that's required to get it working.  Notice the CMakeLists.txt file in the src/other/tk/doc directory.  Read what it's doing.  Notice how it iterates over all of the tk_*.n files and runs the installManPage script on them.  That's probably where you should be looking.


Since the goal is getting a working compile, at this point I suggest you unclaim this task and claim the other task since you're so close.  Once that task is complete, you wlll probably be able to come back to this one.  It's a gamble, but a pretty safe one. :)

Melange on December 18 2012 20:30 UTCTask Reopened

Melange has detected that the final deadline has passed and it has reopened the task.

Steven Kouon December 20 2012 01:45 UTCTask Claimed

I would like to work on this task.

Sean on December 20 2012 03:19 UTCTask Assigned

This task has been assigned to Steven Kou. You have 48 hours to complete this task, good luck!

Steven Kouon December 21 2012 01:30 UTCUpdate

I have uploaded my latest findings, hope that the mentors can take a look.


I am quite busy these few days so I may not be able to finish the task on time, is it possible to have an extension? If it is not possible then perhaps I will try my luck to claim the task again later.

Sean on December 21 2012 05:47 UTCDeadline extended

The deadline of the task has been extended with 2 days and 0 hours.

Steven Kouon December 22 2012 15:06 UTCHelp required for further progress

As I am not an expert in this program, there are something that I don't understand and therefore cannot solve the problem.


My conclusions so far are:


1. During zlib compilation, -w flag is passed to windres.exe. From my understanding, windres.exe does not accept such flags. The related file that contains the flags are indicated in the log on 21 Dec.


2. In the makefile, make has problems at line 146 onwards, it seems to not be able to process "all". This is the portion which I don't understand at all, there isn't much on the internet regarding this.


I hope someone who understands all these errors could give me a tip on how to resolve them, or at least explain what is going on.


Thank you.

Melange on December 24 2012 05:20 UTCInitial Deadline passed

Melange has detected that the initial deadline has passed and it has set the task status to ActionNeeded. The student has 24 hours to submit the work before the task is reopened and sent back to the pool for other students to claim.

Steven Kouon December 24 2012 07:34 UTCReady for review

The work on this task is ready to be reviewed.

Steven Kouon December 24 2012 07:36 UTCIncomplete submission

I don't feel that my work is complete too, but I need some guidance to do more. Hope that someone that understands the problems would give me a guide on this.

Sean on December 24 2012 17:41 UTCdefinitely got further

Steven, you definitely got further along than others.  Can you provide all of the exact steps and commands that you ran?


Looking at your build log, the compile failed in our libpkg library due to a definition mismatch.  Why that occurred depends on many many factors, but what you can do is look at the lines of code mention in the error.  Notice how it says a function (select) and struct are being redefined?  That probably means we're declaring something we shouldn't or we're including too many headers, or something failed to detect properly during cmake as being available.  Try a simple edit to see if you can get past that build error.  If you run just "make", it should halt at the first error so it's more clear where it stopped.


 

Sean on December 24 2012 17:41 UTCDeadline extended

The deadline of the task has been extended with 2 days and 0 hours.

Sean on December 24 2012 17:41 UTCTask Needs More Work

One of the mentors has sent this task back for more work. Talk to the mentor(s) assigned to this task to satisfy the requirements needed to complete this task, submit your work again and mark the task as complete once you re-submit your work.

Sean on December 24 2012 17:44 UTCif you can't get it to work

Don't worry if you can't get it to work as you've made some good progress (enough to complete the task, but need to submit your steps and try).  Just make sure that you try and document the steps you take so someone else can build on your work on investigate where you left off with ample documentation.


Make sure you're using our latest svn sources if you hadn't already: http://brlcad.org/wiki/Compiling


 

Steven Kouon December 26 2012 15:29 UTCReady for review

The work on this task is ready to be reviewed.

Steven Kouon December 26 2012 15:33 UTC2 Versions uploaded

Basically I have uploaded 2 similar summaries, the only difference is in the strict flag. One version has strict turned off, while the other has strict turned on for the compilation to stop early.


I did this as I'm not very sure whether to turn on strict or not. Nontheless, the compilation should have halt much earlier at around 3% if Zlib is not turned off. Since it comes along with cygwin, skipping the compilation of zlib is not unreasonable.


Hope that someone with better knowledge can help to investigate into this problem and make this great programme compile and work.

Melange on December 27 2012 05:23 UTCNo more Work can be submitted

Melange has detected that the deadline has passed and no more work can be submitted. The submitted work should be reviewed.

Sean on December 28 2012 08:02 UTCTask Closed

Congratulations, this task has been completed successfully.

Sean on January 14 2013 14:47 UTCthank you

As GCI comes to a close, we wanted to take the time to say THANK YOU for all your efforts.  This comment interface closes after GCI is over, so you're encouraged to join our mailing list where we'll be announcing contributions from GCI participants like yourelf over the upcoming months: 


https://lists.sourceforge.net/lists/listinfo/brlcad-news


If you've provided your full name, we'll be sure to credit you in our authorship documentation and you'll see your name in a future announcement.  If you contact us at devs@brlcad.org or via IRC, we'll even let you know when your work is integrated and follow up with updates.  You're welcome and encouraged to contact us any time, especially if you have a question about how to continue participating in Open Source after GCI is over, but even if just to keep in touch.  Note that ongoing participation in Open Source is one of the most impressive skills to have on your resumé.  Take care, be well, and thank you again!