banji-project / ring-issues

Old issues before it was moved to kde.org
0 stars 0 forks source link

global user registration fails + packaging discussion #8

Closed star-buck closed 7 years ago

star-buck commented 7 years ago

i always get this error (red error timeout) after a while when trying to register a new available global username: screenshot_20170421_165027

Now my network works fine, and i have added a local account already, so not sure why it fails to have a global account.

Elv13 commented 7 years ago

(edit: are you sure the ring-lrc is the work5 branch of my GitHub fork?)

I tried to reproduce a hundred time and it all worked. Before I create more VMs and start testing improbable causes, I would like you to attach (or email) me some debug logs. Anyway, if you are to report more issues, the logs are needed/helpful/save_time, so better start with this issue.

Whatever is different on your system isn't visible in the screenshot, so it will take a little more data to figure this one out. I guess if you show this screenshot, then it was a timeout. Otherwise it would have displayed a more relevant error message in red after a while. The bad thing about timeouts is that there is an endless way to get them, so it takes many logs to pinpoint the cause. Here's less or more what can cause a timeout:

image

To debug this, I need those logs:

The daemon and client logs

killall ring-kde
killall dring
killall dring
killall dring
# note that `export  SIPLOGLEVEL=4` is required for some bugs, but not this one
$(find /usr -iname dring -type f) -c -d

# in another term
ring-kde

(note that upstream disable debug by default, so systemd journalctl wont help)

The IPC log

sudo apt install bustle # many deps, I know
bustle
# do a capture
# save it
# grep to make sure no personal data got leaked, if yes, replace them

Packets

I don't think this is relevant for this bug. So we can skip it.

Off topic

Also, here's a pedantic terminology note. Ring account cannot be called "local" or "global". A local account exists in Ring-KDE for something else (DNS based SIP LAN communications). Upstream calls what you call "global" "registered".

Registered and unregistered Ring accounts are 100% the same thing. Same protocol, same files, same handshake, same network, everything. Except that a registered one has been declared to a naming directory service to map the username to the public key. Beside that, unregistered account can call registered ones and vice-versa[1]. Registration is a layer on top of the account, not something about the account itself. Just saying that because you can test the video even if the registration failed.

Oh, and I fixed the white-on-white label bug. I use a dark color theme, I should have been more careful during testing.

[1] Using the ring:01234567890abcdef number at the bottom of the Ring-KDE client. That's your "phone number".

star-buck commented 7 years ago

Regarding registered/unregistered: Is it still tested if a chosen username is already "in use", even if one doesnt want it to be (globally) registered?

Elv13 commented 7 years ago

Regarding registered/unregistered: Is it still tested if a chosen username is already "in use", even if one doesnt want it to be (globally) registered?

No. Unregistered (and registered) accounts have a profile where you can write pretty much anything you want, including a name that's already registered by somebody else. For example, there might be more than one Clemens in the world. A person name isn't unique and may infringe on a trademark or other people name. Unregistered accounts don't have exported named identifiers, they only have an phone number (Ring ID) instead of both a registered name and a phone number. The name in the account page is just a random string to differentiate between accounts, it is local. Doing this test would make little sense.

If you wish, I can implement a client side check if the display name used in a call corresponds to a registered name. Preventing users to set their own (conflicting) name in the profile makes little sense.

star-buck commented 7 years ago

So the unregistered username IS local?

star-buck commented 7 years ago

Imo thats an important information then, as it might be otherwise not clear to a new user that local usernames cannot be found by their string by other participants, or worse, if a globally registered username exists by another participant, that one will be called instead.

So it differs to lets say a nonregistered IRC handle, which still acts as a globally unique identifier, just not registered yet, so someone else could challenge it.

Elv13 commented 7 years ago

So the unregistered username IS local?

Not really. To understand why, you first need to understand how Ring/Tox/Blink are different from a web service.

The key is the decentralized aspect. I will quote my blog post here:

* Centralized service: A service where all request pass through a single entity. Such services include 
Skype, Facebook and Google Hangout. While it is possible to implement client to client encryption 
with Diffie-Hellman on top of the service, the vast majority don’t and use term of services to notify the 
user about how they decide to use your personal information.

