Emerge adventure with mingw - 11 issues 10 solutions

Jaroslaw Staniek staniek at kde.org
Thu Jul 30 17:06:37 UTC 2015


Thanks Antton, could you please update the wiki? It's a lot of work but I
bet in a month someone will repeat your work and again and again...

A large chunk of the wiki stays in a form where I left it 8 years ago or
so. Yes, documenting requires careful reading/fixing too, but someone needs
to take the challenge.

Btw, I recommend using native tools, that means msvc. Unless you have
strong reasons to do otherwise.

On Thursday, 30 July 2015, Antton Tapani <antton.tapani at gmail.com> wrote:
> Hello,
>
> I've been trying out emerge for the first time with varying rates of
success, so I thought I'd document my progress. I use master branch
(22.7.2015 [dmy]) as it seems to be recommended judging by discussion on
the web, and by the fact that I was unable to run any other branch that I
tried (python errors or errors during kdeenv setup). My final goal is to
build Krita with mingw-w64 (against all recommendations, apparently), but
in this instance I'm happy to just get the dependencies compiled. I have
yet to actually run anything, so even if these fixes make the compiler
happy, there's no guarantee that they actually work. If some other branch
is supposed to be more functional, I may have just messed up the initial
setup with them.
>
> ----kdeenv----
> I got some problems with the powershell script, and the guide I was using
failed to mention that the powershell bits are actually optional. There's
also a bat version. I managed to run the ps1 script once but later it just
kept crashing during the env setup. I didn't look into it further after
discovering the bat. Just a heads-up that the bat may be a comfier option.
>
> ----emerge qt----
> 1.  A lot of the sourceforge links are no longer valid. Most links are
forwarded automatically to new location, but some return 404. Easy to fix
manually, but somewhat confusing initially.
> 2.  Websites may be down momentarily, causing some confusion whether a
link is dead or not. I wasted some time trying to sort out activeperl, when
it wasn't really broken.
> 3.  Openssl-1.0.2c is no longer available. Apparently emerge is happy if
the new version number is added to the list and default target changed.
> 4.  Mysql download fails. cdn.mysql.com does not work anymore. Changed
basepath to dev.mysql.com
> 5.  qt defaults to ANGLE+directx sdk. Failing that, it disables angle
with a warning that build will most likely fail; continue? Added "-opengl
desktop" to download\git\qtbase\configure.bat to force full opengl.
> 6.  Apparently building qtwebkit can randomly fail with "No such file or
directory" errors. Simply trying again fixes this. It's also possible that
the installation can fail silently. See point 9 further down.
>
> I also found it strange that msys gave a big framed warning that shell
must be restarted before continuing after first run. Then there was a
prompt for continue yes/no. I was not present at the time so it happily
defaulted to yes and soon crashed with some cryptic error (which I forgot
to note down). This apparently left msys dysfunctional and it had to be
reinstalled manually*1) [1]
>
> ----emerge frameworks----
> (calligra guide [2] suggests emerging kdelibs, but this doesn't seem to
exist anymore. I'm assuming there's something equivalent in frameworks)
> 7.  Building kdoctools fails. Added colon ':' to the list of escaped
characters in download\git\kdoctools\cmake\uriencode.cmake [3]
> 8.  win32libs/gpg-error fails with a whole bunch of errors such as this:
>
R:/build/win32libs/gpg-error/work/mingw-w64-RelWithDebInfo-1.12/mkerrcodes.h:9:5:
error: expected expression before ',' token
>    { , "GPG_ERR_E2BIG" },
>      ^
> This is apparently caused by differing behaviour in gcc-5 compared to
earlier versions. Suggested fix [4] is to add compiler flag -P via
libgpg-error-x.xx\src\Makefile.am. This stumped me for  some time, because
I didn't realize that this is an automake file which is not used by cmake.
In our case the flags go to
emerge\portage\win32libs\gpg-error\libgpg-error-cmake-1.12.diff to the
generation calls for mkerrcodes.h and mkw32errmap.tab.h at lines 113 and
115 after the -E flags *2). There is a similar recent fix to this on this
mailing list, but that didn't show up in searches while I was dealing with
this.
> 9.   kdewebkit build failed, claiming that qtwebkit is not installed
(missing cmake files in lib\cmake). This may relate to the random build
fail of qtwebkit at point 6. I did a full rebuild with "emerge -i
qtwebkit". After this, kdewebkit built successfully.
> 10.  khtml fails with "conflicting declarations" errors. There are two
time.h files visible in include\mingw and
mingw64\x86_64-w64-mingw32\include. I couldn't figure this one out, so I
just removed the include\mingw one while building khtml, and then put it
back. Probably not the best of ideas.
> 11.  Kross fails with errors:
> CMakeFiles\metafunctiontest.dir/objects.a(metafunctiontest.cpp.obj): In
function `Kross::MetaFunction::~MetaFunction()':
> q:/kross/src/core/metafunction.h:128: undefined reference to
`__imp__ZTVN5Kross12MetaFunctionE'
> q:/kross/src/core/metafunction.h:128: undefined reference to
`__imp__ZTVN5Kross12MetaFunctionE'
> CMakeFiles\metafunctiontest.dir/objects.a(metafunctiontest.cpp.obj): In
function `Kross::MetaFunction::MetaFunction(QObject*, QByteArray const&)':
> q:/kross/src/core/metafunction.h:60: undefined reference to
`__imp__ZTVN5Kross12MetaFunctionE'
> collect2.exe: error: ld returned 1 exit status
> Resulting from the call:
> r:\mingw64\bin\g++.exe   -std=c++0x -fno-exceptions -Wall -Wextra
-Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long
-Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual
-Werror=return-type -O2 -g -DNDEBUG  -mwindows -Wl,--whole-archive
CMakeFiles\metafunctiontest.dir/objects.a -Wl,--no-whole-archive  -o
..\bin\metafunctiontest.exe
-Wl,--out-implib,..\lib\libmetafunctiontest.dll.a
-Wl,--major-image-version,0,--minor-image-version,0
@CMakeFiles\metafunctiontest.dir\linklibs.rsp
> (I understand this is not enough debugging information, but hopefully
someone already has a solution off the cuff)
>
> And this is where I'm stumped. I tried to debug this over a couple of
days, and this goes a bit over my head. This was a fun excursion, and I'm
going to leave it at that for now. I'll post a part2 if I ever get around
the last one and the ones that inevitably emerge after it. Do tell me if
some other branch is more functional and mingw friendly. I may have done
something wrong to start with.
> ____________________________
> *1) msys fix for the error: make: command not found [1]
> run msys.bat (in \emerge\portage\dev-util\msys)
> call pacman -Syu
> confirm all prompts
> run autorebase.bat (in \msys )
> call pacman -S base-devel
> select all whem prompted
> start a new command prompt for kdeenv. The bats add some env variables
that may mess up emerge
>
> *2) example fix for libgpg-error-cmake-1.12.diff  (don't copypaste, may
mess up the patch)
> +add_custom_command(OUTPUT ${BIN_DIR}/mkerrcodes.h  COMMAND
${AWK_EXECUTABLE} -f ${SRC_DIR}/mkerrcodes1.awk ${SRC_DIR}/errnos.in >
${BIN_DIR}/_mkerrcodes.h
> +                                                   #COMMAND set
INCLUDE="\"${INCLUDE_STRING}\""
> +                                                   COMMAND
${ERR_COMPILER} -E -P ${BIN_DIR}/_mkerrcodes.h ${NULL_DEVICE} |
"\"${GREP_EXECUTABLE}\"" GPG_ERR_ |
> +
"\"${AWK_EXECUTABLE}\"" -f ${SRC_DIR}/mkerrcodes.awk >
${BIN_DIR}/mkerrcodes.h)
> +add_custom_command(OUTPUT ${BIN_DIR}/mkw32errmap.tab.h COMMAND
${ERR_COMPILER} -E -P -DRESOLVE_MACROS ${SRC_DIR}/mkw32errmap.c
${NULL_DEVICE} | "\"${GREP_EXECUTABLE}\"" \"{&mkw32errmap_marker\" >
${BIN_DIR}/mkw32errmap.tab.h)
>
> references:
> [1] https://bugs.kde.org/show_bug.cgi?id=329856 (msys)
> [2] https://community.kde.org/Calligra/Building_Calligra_on_Windows
> [3] https://bugs.kde.org/show_bug.cgi?id=348061 (doctools)
> [4]
http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgpg-error.git;a=commitdiff;h=c01c8f0c4f55d76b037c7f6aa44ad25ede18d38a
>

-- 
regards, Jaroslaw Staniek

KDE:
: A world-wide network of software engineers, artists, writers, translators
: and facilitators committed to Free Software development - http://kde.org
Calligra Suite:
: A graphic art and office suite - http://calligra.org
Kexi:
: A visual database apps builder - http://calligra.org/kexi
Qt Certified Specialist:
: http://www.linkedin.com/in/jstaniek
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-windows/attachments/20150730/b3aa3e38/attachment-0001.html>


More information about the Kde-windows mailing list