Home | News | Download | Packages | Forum | Wiki | Github

Exchange support in Evolution


(Alex) #1

Evolution seems a nice mail client. If I understand it correct, it is one of few (if not only one) having support for MS Exchange in linux world. And I would need that. I have installed Evolution and started to get familiar with it. Many things are new to me, but over all, I feel it works smooth. And I have discovered that to have support for Exchange, one need to add it.

After some research, I found, Evolution-EWS (Exchange Web Servicies)
https://wiki.gnome.org/Apps/Evolution/
https://wiki.gnome.org/Apps/Evolution/EWS_OperationsFeaturesParityMatrix
https://download.gnome.org/sources/evolution-ews/3.22/

From “FeaturesParityMatrix”, I first thought that part is not production-ready yet. But after some further digging, I think it is just not in our repo. That means I have to compile it manually, huh?


Kicking Off Budgie 11
(Alex) #2

Ok… If I understand things correct.
The optional Evolution-EWS is not in Void binary repo.
Hence, I need to compile it manually, right?
I have still only basic Linux-experience.
I have never compiled a package. I have yet not even learned/used tar.
(Learning unpacking tar feels not to difficult though.)

I have searched internet for “linux compile” and alike and red a bunch of hits.
I have searched Void-Forum for “compile package”, “build package” and red a bunch of hits.

Where do I start?
What things do I need to learn to get Evolution-EWS (Exchange-Support)?
What tools do I need for all this process?

I admit I feel a bit stuck at the moment. Some directions-pointing would be very appreciated. =C


#3

@Alex If you need to build “evolution-ews” or another package you can take a look at the xbps-src wiki page and the xbps source packages manual to learn how it works.

Look at the Void’s template for evolution to see how it is written.

I’m not an expert in compilation, but I think you can help yourself by looking at the templates from other distributions…

The Debian’s template: http://debian.univ-tlse2.fr/debian/pool/main/e/evolution-ews/evolution-ews_3.22.4-1.dsc

The Arch’s template: https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/evolution-ews

:warning: In Void’s repositories the package “evolution” is version 3.22.3, so you need to compile the same version of “evolution-ews” I guess…

I hope it helps you. :wink:


(Alex) #4

Ye, I have also noticed that Evolution package in Void slacking behind upstream a bit… Thumbs up that you made a note about it. In other words. To ensure that Evol. and Evol.-EWS are on “same page”, I compile both from upstream-source… Right?

Then start to study xbps-src it is.

Do you have room for an other truck-load full of love? :heart: :wink:


#5

:flushed: Thank you @Alex. I’m only doing what I can to help you !

Yes you can, why not ?


(Alex) #6

Oh… now I am a bit confused…
First I thought that to get Evol.-EWS I need do exactly that… downloading from upstream-source and compile that.

But now I get a feeling that it is not the case? Do Void have Evolution in binary “form”, but Evolution-EWS can some what easily be compiled through xbps-src? That “things you need are already in Void-xbps-src”?


#7

Yes, didn’t you see it ?

$ xbps-query -Rs evolution
[-] evolution-3.22.3_1                   Integrated mail, addressbook and calendaring for GNOME
[-] evolution-data-server-3.22.3_1       Centralized access to appointments and contacts
[-] evolution-data-server-devel-3.22.3_1 Centralized access to appointments and contacts - development files
[-] evolution-devel-3.22.3_1             Integrated mail, addressbook and calendaring for GNOME - development files

Moreover you installed it !! lol.


In fact you can compile everything you want from source…
…but as you already have the package “evolution” installed, you only need to compile “evolution-ews” yourself from source.

I hope you understand, but tell me if you are still confused…


(Alex) #8

Oh, I see what you mean @cr6 , but that is not how I meant. I now realized that I “put words in imperfect structure”, resulting in a misunderstanding. My bad.

What I meant is:

  • I realize that Evolution is in Void repo in binary form. (I have installed and tested it, as you correctly say.)
  • Evolution-EWS can be compiled from upstream source.
  • Evolution-EWS can also be compiled directly through xbps-src?[quote=“Alex, post:6, topic:1682”]
    “things you need are already in Void-xbps-src”?
    [/quote]

#9

The two things are the same ! This is your misunderstanding.

The “xbps-src” program downloads & compiles the upstream source code you indicates in the template.


For example, in your template you need a line like this:

distfiles="http://ftp.acc.umu.se/pub/GNOME/sources/evolution-ews/3.22/evolution-ews-3.22.3.tar.xz"

This line orders xbps-src to download this .xz archive (upstream source).


(Alex) #10