* Federated service: A service where different provider can setup their own node and communicate 
with each other. This include DNS, HTTP, Jabber/XMPP, Diaspora and emails. Their still require 
some “fix” components and infrastructure to locate and communicate with each others. All the data is 
often seen unencrypted by all the nodes involved if no additional security layer is implemented of top 
of the base protocol. You have to trust all nodes involved, something that is, in practice, impossible 
given the potentially infinite number of nodes.

* Decentralized: Each client is part of a cloud of “equal” clients. No centralized node is required. Order 
can be created momentarily out of the relative chaos and each clients are responsible to be “good 
citizen”. The most common “protocol” for this is called DHT (distributed hash table) The most well 
known example of this are recent Bittorrent clients, many scientific cluster software and some 
malwares. Privacy and security is left in the hand of each client and handled locally. Correctly 
implemented, only basic network metadata is being “leaked”. Even then, it is only available to your 
ISP.

Both unregistered and registered accounts never leave the device(s). They are local files and are copied only when another device import another one (using a side channel, /offtopic). The trick to be able to call someone else is that each device listen on the "bittorrent" network for "I want to talk to this phone number, to reach me, ask to talk to " and they start listening to that secret key. Once the client answer this request, they will share their IPs and connect. They will then use cryptographic authentication to validate that the phone number (Ring ID) really belong to the person that answered the request (/offtopic security handshake).

The name registration only attach a string (name) to a phone number, nothing else. This is exactly the same as an old paper addressbook, expect it's digital, cryptographically signed and shared by many users.

To wrap this up, the account are stored locally, but their phone number (RingID) are part of the global "BitTorrent (DHT) cloud" when the clients are open (like an unregistered IRC username). Therefor they cannot be called local or global as both terms would be misleading. It is why I suggest registered and unregistered to be used instead.

If you wish, I can write a blog post about this and add the information to the Ring-KDE user documentation.

Imo thats an important information then, as it might be otherwise not clear to a nrw user that local usernames cannot be found by their string by other participants, or worse, if a globally registered username exists by another participant, that one will be called instead.

The wizard doesn't ask such name when the checkbox isn't checked. It uses the Linux username as the alias, but never claims it can be reached. However, I do agree a clear message in the wizard would be useful to avoid the confusion. I will take care of that Monday.

star-buck commented 7 years ago

Well, I know how it works.

I never referred to stored local or global, only if validity is local or global.

So it is true that a nonregistered username has no global validity, but a registered username has (no need to do a blogpost about it, we should concentrate to make this intuitive understandable for anyone using ring-kde first time). It would imo help to simply put a (*) behind the checkbox for registering the username, which simply states:

(*) registered users can also be reached by their username in addition to the generated ring-id number.

That should make it clearer.

shadeslayer commented 7 years ago

Hi Here's my log files :

dring logs

netrunner@netrunner-pc:~$ /usr/lib/ring/dring -dc
Ring Daemon 3.0.0, by Savoir-faire Linux 2004-2017
http://www.ring.cx/
[Video support enabled]

