Thank you both!
It seems to have worked.
However I got a new error.... (but later in the script)... And then I fixed that one too...
Seems the dh-translations was still missing... but now I have fixed it....
And managed to compile it!
Thank you both!
It seems to have worked.
However I got a new error.... (but later in the script)... And then I fixed that one too...
Seems the dh-translations was still missing... but now I have fixed it....
And managed to compile it!
I'm trying to find a good way to solve qtmir tests. For the test to work they need a lot of mocks that are based on internal mir stuff. And since they are used directly into mir it is not possible to build wrappers.
Include file | Object | test file | Defined in |
---|---|---|---|
mir/main_loop.h | mir::MainLoop | tests/framework/mock_main_loop.h | src/include/server/mir/main_loop.h |
mir/scene/prompt_session.h | mir::scene::PromptSession | tests/framework/mock_prompt_session.h | src/include/server/mir/scene/prompt_session.h |
mir/scene/surface.h> | mir::scene::Surface | tests/framework/mock_surface.h | src/include/server/mir/scene/surface.h |
mir/shell/persistent_surface_store.h | mir::shell::PersistentSurfaceStore |
tests/framework/mock_persistent_surface_store.h | src/include/server/mir/shell/persistent_surface_store.h |
mir/scene/session.h | mir::scene::Session | tests/framework/mock_mir_session.h | src/include/server/mir/scene/session.h |
So the best solution (or least bad) that I have come up with is...
to move all those mocks to miroil and make them accessible through a MockFactory... Something like:
class MockFactory
{
auto get_mock_surface() -> std::shared_ptr<mir::scene::Surface>;
auto get_mock_main_loop() -> std::shared_ptr<mir::MainLoop>;
auto get_mock_prompt_session() -> std::shared_ptr<mir::scene::PromptSession>;
auto get_mock_persistent_surface_store() -> std::shared_ptr<mir::shell::PersistentSurfaceStore>;
auto get_mock_session() -> std::shared_ptr<mir::scene::Session>;
std::shared_ptr<mir::scene::Surface> surfaces;
std::shared_ptr<mir::MainLoop> main_loops;
std::shared_ptr<mir::scene::PromptSession> prompt_sessions;
std::shared_ptr<mir::shell::PersistentSurfaceStore> persistent_surface_stores;
std::shared_ptr<mir::scene::Session> sessions;
};
The problem is that qtmir does not know the destructor of this objects, to they will have to be deleted inside miroil.
Therefore I have added a reference in MockFactor to the objects. Which are deleted by MockFactory. This will only work if MockFactory is the last object to be deleted, so we have to make sure it is.
So do you guys see any better solutions than this?
Hi!
I'm trying to get the crossbuilder working on the example in the documentation. But I'm stuck on an some thing to do with mk-build-deps??
So I'm using qemu/kvm running Ubuntu 18.04.3.... fresh install...
crossbuilder setup-lxd
cd ~/src/git/address-book-app
Then
bash -x crossbuilder
a lot of output... but the last command is:
+ lxc exec address-book-app-usdk-16-04-amd64-armhf-dev -- sh -c 'mk-build-deps -t '\''apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y'\'' -i --host-arch armhf /home/demo/patched_debian_control'
dpkg-architecture: warning: specified GNU system type arm-linux-gnueabihf does not match CC system type x86_64-linux-gnu, try setting a correct CC environment variable
dh_testdir
dh_testroot
dh_prep
dh_testdir
dh_testroot
dh_install
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dpkg-gencontrol: warning: File::FcntlLock not available; using flock which is not NFS-safe
dh_gencontrol debug symbol wrapper: all non-arch-all packages for this build platform armhf: address-book-app-cross-build-deps
dh_gencontrol debug symbol wrapper: packages to act on: address-book-app-cross-build-deps
dh_gencontrol debug symbol wrapper: ignored packages:
dh_gencontrol debug symbol wrapper: no debian/address-book-app-cross-build-deps-dbgsym, skipping package address-book-app-cross-build-deps
dh_md5sums
dh_builddeb
dpkg-deb: building package 'address-book-app-cross-build-deps' in '../address-book-app-cross-build-deps_1.0_armhf.deb'.
The package has been created.
Attention, the package has been created in the current directory,
not in ".." as indicated by the message above!
Selecting previously unselected package address-book-app-cross-build-deps:armhf.
(Reading database ... 53932 files and directories currently installed.)
Preparing to unpack address-book-app-cross-build-deps_1.0_armhf.deb ...
Unpacking address-book-app-cross-build-deps:armhf (1.0) ...
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies...Starting pkgProblemResolver with broken count: 1
Starting 2 pkgProblemResolver with broken count: 1
Investigating (0) address-book-app-cross-build-deps [ armhf ] < 1.0 > ( devel )
Broken address-book-app-cross-build-deps:armhf Depends on dh-translations [ armhf ] < none -> > ( none )
Removing address-book-app-cross-build-deps:armhf because I can't find dh-translations:armhf
Done
Done
Starting pkgProblemResolver with broken count: 0
Starting 2 pkgProblemResolver with broken count: 0
Done
The following additional packages will be installed:
libgl1-mesa-dev:armhf libgl1-mesa-glx:armhf mesa-common-dev:armhf
The following packages will be REMOVED:
address-book-app-cross-build-deps:armhf
The following NEW packages will be installed:
libgl1-mesa-dev:armhf libgl1-mesa-glx:armhf mesa-common-dev:armhf
0 upgraded, 3 newly installed, 1 to remove and 16 not upgraded.
1 not fully installed or removed.
Need to get 666 kB of archives.
After this operation, 4218 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports xenial-updates/main armhf libgl1-mesa-glx armhf 18.0.5-0ubuntu0~16.04.1 [118 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports xenial-updates/main armhf mesa-common-dev armhf 18.0.5-0ubuntu0~16.04.1 [543 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports xenial-updates/main armhf libgl1-mesa-dev armhf 18.0.5-0ubuntu0~16.04.1 [4466 B]
Fetched 666 kB in 2s (332 kB/s)
(Reading database ... 53936 files and directories currently installed.)
Removing address-book-app-cross-build-deps:armhf (1.0) ...
Selecting previously unselected package libgl1-mesa-glx:armhf.
(Reading database ... 53932 files and directories currently installed.)
Preparing to unpack .../libgl1-mesa-glx_18.0.5-0ubuntu0~16.04.1_armhf.deb ...
Unpacking libgl1-mesa-glx:armhf (18.0.5-0ubuntu0~16.04.1) ...
Selecting previously unselected package mesa-common-dev:armhf.
Preparing to unpack .../mesa-common-dev_18.0.5-0ubuntu0~16.04.1_armhf.deb ...
Unpacking mesa-common-dev:armhf (18.0.5-0ubuntu0~16.04.1) ...
Selecting previously unselected package libgl1-mesa-dev:armhf.
Preparing to unpack .../libgl1-mesa-dev_18.0.5-0ubuntu0~16.04.1_armhf.deb ...
Unpacking libgl1-mesa-dev:armhf (18.0.5-0ubuntu0~16.04.1) ...
Processing triggers for libc-bin (2.23-0ubuntu11) ...
Setting up libgl1-mesa-glx:armhf (18.0.5-0ubuntu0~16.04.1) ...
update-alternatives: using /usr/lib/arm-linux-gnueabihf/mesa/ld.so.conf to provide /etc/ld.so.conf.d/arm-linux-gnueabihf_GL.conf (arm-linux-gnueabihf_gl_conf) in auto mode
Setting up mesa-common-dev:armhf (18.0.5-0ubuntu0~16.04.1) ...
Setting up libgl1-mesa-dev:armhf (18.0.5-0ubuntu0~16.04.1) ...
Processing triggers for libc-bin (2.23-0ubuntu11) ...
mk-build-deps: Unable to install address-book-app-cross-build-deps at /usr/bin/mk-build-deps line 402.
mk-build-deps: Unable to install all build-dep packages
+ rm -r /tmp/crossbuilder.caWdHt
any ideas?
@alan_g Okey good, I'll start by upstream what is left, and then return to the test after that.
I'm trying to find a good way to solve qtmir tests. For the test to work they need a lot of mocks that are based on internal mir stuff. And since they are used directly into mir it is not possible to build wrappers.
Include file | Object | test file | Defined in |
---|---|---|---|
mir/main_loop.h | mir::MainLoop | tests/framework/mock_main_loop.h | src/include/server/mir/main_loop.h |
mir/scene/prompt_session.h | mir::scene::PromptSession | tests/framework/mock_prompt_session.h | src/include/server/mir/scene/prompt_session.h |
mir/scene/surface.h> | mir::scene::Surface | tests/framework/mock_surface.h | src/include/server/mir/scene/surface.h |
mir/shell/persistent_surface_store.h | mir::shell::PersistentSurfaceStore |
tests/framework/mock_persistent_surface_store.h | src/include/server/mir/shell/persistent_surface_store.h |
mir/scene/session.h | mir::scene::Session | tests/framework/mock_mir_session.h | src/include/server/mir/scene/session.h |
So the best solution (or least bad) that I have come up with is...
to move all those mocks to miroil and make them accessible through a MockFactory... Something like:
class MockFactory
{
auto get_mock_surface() -> std::shared_ptr<mir::scene::Surface>;
auto get_mock_main_loop() -> std::shared_ptr<mir::MainLoop>;
auto get_mock_prompt_session() -> std::shared_ptr<mir::scene::PromptSession>;
auto get_mock_persistent_surface_store() -> std::shared_ptr<mir::shell::PersistentSurfaceStore>;
auto get_mock_session() -> std::shared_ptr<mir::scene::Session>;
std::shared_ptr<mir::scene::Surface> surfaces;
std::shared_ptr<mir::MainLoop> main_loops;
std::shared_ptr<mir::scene::PromptSession> prompt_sessions;
std::shared_ptr<mir::shell::PersistentSurfaceStore> persistent_surface_stores;
std::shared_ptr<mir::scene::Session> sessions;
};
The problem is that qtmir does not know the destructor of this objects, to they will have to be deleted inside miroil.
Therefore I have added a reference in MockFactor to the objects. Which are deleted by MockFactory. This will only work if MockFactory is the last object to be deleted, so we have to make sure it is.
So do you guys see any better solutions than this?
Hi!
I still haven't got write permission to qtmir... Need it to create a branch... I tried forking the project but that does not work since i have already forked ubports/qtmir. I can't fork it more that once.
Can you fix that?
Okey... Shall I wait until you have updated it to 20.04? or can I start now?
What do you think?
Github id is: 58894514 (erlend-g)
Hi! I've started working on this... How should I work with this?
Create a branch and then send you PR? Or push changes directly into miroil branch?
Any way I don't have permission to push to a new branch....
Thank you, but I'm not so sure...
The Ubports version is changed compared to standard version... Particularly when it come to this function's return value... So I'm hoping the ubports change is what I need.
So I'm now trying to compile ubports version of mir... And the try it (but it's a lot to compile and there are include files missing)... So it takes a while....
So I try that first, before venturing into the kernel.
Hi!
I'm trying to get unity-system-compositor running on fedora rawhide for the pinephone. But it can't find the graphics driver.
The output is as follows:
[2020-07-14 07:12:00.243498] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card0 supports KMS, continuing with lower confidence
[2020-07-14 07:12:01.176468] <information> mirserver: Found graphics driver: mir:mesa-kms (version 1.7.2) Support priority: 128
[2020-07-14 07:12:01.176649] <information> mirserver: Found graphics driver: mir:wayland (version 1.7.2) Support priority: 0
[2020-07-14 07:12:01.185971] <information> mirserver: Found graphics driver: mir:mesa-x11 (version 1.7.2) Support priority: 0
[2020-07-14 07:12:01.187255] <information> mirserver: Selected driver: mir:mesa-kms (version 1.7.2)
[2020-07-14 07:12:01.189450] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card0 supports KMS, but continuing anyway
[2020-07-14 07:12:01.189602] <information> mesa-kms: Using DRM device /dev/dri/card0
[2020-07-14 07:12:01.190084] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card1 supports KMS, but continuing anyway
[2020-07-14 07:12:01.190189] <information> mesa-kms: Using DRM device /dev/dri/card1
ERROR: ../src/platforms/common/server/kms-utils/drm_mode_resources.cpp(41): Throw in function mir::graphics::kms::DRMModeResUPtr {anonymous}::resources_for_drm_node(int)
Dynamic exception type: boost::wrapexceptstd::system_error
std::exception::what: Couldn't get DRM resources: Operation not supported
Compare to the UT version...
[2020-07-14 13:24:46.198721] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card1 supports KMS, checking using fallback method
[2020-07-14 13:24:46.199004] <information> mesa-kms: Using DRM device /dev/dri/card1
[2020-07-14 13:24:46.202459] < -warning- > mesa-kms: Failed to detect whether device /dev/dri/card0 supports KMS, checking using fallback method
[2020-07-14 13:24:46.205636] <information> mesa-kms: Ignoring non-KMS DRM device /dev/dri/card0
[2020-07-14 13:24:46.656012] < - debug - > mesa-kms: No EDID data available on connector 50
[2020-07-14 13:24:46.659572] < -warning- > mesa-kms: Unable to determine the current display mode.
[2020-07-14 13:24:46.676697] <information> mesa-kms: DRM device details:
[2020-07-14 13:24:46.676959] <information> mesa-kms: /dev/dri/card1: using driver sun4i-drm [Allwinner sun4i Display Engine] (version: 1.0.0 driver date: 20150629)
[2020-07-14 13:24:46.677164] <information> mesa-kms: Output: DSI-1 (connected)
[2020-07-14 13:24:46.677261] <information> mesa-kms: Mode: 720×1440@55.31
[2020-07-14 13:24:46.677672] < -warning- > mesa-kms: drmModeCrtcSetGamma failed: Invalid argument
[2020-07-14 13:24:46.699166] <information> mesa-kms: Detected single-GPU DisplayBuffer. Rendering will be sent directly to output
[2020-07-14 13:24:47.161588] <information> mirserver: Using hardware cursor
any ideas?
Is there a difference in the driver between megi's kernel and UT version? Or is there a difference between Mir 1.8.0(Fedora) and Mir 1.8.0 (UT)?
And why is the UT version writing "checking using fallback method" while fedora is writing ", but continuing anyway"
Hi!
I just want to push back a little about some thing Florian said in the chat. That in the future pinephone image will be readonly to protect people from destroying it using apt...
I just think that would be a mistake...
I think all the distros have a tunnel vision... You are so focused on developing os for a phone... you are forgetting that that a free and open linux phone can be use for many other things...
For instance it can also double as your desktop computer (through the display port). Developing and testing apps for the phone on the phone.