Aaah… I think I get it now…
Thanks again for all the help @cr6 and for sticking with your patience with me. :slight_smile:
I will update on the progress when I get my hands dirty on this subject. (So much other things that needs to be done too.)


#11

Alex I would like to know how you progressed with that as I’m stuck with the same


#12

guys, I’m trying to make a template for EWS, but having some issue with finding packages for making EWS package.

below is ARCH’s pkgbuild I’m following but certain sections for cmake are not able to pass validation

# $Id$
# Contributor: Ionut Biru <ibiru@archlinux.org>

pkgname=evolution-ews
pkgver=3.26.2
pkgrel=2
pkgdesc="MS Exchange integration through Exchange Web Services"
url="https://wiki.gnome.org/Apps/Evolution/EWS"
arch=(x86_64)
license=(LGPL2.1)
depends=(libmspack evolution)
makedepends=(git cmake ninja intltool python)
options=(!emptydirs)
_commit=fb9752275bfb34054f6ba6df3cb2b3bb87d82662  # tags/EVOLUTION_EWS_3_26_2^0
source=("git+https://git.gnome.org/browse/evolution-ews#commit=$_commit")
sha256sums=('SKIP')

pkgver() {
  cd $pkgname
  git describe --tags | sed 's/^EVOLUTION_EWS_//;s/_/./g;s/-/+/g'
}

build() {
  cd $pkgname
  cmake . -G Ninja \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DLIBEXEC_INSTALL_DIR=/usr/lib/evolution \
    -DSYSCONF_INSTALL_DIR=/etc
  ninja
}