[1493049329.599|21751|account_factory.cpp:40  ] registered SIP account
[1493049329.599|21751|account_factory.cpp:43  ] registered RING account
[1493049329.599|21751|ringbufferpool.cpp:115  ] Ringbuffer created with id 'audiolayer_id'
[1493049329.599|21751|manager.cpp:649         ] Not initialized
[1493049329.599|21751|manager.cpp:649         ] Not initialized
17:55:29.600 os_core_unix.c !pjlib 2.5.5 for POSIX initialized
[1493049329.600|21751|manager.cpp:698         ] pjsip version 2.5.5 for x86_64-pc-linux-gnu initialized
[1493049329.600|21751|manager.cpp:701         ] GNU TLS version 3.5.8 initialized
[1493049329.600|21751|ice_transport.cpp:87    ] [ice] added host stun server
[1493049329.600|21751|ice_transport.cpp:87    ] [ice] added host stun server
[1493049329.600|21751|manager.cpp:708         ] Configuration file path: /home/netrunner/.config/ring/dring.yml
[1493049329.600|21751|manager.cpp:420         ] Could not open configuration file
[1493049329.601|21751|pulselayer.cpp:153      ] Waiting....
[1493049329.601|21753|pulselayer.cpp:153      ] Waiting....
[1493049329.602|21753|pulselayer.cpp:153      ] Waiting....
[1493049329.602|21753|pulselayer.cpp:157      ] Connection to PulseAudio server established
[1493049329.602|21753|pulselayer.cpp:186      ] Updating PulseAudio sink list
[1493049329.602|21753|pulselayer.cpp:202      ] Updating PulseAudio source list
[1493049329.602|21753|pulselayer.cpp:218      ] Updating PulseAudio server infos
[1493049329.603|21753|pulselayer.cpp:635      ] PulseAudio server info:
    Server name: pulseaudio
    Server version: 10.0
    Default Sink alsa_output.pci-0000_00_04.0.analog-stereo
    Default Source alsa_input.pci-0000_00_04.0.analog-stereo
    Default Sample Specification: s16le 2ch 44100Hz
    Default Channel Map: front-left,front-right

[1493049337.998|21751|namedirectory.cpp:333   ] Could not load /home/netrunner/.cache/ring/namecache/ns.ring.cx
[1493049338.004|21751|namedirectory.cpp:178   ] Name lookup for netrunner: http://ns.ring.cx/name/netrunner
[1493049340.154|21775|namedirectory.cpp:184   ] Name lookup for netrunner: got reply code 404
[1493049417.236|21751|manager.cpp:769         ] Hangup 0 remaining call(s)
[1493049417.236|21751|manager.cpp:1762        ] Saving Configuration to XDG directory /home/netrunner/.config/ring/dring.yml

Unfortunately bustle is broken in Debian at the moment making capturing dbus logs a bit more difficult, I'll see what I can do

shadeslayer commented 7 years ago

Here's the zipped bustle log ring-kde.bustle.zip

shadeslayer commented 7 years ago

FWIW we're using ring-lrc from the last ring bundle release 20170412.1.f0ec025 with the patches from the work5 branch on top.

Elv13 commented 7 years ago

I did a lot of testing today and could not reproduce this issue.

Umm, according to the log, there was no attempt to create an account at all. Can you include the ring-kde log too?

Here's the .deb I used for this video:

https://www.youtube.com/watch?v=7dImzQYx4mY&feature=youtu.be

foo.zip (there's a .deb inside, GitHub only accept images, logs and zip)

The netrunner vm is just the LiveCD. The package is generated by my local Jenkins.

Can you try to replicate exactly this? Also, I just pushed another change. If the ring-lrc is fetched from git (yes, I know you don't want that, but lets find why it doesn't work first), it will use a static library. This remove many potential system corner case.

FYI

[1493049338.004|21751|namedirectory.cpp:178 ] Name lookup for netrunner: http://ns.ring.cx/name/netrunner [1493049340.154|21775|namedirectory.cpp:184 ] Name lookup for netrunner: got reply code 404

Is normal, this is the check to see if the username is already taken. 404 means it's available.

Edit: as for the bustle log, it doesn't open on my system (or a netrunner vm)... (that app is buggy) (edit2: in wireshark, it confirms that the next button was never clicked)

shadeslayer commented 7 years ago

I used bustle from here to capture and display the logs.

shadeslayer commented 7 years ago

ring-kde logs

QMetaType::registerTypedef: -- Type name 'Account*' previously registered as typedef of 'Account*' [1056], now registering as typedef of 'const Account*' [1058].
Updating all accounts
QQmlExpression: Expression qrc:/CreateRing.qml:102:19 depends on non-NOTIFYable properties:
    WelcomeDialog::defaultUserName
qrc:/StartingPageForm.ui.qml:89: ReferenceError: tabBar is not defined
qrc:/ImportRing.qml:119: ReferenceError: item1 is not defined
Registered Name found. Account: "" status: 2 name: "netrunner"
registered name found for unknown account ""
qrc:/CreateRing.qml:54: TypeError: Property 'getSimilarAliasIndex' of object AccountModel(0x55fd0d540b70) is not a function
shadeslayer commented 7 years ago

As far as I can tell clicking the next button does logs more of this error

qrc:/CreateRing.qml:54: TypeError: Property 'getSimilarAliasIndex' of object AccountModel(0x55fd0d540b70) is not a function
shadeslayer commented 7 years ago

I triggered another build with the changes you mentioned, log here. I don't see anything about ring-lrc being fetched from git BTW.

Is there a raw dbus call I can do to register a global username that I can try out? Or some sort of minimal test case I can run?

shadeslayer commented 7 years ago

@Elv13 Does ring-lrc from your work5 branch not install any libs? This log indicates that no libs were installed.

The log also indicates a issue with finding the ring-daemon I think

00:03:40.957 -- Ring library path is ring_BIN-NOTFOUND

Maybe the find_library call for the ring binary should be changed to a call to find_program dring ?

Elv13 commented 7 years ago

Hello,

qrc:/CreateRing.qml:54: TypeError: Property 'getSimilarAliasIndex' of object AccountModel(0x55fd0d540b70) is not a function

@shadeslayer: this looks like a packaging problem to me. Can you try with the package I added above (really)? Note the the head the of the work5 branch is currently 63bf0f8871f78661ddbcfce19fe9c7cb27f4c1a6. The issue here is that your system doesn't seem to have 750ef59d8d88653357863d822dc40060978792b4, which I added Friday (it wasn't required before that, so there is a clear mismatch).

