make gbuildtojson and make xx-ide-integration problems.

Bjoern Michaelsen bjoern.michaelsen at canonical.com
Wed Dec 14 15:23:38 UTC 2016


Hi,

On Wed, Dec 14, 2016 at 01:29:28PM +0100, Jan Iversen wrote:
> I have 2 problems. First problem when running “make gbuildtojson”. It seems
> the linker is called in post_GbuildToJson.mk. In order to verify it I ran
> “make -d gbuildtojson” (attached), where it can be seen the warning comes
> directly after reading the makefile.

Yes, it seems some extra dependencies still exist, likely OSX specific. "make
-d gbuildtojson" is the right way to go about it, however doing that from the
toplevel creates a lot of output, makes it hard to see the trees in the forest.

Id suggest to try "make -d gbuildtojson" in the modules and find the smallest
one falling and then look at the output of that one (possibly commenting out
stuff in Module_foo.mk to corner the issue).

>   File "/Volumes/LIBREOFFICE/play/core/bin/gbuild-to-ide", line 136, in __lib_from_json
>     GbuildParser.libpattern.match(os.path.basename(json['MAKEFILE'])).group(1),
> AttributeError: 'NoneType' object has no attribute 'group'
> Makefile:413: recipe for target 'vim-ide-integration' failed
> make: *** [vim-ide-integration] Error 1

This essentially means the GbuildParser.libpattern regexp from
/bin/gbuild-to-ide does not find what it expects, namely: Library_(.*)\.mk in
the MAKEFILE variable. Looking at the attached file
workdir/GbuildToJson/Library/libscqahelper.dylib it has:

 "MAKEFILE": "/Volumes/LIBREOFFICE/play/core/sc/CppunitTest_sc_ucalc.mk"

which is wrong. It should be:

 "MAKEFILE": "/Volumes/LIBREOFFICE/play/core/sc/Library_scqahelper.mk"

And using a Library_foo.mk regex on a CppunitTest_foo.mk ist doomed. The
MAKEFILE var is filled at
https://gerrit.libreoffice.org/gitweb?p=core.git;a=blob;f=solenv/gbuild/extensions/post_GbuildToJson.mk;h=c608e33c654677491a8d34df368d1e488934ba7c;hb=4e9dd6e1b79983db087790a50c811b8b14b65f8f#l57
by filling T_MAKEFILE in gb_Postprocess_register_target with the last read
makefile.

That works in general, but apparently not in this case -- I assume be
scqahelper is not shipped with the product and never registered in postprocess.
A solution would be to set the T_MAKEFILE var in the same way it was done for
CppunitTests, which arent registered in postprocess either. see:

 https://gerrit.libreoffice.org/gitweb?p=core.git;a=commitdiff;h=ee8057caaa26dcddbf80b1e0a2f02d250089d1e3;hp=787d31a94510ca3de9ce582d7b7402dfca584b23

by moggi for reference.


> I ran it in my debugger and the file in question is
> '/workdir/GbuildToJson/Library/libscqahelper.dylib’ which has ‘“MAKEFILE":
> "'/Volumes/LIBREOFFICE/play/core/sc/CppunitTest_sc_ucalc.mk’”’ (see
> attachment GbuildToJson.tgz).

I first though the additional quotes were the issue, but those arent in the
attached file, thus assuming the above is a better explaination. Still curious
why you had the extra single quotes here?
 
 
> I look forward to hear your advice, my intention is currently to keep
> testing/correcting this until I have an acceptable solution on mac and
> windows, then that can be used as base for the perl removal and busybox
> integration.

For the second problem see above: its likely due to scqahelper not being
shipped in the product. The good fix would be to do the same as was done for
CppunitTests for Libraries and Executables to find T_MAKEFILE.
As an temporary hotfix until you have the proper fix, you could also make
bin/gbuild-to-ide just print a "warning: target foo has no proper makefile
defined -- skipping" and then ignore the troublesome (few) non-shipped libs for
now.

Best,

Bjoern


More information about the LibreOffice mailing list