Hello,
Thank you for your investigation and your pull request.
I assume some OS does need that as for the others, everything’s ok . On my
ubuntu 22, ytnef is correctly linked without your modification ->
root@8e09d7b54b57:/src/SOGo# ldd /usr/local/lib/GNUstep/SOGo/Mailer.SOGo/Mailer
| grep ytnef
libytnef.so.0 => /lib/x86_64-linux-gnu/libytnef.so.0
(0x00007f70b3210000)
Do you confirm your sogo can now open winmail.dat file without problem ?
From: [email protected] <[email protected]> On Behalf Of
"[email protected]"
Sent: vendredi 2 février 2024 14:46
To: [email protected]
Subject: Re: [SOGo] SOGo 5.9.0 could not load product
I found the issue. It was already described here: https://bugs.gentoo.org/811351
The "SoObjects/SOGo/GNUmakefile" is missing the additional LDFLAG
This is what needs to be changed
-ADDITIONAL_LDFLAGS += -lmemcached -lzip
+ADDITIONAL_LDFLAGS += -lmemcached -lzip -lytnef
now ldd shows the link!
I would say this is a SOGo bug and should be changed in the source code.
Am Freitag, dem 02.02.2024 um 12:37 +0000 schrieb [email protected]
<mailto:[email protected]> :
I just realized one more thing
ldd /usr/local/lib64/GNUstep/SOGo/Mailer.SOGo/Mailer | grep ytnef
ldd /usr/local/lib64/GNUstep/SOGo/MailerUI.SOGo/MailerUI | grep ytnef
ldd /usr/local/lib64/GNUstep/SOGo/MailPartViewers.SOGo/MailPartViewers | grep
ytnef
returns nothing. it seems like ytnef didn't get linked eventhough it didn't end
in a compiletime error. So compilation worked well, but execution doesn't work.
Am Donnerstag, dem 01.02.2024 um 22:03 +0000 schrieb [email protected]
<mailto:[email protected]> :
To answer you other questions:
cat /usr/local/include/ytnef.h | grep TNEFParseMemory
int TNEFParseMemory(BYTE *memory, long size, TNEFStruct *TNEF);
gcc -lytnef
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/11/../../../../lib64/crt1.o: in
function `_start':
(.text+0x1b): undefined reference to `main'
collect2: error: ld returned 1 exit status
I finally got ld to find the libytnef.so and libytnef.a
ldconfig -p | grep libyt
libytnef.so.0 (libc6,x86-64) => /usr/local/lib/libytnef.so.0
libytnef.so (libc6,x86-64) => /usr/local/lib/libytnef.so
I needed to add /usr/local/lib to the ld path. Seems like Alma puts everything
into /usr/local/lib64
I could compile the test.c without a problem. I also added the BUNDLE_LIBS +=
-lytnef but still
Nothing works. The linker can see ytnef and sogo should find it too, because it
is available in /usr/local/lib64 via a symlink.
Is there any other possible condition why the mail component doesn't find my
libytnef.so?
The version of ytnef also contains the symbol:
nm -D /usr/local/lib/libytnef.so | grep TNEFParseMemory 00000000000054e0 T
TNEFParseMemory
Am Mittwoch, dem 31.01.2024 um 18:25 +0000 schrieb [email protected]
<mailto:[email protected]> :
Sorry, this is the output of the daemon. So when running it not building.
Compiling works well.
Am 31.01.2024 17:29 schrieb qhivert <[email protected] <mailto:[email protected]> >:
It’s not clear to me if you get the errors when building or after when running
sogo ?
From: [email protected] <mailto:[email protected]>
<[email protected] <mailto:[email protected]> >On Behalf
Of"[email protected] <mailto:[email protected]> "
Sent: mercredi 31 janvier 2024 16:14
To: [email protected] <mailto:[email protected]>
Subject: Re: [SOGo] SOGo 5.9.0 could not load product
Thank you, compiling the test.c worked. my I added the ytnef.h to ld but still
the same error. If it helps here is my part of the ansible script that compiles
sogo on alma 9.3 minimal
- name: set data path
set_fact:
sogo_gnustep_path: "/usr/local/lib64/GNUstep/SOGo"
- name: Enable additional repo
dnf:
name:
- epel-release
- almalinux-release-devel
- name: Enable CRB repository
command: dnf config-manager --set-enabled crb
- name: Enable devel repository
command: dnf config-manager --set-enabled devel
- name: Install required packages
dnf:
enablerepo: epel
name:
- gnustep-base
- gnustep-make
- gnustep-base-devel
- gcc-objc
- libsodium
- libsodium-devel
- libmemcached-awesome
- libmemcached-awesome-devel
- libzip
- libzip-devel
- name: Install required packages
dnf:
name:
- redhat-rpm-config
- libxml2-devel
- libxml2
- openssl-devel
- openssl
- openldap-devel
- openldap
- postgresql-devel
- postgresql
- libcurl-devel
- libcurl
- python3-psycopg2
- autoconf
- automake
- libtool
- git
state: present
- name: Clone ytnef from GitHub
git:
repo: 'https://github.com/Yeraze/ytnef.git'
dest: '/tmp/ytnef'
version: "{{ ytnef_git_tag }}"
clone: yes
update: yes
- name: Compile and Install SOPE
shell: |
cd /tmp/ytnef
autoreconf -i
./configure
make
make install
echo "/usr/local/include" | sudo tee -a /etc/ld.so.confD
ldconfig
args:
executable: /bin/bash
- name: Clone SOPE from GitHub
git:
repo: 'https://github.com/Alinto/sope.git'
dest: '/tmp/SOPE'
version: "{{ sope_git_tag }}"
clone: yes
update: yes
- name: Clone SOGo from GitHub
git:
repo: 'https://github.com/Alinto/sogo.git'
dest: '/tmp/SOGo'
version: "{{ sogo_git_tag }}"
clone: yes
update: yes
- name: Compile and Install SOPE
shell: |
cd /tmp/SOPE
./configure --with-gnustep --enable-debug --disable-strip
make
make install
args:
executable: /bin/bash
- name: Compile and Install SOGo
shell: |
cd /tmp/SOGo
./configure --enable-debug --disable-strip
make
make install
args:
executable: /bin/bash
you just need to set the vars in you playbook, this is only my sogo role.
Am Mittwoch, dem 31.01.2024 um 15:16 +0100 schrieb qhivert:
Ok,
It seems related to <https://bugs.sogo.nu/view.php?id=5907>
https://bugs.sogo.nu/view.php?id=5907
but it it’s not the same symbol. Could you try the steps of my first comment
there (qhivert)?
From: [email protected] <mailto:[email protected]>
<[email protected] <mailto:[email protected]> >On Behalf
Of"[email protected] <mailto:[email protected]> "
Sent: mercredi 31 janvier 2024 15:06
To: [email protected] <mailto:[email protected]>
Subject: Re: [SOGo] SOGo 5.9.0 could not load product
Hey Queintin,
no I tried installing from yum, from the nightly repo and finally tried to
install by compiling from source. Nothing worked. I always get the same error.
Even going down on a 5.8 didn't work.
Richard
Am Mittwoch, dem 31.01.2024 um 14:32 +0100 schrieb qhivert:
Hello,
Are you saying that when installing ytnef via yum it don’t work but when you’re
building ytnef yourself it works fine?
Queintin
From: [email protected] <mailto:[email protected]>
<[email protected] <mailto:[email protected]> >On Behalf
Of"[email protected] <mailto:[email protected]> "
Sent: mercredi 31 janvier 2024 11:23
To: [email protected] <mailto:[email protected]>
Subject: Re: [SOGo] SOGo 5.9.0 could not load product
I compiled SOGo 5.9.1 from source on AlmaLinux9 which worked fine. I also
compiled ytnef from source, because I keep getting the errors:
Error (objc-load):/usr/local/lib64/GNUstep/SOGo/Mailer.SOGo/Mailer: undefined
symbol: TNEFParseMemory
Error
(objc-load):/usr/local/lib64/GNUstep/SOGo/MailPartViewers.SOGo/MailPartViewers:
undefined symbol: __objc_class_name_SOGoMailBodyPart
Error
(objc-load):/usr/local/lib64/GNUstep/SOGo/PreferencesUI.SOGo/PreferencesUI:
undefined symbol: __objc_class_name_SOGoMailLabel
So somehow ytnef is not getting bundled. I tried to add it to BUNDLE_LIBS
"-lytnef" in SoObjects/Mailer/GNUmakefile.preamble but it didn't work.