@Elv13 Does ring-lrc from your work5 branch not install any libs? This log indicates that no libs were installed.

Depending on how it's built, it can generate only a static .a. The last commit I added was to pseudo force that. Neither me nor upstream wants libringclient.so to be installed. LRC API is not stable and a client only work with a specific commit of it. As far as "it doesn't install anything", I cannot reproduce that using the default settings (but can using ENABLE_STATIC=true):

-- Installing: /home/lepagee/prefix/lib/libringclient.so.1.0.0
-- Installing: /home/lepagee/prefix/lib/libringclient.so
-- Installing: /home/lepagee/prefix/include/libringclient/account.h
shadeslayer commented 7 years ago

@Elv13 This is what I see when installing ring-lrc in my packaging :

00:10:48.856 -- Install configuration: "None"
00:10:48.857 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/device.h
00:10:48.857 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/devicemodel.h
00:10:48.858 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/sourcemodel.h
00:10:48.858 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/renderer.h
00:10:48.859 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/resolution.h
00:10:48.860 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/channel.h
00:10:48.860 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/rate.h
00:10:48.860 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/previewmanager.h
00:10:48.860 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/video/configurationproxy.h
00:10:48.861 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/audio/alsapluginmodel.h
00:10:48.861 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/audio/inputdevicemodel.h
00:10:48.862 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/audio/managermodel.h
00:10:48.862 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/audio/outputdevicemodel.h
00:10:48.862 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/audio/ringtonedevicemodel.h
00:10:48.863 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/audio/settings.h
00:10:48.864 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/media.h
00:10:48.865 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/audio.h
00:10:48.865 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/video.h
00:10:48.866 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/text.h
00:10:48.866 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/file.h
00:10:48.867 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/recording.h
00:10:48.867 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/avrecording.h
00:10:48.867 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/textrecording.h
00:10:48.868 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/media/recordingmodel.h
00:10:48.869 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/extensions/presencecollectionextension.h
00:10:48.869 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/extensions/securityevaluationextension.h
00:10:48.870 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/accountlistcolorizeri.h
00:10:48.870 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/contactmethodselectori.h
00:10:48.871 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/presenceserializeri.h
00:10:48.871 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/itemmodelstateserializeri.h
00:10:48.872 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/pixmapmanipulatori.h
00:10:48.873 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/shortcutcreatori.h
00:10:48.873 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/actionextenderi.h
00:10:48.873 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/include/libringclient/interfaces/dbuserrorhandleri.h
00:10:48.874 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/lib/cmake/LibRingClient/LibRingClientConfig.cmake
00:10:48.875 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ar.qm
00:10:48.876 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_bg.qm
00:10:48.876 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ca.qm
00:10:48.877 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_cs_CZ.qm
00:10:48.877 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_da_DK.qm
00:10:48.878 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_de.qm
00:10:48.878 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_de_DE.qm
00:10:48.879 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_el.qm
00:10:48.879 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_eo.qm
00:10:48.880 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_es.qm
00:10:48.880 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_fa_IR.qm
00:10:48.881 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_fi.qm
00:10:48.882 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_fr.qm
00:10:48.882 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_fr_CA.qm
00:10:48.883 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_fr_FR.qm
00:10:48.883 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_he.qm
00:10:48.884 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_hr.qm
00:10:48.884 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_hu.qm
00:10:48.885 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_id.qm
00:10:48.885 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_it.qm
00:10:48.886 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_it_IT.qm
00:10:48.886 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ja.qm
00:10:48.887 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_lt.qm
00:10:48.887 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ms.qm
00:10:48.888 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_nb.qm
00:10:48.888 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_nl.qm
00:10:48.889 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_nl_NL.qm
00:10:48.889 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_pl.qm
00:10:48.890 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_pt.qm
00:10:48.890 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_pt_BR.qm
00:10:48.890 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ro.qm
00:10:48.891 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ru.qm
00:10:48.891 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_ru_RU.qm
00:10:48.892 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_sk_SK.qm
00:10:48.892 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_sq_AL.qm
00:10:48.893 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_sv.qm
00:10:48.893 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_tr.qm
00:10:48.894 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_uk.qm
00:10:48.894 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_zh.qm
00:10:48.894 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_zh_CN.qm
00:10:48.896 -- Installing: /tmp/d20170425-1-g666rj/build/debian/tmp/usr/share/libringclient/translations/lrc_zh_TW.qm

