iOS Question Local Mac Build Server file not found errors

Discussion in 'iOS Questions' started by MarkNZ, Sep 26, 2019.

  1. MarkNZ

    MarkNZ Member Licensed User

    B4I 6
    XCode 11

    Using BuildServer that came with B4I 6 - after successfully updating firebase
    (after getting firebase sorted it worked briefly but . . . )

    When I try to compile. It complains that it can't find any of the project files.

    EG
    'Build input file cannot be found: '/Users/munderwood/MacServer_60/UploadedProjects/<user id>/B4iProject/LS_pgmain.m' (in target 'B4iProject' from project 'B4iProject')'

    No project files are found even though they are physically present on the mac.
    I can see the file(s) is/are in the uploaded projects folders on the Mac (yes I cleaned it out and tried again).

    Using Buildserver 5.8 that was fine before B4I 6
    So I pulled out my backup copy of the trouble free Builder Server 5.8 (yes I know they are the same) used before going to B4I 6 & Xcode 11 . Made sure the firebase modules were up to date.
    Get successful compiles.

    BUT when I try to add a new library to the project eg. iUI8 (but tested with a number of other libraries so not iUI8 specific) I get

    '
    fatal error: 'iUI8.h' file not found
    #import "iUI8.h"
    '

    IE It does find the project files and compiles them but can't find the newly added to the project library modules. Same error different part of the build.

    I ran the build server test call and the list of the libraries and the version numbers match the B4I libraries.
    iUI8.h (and matching .a) files and any other library file I try to add are present on the mac build server as per normal.

    The project (with added libraries) compiles fine on the hosted builder

    In different ways I keep running up against the file not found error when compiling on the local mac server.

    I have tried all sorts of variations am now at a loss.

    Anyone?
     
  2. Erel

    Erel Administrator Staff Member Licensed User

    This is the exact same builder. The builder wasn't updated in v6.0.

    Make sure that the builder is not running and unzip the builder zip in a new folder.
     
  3. MarkNZ

    MarkNZ Member Licensed User

    Thanks for the response.

    I thought I had added another entry here saying I started a new topic under bugs - partly because I put this in the Android instead of IOS area (I Thought)

    I tried the various build server variations.

    I don't think the issue is the build server. See my post under bugs.

    (But a quick summary. If I do a compile then compile a different project or add libraries to the same project I get file not found errors. Looks to me like the project files on the buildserver side are not being cleaned out properly by B4I 6 between compiles.)
     
  4. Erel

    Erel Administrator Staff Member Licensed User

    You made three threads on the same topic. I've removed them as it is impossible to help you like this (you should have received a notification about it).

    Please post all the relevant information here.
     
  5. MarkNZ

    MarkNZ Member Licensed User

    Sorry about the duplicates. I knew I was creating one new one under bugs but thought the other was in the Android area rather than IOS.

    Anyway.

    This is how I can trigger the error - and not trigger it. - a bit long winded but covers the variations tried.

    Starting with clean local mac build server. - actually a copy of the installation I was using before installing B4i 6 and XCode 11 without any issues (is 5.8).
    Mac is running macOS Mojave version 10.14.6

    I emptied the uploaded projects folder in the build server before starting.

    1. Project A. Compile.
    Success.

    2. Project A re compile.
    Success.

    3. Project B Compile (a different project).
    Errors : file not found - files listed not in this project but were in Project A.

    4. Change the User ID in the Build Server settings area of B4I 6 From B4i_Default to B4i_default_1

    5. Project B compile (project that failed in 3).
    Compiles no problem.

    6. Try to compile Project A again still using User ID B4i_default_1 as used in 5 above.
    File not found errors. Project B files.

    7. Project A - change User ID back to B4i_Default used in 1.
    Success compiles without issue.

    8. Project A repeat 7. above but removed a code module from the project first. Recompile.
    File not found errors for removed module.

    9. Project A as in 8. above. Just changed the Build Server setting ID to B4i_Default_2 and tried a recompile
    Success compiles.

    Looks like some files are not being cleaned out between compiles (?)
     
  6. Erel

    Erel Administrator Staff Member Licensed User

    1. Delete all these user folders.
    2. Run Project A.
    3. Run Project B. Does it fail? Do you see Project A files inside B4iProject folder?
     
  7. MarkNZ

    MarkNZ Member Licensed User

    1. Emptied the build servers \Uploadedprojects folder.
    2. Started the Buildserver on the mac.
    2. Started B4I without loading any project.
    3. Saved that as a new project.
    4. Went compile.

    Immediately several file Errors such as

    'error: Build input file cannot be found: '/Users/munderwood/macServer_58/UploadedProjects/<user id>/B4iProject/b4i_srvcreportsomething2.m' (in target 'B4iProject' from project 'B4iProject')'

    This is a file name from the previously tested project IE The project run before I shut the buildserver down and emptied the \uploadedproject folder.

    Changed the User ID in the build server settings in B4I to b4i_default_7 (as yet unused)

    Tried compile again - success,

    Compared the files in the \uploadedproject\b4iproject folder under b4i_default and b4i_default_7. They are the same.
    There is no sign of files from the earlier project.

    Starting the mac server with an empty \uploadedprojects folder, and starting B4i without a project and creating a new one still picks at least some of the project files list from the previous compile when submitting to the build server. But it isn't uploading any of the actual project files from the previous compile. Only the files from the project being compiled are in the \uploadedprojects\b4iproject folder

    On the mac I looked at the Build.DB file in each load - b4i_default and b4i_default_7. as in \UploadedProjects\b4i_default\build\XCBuildData\Build.DB and \UploadedProjects\b4i_default_7\build\XCBuildData\Build.DB
    Build.DB in b4i_default shows extraneous file names. When I changed the User ID to b4i_default_7 the build.db file in that folder only shows files for the actual project being compiled.

    The attached file has the matching sections from both build.db files.
     

    Attached Files:

  8. Erel

    Erel Administrator Staff Member Licensed User

    Something on your Mac is preventing the build server from deleting the files when a new build is started.
    Maybe the files are locked.
     
  9. MarkNZ

    MarkNZ Member Licensed User

    Thanks for your attention to this.

    Thought that might be the case at first then realized that when I start with an empty uploaded projects folder on the Mac, the new build.DB file created still contains the erroneous files list.

    Cutting to the chase : My conclusion is the problem is on the Windows PC end. (A Dell with up-to-date windows 10 Pro)

    The key seems to be the Builder Server User ID in B4I.

    If I compile with errors.
    Change the User ID in B4I to a clean one - no compile errors
    Change the User ID back to the original User ID - the same errors recur

    (emptied the Mac Uploaded projects folder between compiles just to be sure)
    (switching between projects without emptying the mac, the files copied over switched correctly the mac side looks as it should)

    All of the correct files for the project being compiled appear on the Mac, but the list of files in the project in the new Build.db file are from that last successful build for the matching Build Server User ID on the PC.


    So in summary, when I first use a User ID it works.
    After that it will continue to work for just that project.
    BUT If I even change that project's structure, such as adding a new code module, it will no longer work for that project either.
    If I remove that code module from the project it complies again.

    I don't know where you are storing the info related to the User ID and how it relate to compiles so can't dig deeper with that.
    If you tell me where to look I will have a closer look.

    I can work around it by managing the build server User ID used for each project.

    The problem started when I updated to B4I 6.
     
  10. Erel

    Erel Administrator Staff Member Licensed User

    You can clean the project (Ctrl + P) to delete the "objects" folder.

    You are the only one to encounter this issue so it is likely something on your PC or Mac that prevents the files from being deleted.
     
  11. MarkNZ

    MarkNZ Member Licensed User

    Thanks for your trouble.

    Don't you just hate it when your the only one!

    Somewhere a project's Modules List is created on the first compile using a particular User ID and associated with that B4I \Build Server Settings\ User ID.
    Once created that project Modules List is locked to that User ID and never replaced/updated, ever.
    Could be in B4I the Mac BuildServer or XCode 11. (Its not in the Uploadedprojects folder on the mac).

    Anyway I will live with it.
    I will associate a letter with a project and start using it when compiling that project as in A1.
    When I change that projects modules list I will progress to a new User ID for it A2 etc.
    Hopefully one day something will be updated and the issue will vanish again.

    Regards
    Mark
     
  12. Jack Cole

    Jack Cole Active Member Licensed User

    I am having this problem now.

    Mac OS Catalina
    XCode 11.1
    B4i 6.0
     
  13. Jack Cole

    Jack Cole Active Member Licensed User

    Doesn't seem to be a permissions problem, because I see files disappearing and appearing during the compile process.
     
  14. Jack Cole

    Jack Cole Active Member Licensed User

    I got mine to work. The solution certainly doesn't seem obvious. I switched from the simulator to using a real device. Then I got this error. I followed the steps to Download Manual Profiles in Xcode. That resolved both issues. It now works with either the real device or simulator.
     
  15. tufanv

    tufanv Expert Licensed User

    There is a kind of problem with xcode11 and build server, where files are not updated so we have to change the userid time to time, I don't think it is related with downloading manual profiles. There is a problem about files not being updated.
     
  16. Jack Cole

    Jack Cole Active Member Licensed User

    That or there is some payload file being sent from the IDE that is not being updated.
     
  17. Erel

    Erel Administrator Staff Member Licensed User

  18. MarkNZ

    MarkNZ Member Licensed User

    It would seem tufanv is seeing the same issue I am.

    To bore everyone I will cover the the issue I have and what it seems to be and a work around.

    1. On the Mac make sure the uploaded projects folder is empty.
    2. Open a project in B4I.
    3. On the menu go to Tools\Build Server\Server Settings and set you User ID to ABC123
    4. Compile the project - success all is sweet.
    5 On the Mac in the Uploaded Projects folder for the project compiled examine Build.DB. The list of files for the project in Build.DB will match your project.
    6. Empty the Uploaded Projects folder on the Mac.
    7. Open a different project in B4I (with a different structure) but leave the Build Server User ID as ABC123.
    8. Compile - fail - On the Mac look at the Build.DB file in the Uploaded projects folder for the new build.
    9. The list of files in it will be the list for the project compiled in 4 above, not the list relevant for the project now open.
    10. Empty the Uploaded Projects folder on the Mac.
    11. Still with the same project that failed in 8. On the menu go to Tools\Build Server\Server Settings and set you User ID to XYZ789
    12.Compile - Success
    13 Examine Build.DB it is the correct file list for the project.
    14. Empty the Uploaded Projects folder on the Mac.
    15. On the menu go to Tools\Build Server\Server Settings and set you User ID back to ABC123
    16 Compile - fail. Open the Build.DB file on the Mac - the list relevant to the first compile (4 above) using ABC123 is again in Build.DB, not the one for the project actually being worked on.

    Somewhere the list of files that XCode should compile is written down when using ABC123. After that if you change projects or change the list of files in the original project XCode is still trying to compile the very first list that was used with ABC123.

    I presume XCode uses the Build.DB file as its reference. When I try to compile a project the files in the Uploaded Projects folder for that project are all present and correct but the Build.DB file has a list from another run - the run first done using ABC123

    I know what I have written is excessively long and detailed but I am trying to make certain that it is clear that the files sent to the Mac are all correct and present except that the Build.DB file has outdated entries in it.
    On the face of it it would appear the problem is occurring on the PC but I don't know the full mechanics to be sure.

    The fix is simple if you run into the problem change your Build Server User ID in B4I to something new each time the problem surfaces.
     
    Erel likes this.
  19. Erel

    Erel Administrator Staff Member Licensed User

    I recommend using Xcode 10 for now. A fix will probably be available next week. I will need the help of users who encountered this issue as I wasn't able to reproduce it locally (yet).
     
  20. tufanv

    tufanv Expert Licensed User

    at your service .. :)
     
    Erel likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice