Bug 445308 - Git doesn't checkout iOS projects properly
Summary: Git doesn't checkout iOS projects properly
Status: ASSIGNED
Alias: None
Product: Hudson
Classification: Technology
Component: GIT (show other bugs)
Version: 3.2.0   Edit
Hardware: PC Linux
: P3 critical with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Winston Prakash CLA
QA Contact:
URL:
Whiteboard: candidate-3.2.2
Keywords:
Depends on:
Blocks:
 
Reported: 2014-09-29 03:43 EDT by Konrad Zielinski CLA
Modified: 2015-03-10 06:08 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Konrad Zielinski CLA 2014-09-29 03:43:18 EDT
It looks like Git-plugin does not checkout changes from gitlab properly.
When I clone by "Execute shell" command this problem doesn't occur.
XCode IDE also doesn't see this library after GitSCM plugin checkout.
This problem occurred after update to 3.2.0, 
problem occurs in several iOS projects, MSBuild and Java projects seems to be ok.

Log from Hudson below:
...
14:44:40  #import <GPX/GPX.h>
14:44:40          ^
14:44:40  1 error generated.
...
14:44:41  ** BUILD FAILED **
14:44:41  
14:44:41  
14:44:41  The following build commands failed:
14:44:41  	CompileC build/SA-AlarmGPS.build/Release-iphoneos/SA-AlarmGPS.build/Objects-normal/armv7/AlarmsViewController.o SA-AlarmGPS/AlarmsViewController.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
14:44:41  (1 failure)
14:44:41  ERROR # 65 : Compilation failed
Comment 1 Winston Prakash CLA 2014-09-29 12:43:59 EDT
Did you mean it was working ok in 3.1.2?
Comment 2 Konrad Zielinski CLA 2014-09-30 05:47:50 EDT
The problem occurred after the update version 3.1.2 Hudson to 3.2.0, but
I suspect that the update of Git-plugin broke the builds.

Look at this.

Git plugin 2.2.8
Build result: FAILED, because of unseen LM framework

$ls -la <framework_dir>
total 16
drwxr-xr-x   5 builder  staff  170 Sep 30 11:20 .
drwxr-xr-x  15 builder  staff  510 Sep 30 11:20 ..
-rw-r--r--   1 builder  staff   24 Sep 30 11:20 Headers
-rw-r--r--   1 builder  staff   19 Sep 30 11:20 LM
drwxr-xr-x   4 builder  staff  136 Sep 30 11:20 Versions

after downgrade Git plugin to 2.2.7
Build result: SUCCESS

$ls -la <framework_dir>
total 16
drwxr-xr-x   5 builder  staff  170 Sep 30 11:28 .
drwxr-xr-x  15 builder  staff  510 Sep 30 11:28 ..
lrwxr-xr-x   1 builder  staff   24 Sep 30 11:28 Headers -> Versions/Current/Headers
lrwxr-xr-x   1 builder  staff   19 Sep 30 11:28 LM -> Versions/Current/LM
drwxr-xr-x   4 builder  staff  136 Sep 30 11:28 Versions

in 2.2.8 Heades and LM(framework name) files are not linking to the framwork and that's the problem (they are not links but they contains correct direcories).

$cat Headers
Versions/Current/Headers

conclusion: something had to change in the process of checkout

workaround: clone your repository as Execute shell buildstep (no change history, job will clone repo every time)
workaround2: downgrade your git-plugin to 2.2.7 version
Comment 3 Winston Prakash CLA 2014-09-30 11:32:21 EDT
(In reply to Konrad Zielinski from comment #2)

In git plugin 2.2.8, we upgraded to latest version of JGit (3.3.1). Wondering if that is causing this issue.

We will investigate.
Comment 4 Winston Prakash CLA 2015-01-05 20:58:17 EST
(In reply to Winston Prakash from comment #3)

E-mail from mike.gilbode@oracle.com

It looks like symlinks stopped working with the latest version of the git plugin.  I see that Bob updated the jgit plugin here:

https://github.com/hudson3-plugins/git-plugin/commit/46a614e4651212d884aaf2dbc8bf18329991ace3

Included in that update was this commit which appears to try to detect if symlinks are supported and if so, enable them, if not disable them.

https://github.com/eclipse/jgit/commit/078a9f60664fee1f7e85f0c3ab3fd067c0f674cc

It looks like this commit adds the actual filesystem updates to detect that symlinks are supported on JDK7 but that code is in a separate module (which I think runs on JDK7 and later only) but we don't include that in the hudson git plugin:

https://github.com/eclipse/jgit/commit/dd3181603e0a42c46299c25cede66fdbd67da518

So it looks like the behavior is that jgit tries to determine if the filesystem supports symlinks, it erroneously thinks it doesn't & writes that to the .git/config & then checks out all symlinks as files.  I filed this issue:

https://github.com/hudson3-plugins/git-plugin/issues/14
Comment 5 Winston Prakash CLA 2015-01-05 20:58:57 EST
(In reply to Winston Prakash from comment #4)

Based on mikes description looks like we may have to include the following dependency to git plugin

<dependency>
    <groupId>org.eclipse.jgit</groupId>
    <artifactId>org.eclipse.jgit.java7</artifactId>
    <version>3.6.0.201412230720-r</version>
</dependency>
Comment 6 Konrad Zielinski CLA 2015-03-03 11:09:53 EST
What is status of this fix request?
I've installed 2.2.11 version of Git plugin and bug seems to still be there.
Comment 7 Patryk Szczęch CLA 2015-03-10 06:08:01 EDT
Hey! Is there any progress on this issue?