No sign of libringclient.so or libringclient.so.1.0.0

Here's the cmake command :

cmake ../.. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DENABLE_SHARED=true
Elv13 commented 7 years ago

And here's what it does on my systems and netrunner Docker

cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DRING_XML_INTERFACES_DIR=$PWD/../xml/  -Dring_INCLUDE_DIRS=$PWD/../../dring/
Install the project...
-- Install configuration: ""
-- Installing: /usr/lib/libringclient.so.1.0.0
-- Installing: /usr/lib/libringclient.so
-- Installing: /usr/include/libringclient/account.h
-- Installing: /usr/include/libringclient/ringdevice.h
-- Installing: /usr/include/libringclient/credential.h
-- Installing: /usr/include/libringclient/accountmodel.h
-- Installing: /usr/include/libringclient/availableaccountmodel.h
-- Installing: /usr/include/libringclient/call.h
-- Installing: /usr/include/libringclient/call.hpp
-- Installing: /usr/include/libringclient/callmodel.h
-- Installing: /usr/include/libringclient/categorizedhistorymodel.h
-- Installing: /usr/include/libringclient/person.h
-- Installing: /usr/include/libringclient/bootstrapmodel.h
-- Installing: /usr/include/libringclient/ringdevicemodel.h
-- Installing: /usr/include/libringclient/collectioninterface.h
-- Installing: /usr/include/libringclient/collectioninterface.hpp
-- Installing: /usr/include/libringclient/categorizedbookmarkmodel.h
-- Installing: /usr/include/libringclient/credentialmodel.h
-- Installing: /usr/include/libringclient/categorizedcontactmodel.h
-- Installing: /usr/include/libringclient/useractionmodel.h
-- Installing: /usr/include/libringclient/presencestatusmodel.h
-- Installing: /usr/include/libringclient/contactmethod.h
-- Installing: /usr/include/libringclient/phonedirectorymodel.h
-- Installing: /usr/include/libringclient/historytimecategorymodel.h
-- Installing: /usr/include/libringclient/numbercategorymodel.h
-- Installing: /usr/include/libringclient/keyexchangemodel.h
-- Installing: /usr/include/libringclient/codecmodel.h
-- Installing: /usr/include/libringclient/tlsmethodmodel.h
-- Installing: /usr/include/libringclient/protocolmodel.h
-- Installing: /usr/include/libringclient/numbercompletionmodel.h
-- Installing: /usr/include/libringclient/profilemodel.h
-- Installing: /usr/include/libringclient/numbercategory.h
-- Installing: /usr/include/libringclient/ringtonemodel.h
-- Installing: /usr/include/libringclient/localrecordingcollection.h
-- Installing: /usr/include/libringclient/localbookmarkcollection.h
-- Installing: /usr/include/libringclient/localringtonecollection.h
-- Installing: /usr/include/libringclient/localmacrocollection.h
-- Installing: /usr/include/libringclient/localhistorycollection.h
-- Installing: /usr/include/libringclient/localprofilecollection.h
-- Installing: /usr/include/libringclient/localtextrecordingcollection.h
-- Installing: /usr/include/libringclient/peerprofilecollection.h
-- Installing: /usr/include/libringclient/lastusednumbermodel.h
-- Installing: /usr/include/libringclient/securityevaluationmodel.h
-- Installing: /usr/include/libringclient/certificate.h
-- Installing: /usr/include/libringclient/personmodel.h
-- Installing: /usr/include/libringclient/transitionalpersonbackend.h
-- Installing: /usr/include/libringclient/collectionmodel.h
-- Installing: /usr/include/libringclient/collectionextensionmodel.h
-- Installing: /usr/include/libringclient/collectionextensionmodel.hpp
-- Installing: /usr/include/libringclient/macromodel.h
-- Installing: /usr/include/libringclient/hookmanager.h
-- Installing: /usr/include/libringclient/namedirectory.h
-- Installing: /usr/include/libringclient/uri.h
-- Installing: /usr/include/libringclient/macro.h
-- Installing: /usr/include/libringclient/ringtone.h
-- Installing: /usr/include/libringclient/profile.h
-- Installing: /usr/include/libringclient/itembase.h
-- Installing: /usr/include/libringclient/itembase.hpp
-- Installing: /usr/include/libringclient/mime.h
-- Installing: /usr/include/libringclient/collectionextensioninterface.h
-- Installing: /usr/include/libringclient/collectionmanagerinterface.h
-- Installing: /usr/include/libringclient/collectionmanagerinterface.hpp
-- Installing: /usr/include/libringclient/networkinterfacemodel.h
-- Installing: /usr/include/libringclient/certificatemodel.h
-- Installing: /usr/include/libringclient/ciphermodel.h
-- Installing: /usr/include/libringclient/accountstatusmodel.h
-- Installing: /usr/include/libringclient/collectionmediator.h
-- Installing: /usr/include/libringclient/collectionmediator.hpp
-- Installing: /usr/include/libringclient/collectioneditor.h
-- Installing: /usr/include/libringclient/collectioneditor.hpp
-- Installing: /usr/include/libringclient/fallbackpersoncollection.h
-- Installing: /usr/include/libringclient/daemoncertificatecollection.h
-- Installing: /usr/include/libringclient/foldercertificatecollection.h
-- Installing: /usr/include/libringclient/securityflaw.h
-- Installing: /usr/include/libringclient/collectioncreationinterface.h
-- Installing: /usr/include/libringclient/collectionconfigurationinterface.h
-- Installing: /usr/include/libringclient/recentmodel.h
-- Installing: /usr/include/libringclient/chainoftrustmodel.h
-- Installing: /usr/include/libringclient/pendingcontactrequestmodel.h
-- Installing: /usr/include/libringclient/contactrequest.h
-- Installing: /usr/include/libringclient/globalinstances.h
-- Installing: /usr/include/libringclient/accountlistcolorizerdefault.h
-- Installing: /usr/include/libringclient/presenceserializerdefault.h
-- Installing: /usr/include/libringclient/pixmapmanipulatordefault.h
-- Installing: /usr/include/libringclient/shortcutcreatordefault.h
-- Installing: /usr/include/libringclient/dbuserrorhandlerdefault.h
-- Installing: /usr/include/libringclient/itemdataroles.h
-- Installing: /usr/include/libringclient/smartinfohub.h
-- Installing: /usr/include/libringclient/usage_statistics.h
-- Installing: /usr/include/libringclient/typedefs.h
-- Installing: /usr/lib/cmake/LibRingClient/LibRingClientTargets.cmake
-- Installing: /usr/lib/cmake/LibRingClient/LibRingClientTargets-noconfig.cmake
-- Up-to-date: /usr/include/libringclient/video/device.h
-- Up-to-date: /usr/include/libringclient/video/devicemodel.h
-- Up-to-date: /usr/include/libringclient/video/sourcemodel.h
-- Up-to-date: /usr/include/libringclient/video/renderer.h
-- Up-to-date: /usr/include/libringclient/video/resolution.h
-- Up-to-date: /usr/include/libringclient/video/channel.h
-- Up-to-date: /usr/include/libringclient/video/rate.h
-- Up-to-date: /usr/include/libringclient/video/previewmanager.h
-- Up-to-date: /usr/include/libringclient/video/configurationproxy.h
-- Up-to-date: /usr/include/libringclient/audio/alsapluginmodel.h
-- Up-to-date: /usr/include/libringclient/audio/inputdevicemodel.h
-- Up-to-date: /usr/include/libringclient/audio/managermodel.h
-- Up-to-date: /usr/include/libringclient/audio/outputdevicemodel.h
-- Up-to-date: /usr/include/libringclient/audio/ringtonedevicemodel.h
-- Up-to-date: /usr/include/libringclient/audio/settings.h
-- Up-to-date: /usr/include/libringclient/media/media.h
-- Up-to-date: /usr/include/libringclient/media/audio.h
-- Up-to-date: /usr/include/libringclient/media/video.h
-- Up-to-date: /usr/include/libringclient/media/text.h
-- Up-to-date: /usr/include/libringclient/media/file.h
-- Up-to-date: /usr/include/libringclient/media/recording.h
-- Up-to-date: /usr/include/libringclient/media/avrecording.h
-- Up-to-date: /usr/include/libringclient/media/textrecording.h
-- Up-to-date: /usr/include/libringclient/media/recordingmodel.h
-- Up-to-date: /usr/include/libringclient/extensions/presencecollectionextension.h
-- Up-to-date: /usr/include/libringclient/extensions/securityevaluationextension.h
-- Up-to-date: /usr/include/libringclient/interfaces/accountlistcolorizeri.h
-- Up-to-date: /usr/include/libringclient/interfaces/contactmethodselectori.h
-- Up-to-date: /usr/include/libringclient/interfaces/presenceserializeri.h
-- Up-to-date: /usr/include/libringclient/interfaces/itemmodelstateserializeri.h
-- Up-to-date: /usr/include/libringclient/interfaces/pixmapmanipulatori.h
-- Up-to-date: /usr/include/libringclient/interfaces/shortcutcreatori.h
-- Up-to-date: /usr/include/libringclient/interfaces/actionextenderi.h
-- Up-to-date: /usr/include/libringclient/interfaces/dbuserrorhandleri.h
-- Up-to-date: /usr/lib/libringclient.so.1.0.0
-- Up-to-date: /usr/lib/libringclient.so
-- Up-to-date: /usr/lib/cmake/LibRingClient/LibRingClientConfig.cmake
-- Up-to-date: /usr/share/libringclient/translations/lrc_nl_NL.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_uk.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_sq_AL.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_nl.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ar.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_it.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_he.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_tr.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_da_DK.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ru.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_fi.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ru_RU.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_de.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_cs_CZ.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_bg.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_pl.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ja.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_sv.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_fr_FR.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_pt.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_fr_CA.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_zh.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_it_IT.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_pt_BR.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ca.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_zh_TW.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_fr.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_nb.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_el.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_hu.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_de_DE.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_eo.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_fa_IR.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_sk_SK.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ms.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_es.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_zh_CN.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_ro.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_lt.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_id.qm
-- Up-to-date: /usr/share/libringclient/translations/lrc_hr.qm