package() {
  cd $pkgname
  DESTDIR="$pkgdir" ninja install

My compilation effort ends up with following

-- Checking for module 'camel-1.2>=3.27.3'
--   No package 'camel-1.2' found

even though libraries are all installed

/usr/lib/libcamel-1.2.so.60
/usr/lib/libcamel-1.2.so.60.0.0

the same is for evolution-data-server package (when i comment out camel from CMakeLists.txt

any help appreciated, not sure i want to end up with evolution as flatpak… and I desperately need EWS support.


#13

I’m sorry, i’m such a dumb… had wrong GIT version of EWS


#14

getting further… though still not at the end

I’ve created a template for evolution-ews, so far so good, it all compiles, but I cannot install it due to unresovled shlibs.

template:

# Template file for 'evolution-ews'
pkgname=evolution-ews
version=3.26.2
revision=1
build_style=cmake
configure_args="-DCMAKE_INSTALL_PREFIX=/usr -DLIBEXEC_INSTALL_DIR=/usr/lib/evolution -DCMAKE_BUILD_TYPE=Release"
hostmakedepends="pkg-config intltool cmake gettext"
makedepends="evolution-data-server-devel evolution-devel enchant-devel webkit2gtk-devel libmspack-devel"
depends="evolution-data-server"
short_desc="MS Exchange integration through Exchange Web Services"
maintainer="lala@lala.com"
license="LGPL2.1"
homepage="https://wiki.gnome.org/Apps/Evolution"
distfiles="${GNOME_SITE}/$pkgname/${version%.*.*}/$pkgname-$version.tar.xz"
checksum="5d80ff7c829e61561b848c9d6c615a6fc9a8522bb218a728a47bb414fc30b733"

this is end of the log

=> evolution-ews-3.26.2_1: running pre-pkg hook: 04-generate-runtime-deps ...
   SONAME: libcamelews-priv.so <-> evolution-ews (ignored)
   SONAME: libedataserver-1.2.so.22 <-> evolution-data-server>=3.22.0_1
   SONAME: libsoup-2.4.so.1 <-> libsoup>=2.34.0_1
   SONAME: libgio-2.0.so.0 <-> glib>=2.18.0_1
   SONAME: libgobject-2.0.so.0 <-> glib>=2.18.0_1
   SONAME: libglib-2.0.so.0 <-> glib>=2.18.0_1
   SONAME: libevolution-mail.so <-> evolution>=3.26.2_1
   SONAME: libevolution-shell.so <-> evolution>=3.26.2_1
   SONAME: libevolution-util.so <-> evolution>=3.26.2_1
   SONAME: libedataserverui-1.2.so.1 <-> evolution-data-server>=3.8.0_1
   SONAME: libemail-engine.so <-> evolution>=3.26.2_1
   SONAME: libgtk-3.so.0 <-> gtk+3>=3.0.0_1
   SONAME: libpango-1.0.so.0 <-> pango>=1.24.0_1
   SONAME: libcamel-1.2.so.60 <-> evolution-data-server>=3.24.0_1
   SONAME: libical.so.2 <-> libical>=2.0.0_1
   SONAME: libebook-1.2.so.19 <-> evolution-data-server>=3.24.0_1
   SONAME: libevolution-ews.so <-> evolution-ews (ignored)
   SONAME: libpthread.so.0 <-> glibc>=2.25_1
   SONAME: libc.so.6 <-> glibc>=2.25_1
   SONAME: libebackend-1.2.so.10 <-> evolution-data-server>=3.17.90_1
   SONAME: libedata-book-1.2.so.25 <-> evolution-data-server>=3.8.0_1
   SONAME: libebook-contacts-1.2.so.2 <-> evolution-data-server>=3.17.90_1
   SONAME: libmspack.so.0 <-> libmspack>=0.4alpha_1
   SONAME: libevolution-calendar.so <-> evolution>=3.26.2_1
   SONAME: libxml2.so.2 <-> libxml2>=2.7.0_1
   SONAME: libecal-1.2.so.19 <-> evolution-data-server>=3.18.0_1
   SONAME: libedata-cal-1.2.so.28 <-> evolution-data-server>=3.18.0_1
=> evolution-ews-3.26.2_1: running pre-pkg hook: 05-prepare-32bit ...
=> evolution-ews-3.26.2_1: running pre-pkg hook: 06-shlib-provides ...
=> evolution-ews-3.26.2_1: running pre-pkg hook: 90-set-timestamps ...
=> evolution-ews-3.26.2_1: setting mtimes to Thu Nov 30 22:10:20 CET 2017
=> evolution-ews-3.26.2_1: running pre-pkg hook: 99-pkglint ...
=> evolution-ews-3.26.2_1: running do-pkg hook: 00-gen-pkg ...
=> Creating evolution-ews-3.26.2_1.x86_64.xbps for repository /host/binpkgs ...
=> evolution-ews-3.26.2_1: running post-pkg hook: 00-register-pkg ...
=> Registering evolution-ews-3.26.2_1.x86_64.xbps into /host/binpkgs ...
index: added `evolution-ews-3.26.2_1' (x86_64).
index: 1 packages registered.
=> evolution-ews-3.26.2_1: removing autodeps, please wait...

=> evolution-ews-3.26.2_1: cleaning build directory...
=> evolution-ews: removing files from destdir...

shlibs modification:

$ tail common/shlibs
libevolution-mail.so evolution-3.26.2_1
libevolution-shell.so evolution-3.26.2_1
libevolution-util.so evolution-3.26.2_1
libemail-engine.so evolution-3.26.2_1
libevolution-calendar.so evolution-3.26.2_1

and broken installation:

$ sudo xbps-install --repository=hostdir/binpkgs/  evolution-ews
evolution-ews-3.26.2_1: broken, unresolvable shlib `libemail-engine.so'
evolution-ews-3.26.2_1: broken, unresolvable shlib `libevolution-calendar.so'
evolution-ews-3.26.2_1: broken, unresolvable shlib `libevolution-mail.so'
evolution-ews-3.26.2_1: broken, unresolvable shlib `libevolution-shell.so'
evolution-ews-3.26.2_1: broken, unresolvable shlib `libevolution-util.so'
Transaction aborted due to unresolved shlibs.

Can someone please help me to resolve this, finally? I’m quite sure I did miss something. Thanks


(Pierre Bourgin) #15

it’s seem almost done !

common/shlibs” is a list of shared libraries with the package’s name that own them: this is package “evolution-ews” and not “evolution” in your case.

In fact, you probably even don’t have to feed “common/shlibs”: the shared libs listed are usefull only if these shared libs will be used while building another package against them.

Update: don’t forget to rebuild each time your modify “common/shlibs


#16

Thanks a lot for the hint. I didn’t realize that those libraries are owned by evolution-ews. I saw that they were delivered with evolution pkg.

[*] Configuring unpacked packages
evolution-ews-3.26.2_1: configuring ...
evolution-ews-3.26.2_1: installed successfully.

When I didn’t update shlibs file I could not properly perform pkg build as it complained about those libs in “04-generate-runtime-deps” step.


#17

@Alex, @cqs - were you successful? I am also looking for MS Exchange support.
(I am running Void musl and have’t done any compilation before, so any help would be appreciated.)


#18

@go2null evolution-ews is in the repos now:

$ xbps-query -Rs evolution-ews
[-] evolution-ews-3.26.2_1 MS Exchange integration through Exchange Web Services

#19

Thanks! Awesome, will give it a spin.