Compiling Delta Chat for CentOS/RHEL

The most recent Android one from the Play Store, ie 1.14.5. But, the app also crashes when I try to create a new account so it is not just when I try to import a backup.

I suggest you do a git checkout to version/tag 1.14.1 and then do the process from the start. 1.15.2-master is still unstable it seems.

OK, just did. Just to note that I previously compiled 1.15.1, not 1.15.2.

Checking out and compiling 1.14.1 results in an error message that libXss is not available which I was able to correct by “yum install libXScrnSaver”, When I then try to launch the application with “npm run start – --no-sandbox” I get a new error message:

Error: Cannot find module ‘./tsc-dist/main’

I have not been able to resolve this issue yet. Might you have a suggestion?

Googling told me that I needed to install

npm install --global typescript

After doing so and going through the build process again the app crashes - both when setting up an account anew or importing an Android backup - with the following last lines in the log file in .config:

2021-02-24T22:29:13.151Z main/deltachat DEBUG “sendToRenderer: DD_EVENT_CHAT_MODIFIED” {“chatId”:11,“chat”:{“id”:11,“name”:“Device messages”,“isProtected”:false,“profileImage”:"/root/.config/DeltaChat/accounts/ac0/db.sqlite-blobs/icon-device.png",“archived”:false,“subtitle”:“Locally generated messages”,“type”:100,“isUnpromoted”:false,“isSelfTalk”:false,“contacts”:[{“address”:“device@localhost”,“color”:"#f23030",“displayName”:“Device messages”,“firstName”:“Device”,“id”:5,“name”:“Device messages”,“profileImage”:"/root/.config/DeltaChat/accounts/ac0/db.sqlite-blobs/icon-device.png",“nameAndAddr”:“Device messages (device@localhost)”,“isBlocked”:false,“isVerified”:false}],“contactIds”:[5],“color”:"#f23030",“freshMessageCounter”:3,“isGroup”:false,“isDeaddrop”:false,“isDeviceChat”:true,“selfInGroup”:false,“muted”:false,“ephemeralTimer”:0}}
2021-02-24T22:29:13.152Z renderer/ipc DEBUG null “backend” “DD_EVENT_CHAT_MODIFIED” {“chat”:{“archived”:false,“color”:"#f23030",“contactIds”:[5],“contacts”:[{“address”:“device@localhost”,“color”:"#f23030",“displayName”:“Device messages”,“firstName”:“Device”,“id”:5,“isBlocked”:false,“isVerified”:false,“name”:“Device messages”,“nameAndAddr”:“Device messages (device@localhost)”,“profileImage”:"/root/.config/DeltaChat/accounts/ac0/db.sqlite-blobs/icon-device.png"}],“ephemeralTimer”:0,“freshMessageCounter”:2,“id”:11,“isDeaddrop”:false,“isDeviceChat”:true,“isGroup”:false,“isProtected”:false,“isSelfTalk”:false,“isUnpromoted”:false,“muted”:false,“name”:“Device messages”,“profileImage”:"/root/.config/DeltaChat/accounts/ac0/db.sqlite-blobs/icon-device.png",“selfInGroup”:false,“subtitle”:“Locally generated messages”,“type”:100},“chatId”:11}
2021-02-24T22:29:13.152Z renderer/ipc DEBUG null “backend” “DC_EVENT_MSGS_CHANGED” [11,12]
2021-02-24T22:29:13.152Z renderer/stores/ChatStore DEBUG null “DC_EVENT_MSGS_CHANGED” 11 12
2021-02-24T22:29:13.152Z renderer/ipc DEBUG null “backend” “DD_EVENT_CHATLIST_CHANGED” {}
2021-02-24T22:29:13.152Z renderer/ipc DEBUG null “backend” “DD_EVENT_CHAT_MODIFIED” {“chat”:{“archived”:false,“color”:"#f23030",“contactIds”:[5],“contacts”:[{“address”:“device@localhost”,“color”:"#f23030",“displayName”:“Device messages”,“firstName”:“Device”,“id”:5,“isBlocked”:false,“isVerified”:false,“name”:“Device messages”,“nameAndAddr”:“Device messages (device@localhost)”,“profileImage”:"/root/.config/DeltaChat/accounts/ac0/db.sqlite-blobs/icon-device.png"}],“ephemeralTimer”:0,“freshMessageCounter”:3,“id”:11,“isDeaddrop”:false,“isDeviceChat”:true,“isGroup”:false,“isProtected”:false,“isSelfTalk”:false,“isUnpromoted”:false,“muted”:false,“name”:“Device messages”,“profileImage”:"/root/.config/DeltaChat/accounts/ac0/db.sqlite-blobs/icon-device.png",“selfInGroup”:false,“subtitle”:“Locally generated messages”,“type”:100},“chatId”:11}
[root@gcc deltachat-desktop]#