But really, this is beside the point. The way you seem to package it wont work. I know I repeat myself, but really, it should not be installed. The gnome client doesn't install it. The client should really use libringclient.a, not libringclient.so. This is the real problem here. It's why I added the last commit too. This is what caused this issue to be opened. Private libraries should never install .so. Sorry if I wasn't clear earlier about it, I think I was. The .deb above use the .a and it is the way it is meant to be. Most projects do that, there is nothing uncommon about ring-lrc being static beside the fact that it is in its own repository so it can be shared between the gnome, macOS and kde clients. I know you think it causes some policy issue, but it really doesn't. Even most KDE packages use static libraries internally. The only difference is that they are part of their git repository instead of a separated one.

I just amended the commit to add a clearer message in the cmake logs and potentially fix the issue you had with the static target being selected even if ENABLE_SHARED was set. However the point made above stands, even if I "fixed" it, it should not be used in the package.

shadeslayer commented 7 years ago

Last I checked it did not install any .so's even without ENABLE_SHARED. So I think your quote fix actually fixed the .so install issue.

shadeslayer commented 7 years ago

Hi This seems to be fixed now. Please make sure to purge old ring packages and then install ring-kde before testing:

sudo apt-get purge ring*
sudo apt-get install ring-kde
Elv13 commented 7 years ago

