I recompiled the latest appimage using the packaging script. Krita starts correctly but no keyboard stroke is taken into account (not even Ctrl). Comparing the files in the official and the rebuilt images, besides an additional krita.wrapper, locales moved to /use/share/krita/local/, different (rebuilt) Krita binaries and system security updates, I don't see anything suspicious. All differing files are binaries, system configuration files are hence identical. Reproducible: Always Steps to Reproduce: docker pull centos:6 (cd src/ && git checkout krita/3.0.1) docker run -ti -v $(pwd)/src:/krita centos:6 /bin/bash cd /krita/packaging/linux/appimage/ bash build-deps.sh # 2h45mn, 5-6GB docker commit XXXXXX # 3-4mn docker tag YYYYYY krita-deps docker run -ti -v $(pwd)/src:/krita -v $(pwd)/build:/krita_build -v $(pwd)/out:/out krita-deps /bin/bash bash build-krita.sh # 1h yum install mesa-libGLU-devel bash build-image.sh # 10mn ./out/krita-3.0.1-cab6520-x86_64.appimage Actual Results: $ ./krita-3.0.1-cab6520-x86_64.appimage QCoreApplication::arguments: Please instantiate the QApplication object first krita.lib.pigment: Compiled for arch: 7 krita.lib.pigment: Features supported: krita.lib.pigment: "SSE2" --- yes krita.lib.pigment: "SSSE3" --- yes krita.lib.pigment: "SSE4.1" --- yes krita.lib.pigment: "AVX " --- yes krita.lib.pigment: "AVX2 " --- yes xkbcommon: ERROR: failed to add default include path auto Qt: Failed to create XKB context! Use QT_XKB_CONFIG_ROOT environmental variable to provide an additional search path, add ':' as separator to provide several search paths and/or make sure that XKB configuration data directory contains recent enough contents, to update please see http://cgit.freedesktop.org/xkeyboard-config/ . OpenGL Info Vendor: Intel Open Source Technology Center Renderer: Mesa DRI Intel(R) Haswell Mobile Version: 3.0 Mesa 11.2.2 Shading language: 1.30 Requested format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 2) Current format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 0) krita has opengl true Setting XDG_DATA_DIRS "/tmp/.mount_2HvQo0/usr/bin/../share:./share/:/usr/share/mate:/usr/local/share/:/usr/share/" Available translations QSet("en_US") Available domain translations QSet("en_US") Override language: "" KoJsonTrader will load its plugins from "/tmp/.mount_2HvQo0/usr/lib/kritaplugins" libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles KoJsonTrader will load its plugins from "/tmp/.mount_2HvQo0/usr/lib/kritaplugins" Note the 2 lines about xkb errors. Expected Results: Taking into account keyboard key strokes. For reference the output of the official build : $ ./krita-3.0.1-x86_64.appimage QCoreApplication::arguments: Please instantiate the QApplication object first krita.lib.pigment: Compiled for arch: 7 krita.lib.pigment: Features supported: krita.lib.pigment: "SSE2" --- yes krita.lib.pigment: "SSSE3" --- yes krita.lib.pigment: "SSE4.1" --- yes krita.lib.pigment: "AVX " --- yes krita.lib.pigment: "AVX2 " --- yes OpenGL Info Vendor: Intel Open Source Technology Center Renderer: Mesa DRI Intel(R) Haswell Mobile Version: 3.0 Mesa 11.2.2 Shading language: 1.30 Requested format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 2) Current format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 0) krita has opengl true Setting XDG_DATA_DIRS "/tmp/.mount_ThAHpL/usr/bin/../share:./share/:/usr/share/mate:/usr/local/share/:/usr/share/" Available translations QSet("ne", "cs", "ta", "sq", "tr", "he", "gl", "sv", "en_GB", "eu", "uz@cyrillic", "pl", "sk", "hu", "ia", "es", "bg", "nds", "et", "de", "ms", "fr", "tg", "hr", "mr", "fy", "ar", "mk", "en_US", "be", "uk", "da", "mai", "ro", "nb", "fi", "wa", "bs", "ko", "oc", "xh", "ga", "kk", "hi", "br", "zh_TW", "km", "nl", "is", "lv", "hne", "nn", "ru", "af", "ast", "ca", "ja", "it", "eo", "uz", "pt_BR", "pt", "zh_CN", "pa", "fa", "th", "ug", "sl", "ca@valencia", "vi", "se", "el", "cy", "lt") Available domain translations QSet("ne", "cs", "ta", "sq", "tr", "he", "gl", "sv", "en_GB", "eu", "uz@cyrillic", "pl", "sk", "hu", "ia", "es", "bg", "nds", "et", "de", "ms", "fr", "tg", "hr", "mr", "fy", "ar", "mk", "en_US", "be", "uk", "da", "mai", "ro", "nb", "fi", "wa", "bs", "ko", "oc", "xh", "ga", "kk", "hi", "br", "zh_TW", "km", "nl", "is", "lv", "hne", "nn", "ru", "af", "ast", "ca", "ja", "it", "eo", "uz", "pt_BR", "pt", "zh_CN", "pa", "fa", "th", "ug", "sl", "ca@valencia", "vi", "se", "el", "cy", "lt") Override language: "" KoJsonTrader will load its plugins from "/tmp/.mount_ThAHpL/usr/lib/kritaplugins" libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles KoJsonTrader will load its plugins from "/tmp/.mount_ThAHpL/usr/lib/kritaplugins" Incidentally I'm surprised the appimage takes 10 full minutes (on SSD disk) of doing some massive search and copies for a mere ~100M archive. Hopefully that was normal.
It's normal. It checks all the libraries in the appdir and copies the dependencies recursively. I don't use docker, I use a plain centos 6.7 vm. I'm not sure what the differences are: you will have to investigate that yourself, since I don't have this issue with exactly the same script.
When the user runs a build script in a clean environment and gets an incorrect result, this usually is a problem with the script, not the user's fault. This could be a missing base dependency that is installed with a common install of CentOS, but not in a tight environment such as the 70MB Docker image. Aka, like #368624, a missing build dependency. Before I try anything, any specifics about your centos vm installation?
Of course it must be a difference between your docker and the vm I use. I download the default CentOS-6.8-x86_64-bin-DVD1.iso and install it in VirtualBox. I use the plain gnome desktop install so I've got a terminal and a browser, and then I run the scripts.
Hi, I downloaded and installed CentOS-6.8-x86_64-bin-DVD1.iso, with the default Desktop install target (Gnome). I noted that mesa-libGLU-devel is not installed by default : $ rpm -q mesa-libGLU-devel package mesa-libGLU-devel is not installed So maybe I didn't make the same install as you, or you installed that package manually at a point? I also noticed this when in the build-deps.sh step, ext_qt part: xkbcommon-x11........... yes (bundled copy, XKB config root: /usr/share/X11/xkb) xkbcommon-evdev......... no Is that the normal, with regard to the xkbcommon dependency?
> Is that the normal, with regard to the xkbcommon dependency? For instance, the result of this comment on your build environment would help :) # rpm -qa | grep xkb
[root@krita-builder out]# rpm -qa | grep xkb libxkbfile-1.0.6-1.1.el6.x86_64 xorg-x11-xkb-utils-7.7-12.el6.x86_64 [root@krita-builder out]# rpm -qa | grep GLU mesa-libGLU-11.0.7-4.el6.x86_64
OK so it doesn't come from these packages. Now, I could rebuild an appimage with a working keyboard from a CentOS VM. By comparing the build output I noted 2 discrepancies with the slimmer (docker) CentOS environment, both in the early 'ext_qt' configuration phase: 1) Iconv .................. yes Iconv .................. no Note that this happens before ext_iconv is built. This is also an issue when building AppImageKit : [ 75%] Building C object CMakeFiles/runtime.dir/runtime.c.o Linking C executable runtime libisofs.a(isofs.c.o): In function `isofs_fix_entry': /AppImageKit/isofs.c:604: undefined reference to `libiconv_open' /AppImageKit/isofs.c:621: undefined reference to `libiconv' /AppImageKit/isofs.c:628: undefined reference to `libiconv_close' /AppImageKit/isofs.c:647: undefined reference to `libiconv_close' collect2: error: ld returned 1 exit status make[2]: *** [runtime] Error 1 make[1]: *** [CMakeFiles/runtime.dir/all] Error 2 make: *** [all] Error 2 fatal: No tags can describe 'd5fcf2e4d8b50361585e1c7d9ffa9143bc852065'. Try --always, or create some tags. /AppImageKit + cd / + ln -sf /usr/share/pkgconfig /usr/lib/pkgconfig Note that this AppImageKit build error is ignored, btw. This is fixed by installing: $ yum install glibc-devel 2) xkbcommon-x11........... yes (bundled copy, XKB config root: /usr/share/X11/xkb) xkbcommon-x11........... yes (bundled copy, XKB config root: not found) This looks like the keyboard source issue. This is fixed by installing: $ yum install xkeyboard-config I'm trying a full rebuild now, if this works I'll produce a patch.
Created attachment 101125 [details] appimage: add missing build dependencies to fix lack of keyboard support when building from minimal CentOS environment appimage: add missing build dependencies to fix lack of keyboard support when building from minimal CentOS environment
Created attachment 101126 [details] appimage: do not remove previously built appimages appimage: do not remove previously built appimages
Created attachment 101127 [details] appimage: add documentation appimage: add documentation
Build now works from a minimal CentOS such as Docker's :) Attached are 3 patched: - adding missing QT build dependencies - avoid clearing /out/* since I lost all my previous builds :/ - add documentation I would recommend pushing it to krita/3.0.1 along with fe518206866a6cffdc64903ce3bf18b5e7a80867 2ac3c47e3ba91005143f4b59768f4e235e6d6762 so that people checking out the stable branch get a fully-working script. Cheers!
I'm wondering, being a docker newbie, in the docker instructions, what do the XXXXXX and YYYYY stand for?
Git commit 0397774143eefb1a1f19cf561176f1d28c8428af by Boudewijn Rempt. Committed on 17/09/2016 at 07:19. Pushed by rempt into branch 'master'. Apply Beuc's patches to the appimage build script A +42 -0 packaging/linux/appimage/README.txt M +1 -1 packaging/linux/appimage/build-deps.sh http://commits.kde.org/krita/0397774143eefb1a1f19cf561176f1d28c8428af
Thanks for reviewing the patches. XXX and YYY are 2 git-commit-like identifiers. Point is : when you start a Docker image, quit, then restart the image again, the environment is completely reset, so when you want to save your changes you: - commit the last XXX container identifier (displayed in the command prompt or in 'docker ps -a'); this displays the new image id YYY - tag YYY with a descriptive name Still wanting to remove out/* btw?