Does this tell you what the reason might be?

can you do the testing outside of docker, not as root and without the --no-sandbox?

also when checking out an other version with git you need to start the building process from the beginning:

  1. delete node_modules, html_dist and tsc-dist
  2. npm install
  3. npm run build
  4. npm run start to test
  5. follow the steps to package the app.

I can not see the reason for your crash currently, does it also appear when you use the appimage?
Which email provider do you use?

I will do it again outside docker. Note that I stop and kill the container and then create it again and restart the build process to avoid any potential residual issues. I did not package the app inside or outside the docker environment.

My e-mail provider is 1and1.com and it seems to work on my multiple phones and tablet.

Is it possible that DC needs some library module that I have not available in my docker container or on my computer? Usually I would run ‘ldd nameofsoftware’ but since DC is started. It is not possible to do ‘ldd npm start – --no-sandbox’. Is there any way to answer the question on other libraries?

By the way, I just noticed that the version I checked out most recently from the git archive, 1.14.1 uses deltachat core version 1.50.0 and sqlite version 3.33.0 when I open the About Delta Chat window. Does it sound correct that the desktop version 1.14.1 should be using a later version of the core?

If not, I am not sure how to correct this since I started with a new container when building 1.14.1.

Raising the above again. Is it correct that even if I pull the git version 1.14.1 of the desktop the core code is 1.15.0?

yes, core versions and ui versioning is different

I believe it would tell so if that were the case and not start at all.
I rather suspect it could be a bug with deltachat. Does the appimage also crash? then its very likely that it is a bug in deltachat.

Over here you have a crash in electron. Not sure why and sadly nothing we can fix. But to figure out more about it, you could debug it with gdb:

$ gdb
> exec electron . --debug --log-debug --log-to-console --disable-http-cache --translation-watch
> run
> #wait for segfault
> backtrace

Can you tell me the output of which electron and electron --version? Not sure if you did a npm install --global electron but if you start deltachat-desktop manually through electron .... normally the electron version installed through your package manager/distro is getting used. To use the one that is downloaded for deltachat-desktop, run it with npx electron .... In the package.json the npx is spared out, it automagically uses the binaries downloaded through npm install.

I did not have an opportunity to get back to this until today but ran into some new problems.

I am doing this in docker so as not to pollute the desktop machine itself which means I run as root in the container. I had previously installed electron this way:

npm install electron --save-dev

but now - per your message above - tried

npm install --global electron

but ran into the following issue that ‘mkdtemp’ does not seem to exist in the CentOS 7 repositories I have looked at…

I am looking into this further.

I was able to work around not having ‘mkdtemp’ by:
alias mkdtemp=“mkdir -p”
but then failed on:
mkdir ‘/usr/lib/node_modules/electron/dist’
I believe this should really have been:
mkdir -p
but creating the alias:
alias mkdir=“mkdir -p”
did not helpt. Nor did creating the directory electron/dist beforehand. Presumably the installation script deletes existing directories.
So, stuck.

What I actually meant was that you use an electron version from your distro repos. Something like this: https://altlinux.pkgs.org/sisyphus/classic-aarch64/electron10-10.4.0-alt1.aarch64.rpm.html

I see. Unfortunately pkgs.org does not find any for CentOS 7!

https://pkgs.org/search/?q=electron

Will inquire on the CentOS mailing list.

I was able to resolve several things today. Since I am doing this as root in a docker container, I found that I need to install electron this way:
npm install --global electron --unsafe-perm=true --allow-root
and I have to run
npm update
after
npm run build.

Everything now compiles fine, no error messages.

node --version shows:
v10.24.0
npm --version shows:
6.14.11
which electron shows:
/usr/bin/electron
electron --version --no-sandbox shows:
v12.0.0

The app still crashes after it imported a backup (or after creating a new IMAP identity) with no ERROR types messages in the log or on the display however, the last lines on the display are:
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (7) : contacts.getContactIds 0,
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (8) : messageList.searchMessages ,0
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (9) : contacts.getContacts
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (10) : messageList.msgIds2SearchResultItems
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (11) : chatList.getChatListItemsByEntries
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (12) : contacts.getContacts 2705,108,124,97,101,95,543,94,123,948,949
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (13) : messageList.msgIds2SearchResultItems
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (14) : contacts.getContacts 2705,108,124,97,101,95,543,94,123,948,949
5.5s [D]main/ipc: EVENT_DC_DISPATCH_CB (15) : messageList.msgIds2SearchResultItems

My conclusion is that it seems to crash on something with Contacts?

Last, I should mention that this is v1.14.1 checked out from git.

Should also mention that I start the app with:
npm run start – --no-sandbox
while in the deltachat folder.