Cool, thanks. I opened #9 to track the packaging changes to prevent such .so mismatch from happening again and document why the packages should not use the shared library.

Elv13 commented 7 years ago

Hello, as the deadline for this is rather soon and I like to deliver on time, can this be tested again. I am done building a whole testing pipeline capable of creating netrunner VMs from scratch on every commit I do. At least for those VMs, both the video and wizard are fully functional. From now on testing the product on genuine clean VMs will only take ~5 minutes rather than half an hour per test.

Of course the packages are not exactly the same as @shadeslayer ones as instrumented test builds have different requirements than stable distributions packages, but overall it's the same code.

@shadeslayer /offtopic I made the cmake changes I proposed 2 days ago. Hopefully you can add a ring-lrc directory in the source root and it will use it. No need to do anything in the package (beside testing if it works, obviously).

star-buck commented 7 years ago

But were are those VMs?

Elv13 commented 7 years ago

But were are those VMs?

On my build cluster (LAN). I use the oVirt (RedHat Enterprise Virtualization) with 2 quad core and 1 octo core. oVirt has an API to spawn such volatile/stateles VMs. However this setup relies heavily on my own network and its NFS shares (including personal data). I tried a to split the subnet so I could expose them to the internet, but that's "too much work on paid time". If you want me to do that, fine by me, just splitting 30 VMs into 2 DMZ just takes a lot of time (about 1 more day). However I did setup something you could use to create your own locally:

  1. boot the live-cd in VirtualBox

    sudo echo deb http://lvindustries.net:8080/ netrunner/ >> /etc/apt/sources.list sudo apt update --allow-insecure-repositories sudo apt install ring-kde --allow-unauthenticated -y

Hopefully that will give you access to the live ring-kde package (git version). I also lost some time trying to resurrect a very old script I had to generate .img the old fashioned way (dd and chroot). But this is a bottomless time pit, so better get back to fix bugs and ready the release branch. It work-ish, but needs an MBR to boot normally on most systems (some UEFI implementations like the x99 one is smart enough to boot it as-is when dd-ed into an USB thumb stick).

The code for generating the pipeline is here https://github.com/ring-project/docker-kf5-pipeline . That part works as expected. By the way, if you wish to use my test pipeline for other packages, I can add any kf5 application I want to the list. It will build them from the latest git "live". Of course it is designed as a local toolkit to develop ring-kde, not to re-invent the netrunner or KDE CI, so it has its limitations

I wont push anymore commit to the next branch as would like to do a release with the current code. I got everything ready, just waiting for your greenlight.

star-buck commented 7 years ago

As you said yourself, you should not be doing this really and look into get this setup correctly with Rohan, who is responsible to do packages for anyone to test it (no, not enduser packages, but testing ones).

So I am really only interested to have GIT repos with branches that when pushed should result in packages that one can test. This is done with all our development using GIT branches for anything, be it plasma, apps, etc.

Reading this thread it should go like this:

  1. you name the GIT repos+branch what needs to be compiled
  2. Rohan compiles it on Debian Testing base
  3. it lands in our testing repos, from which we all can easily install and update packages and which are not enduser official anyway.