# Copyright 2020 Juan Jose Garcia-Ripoll # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in all # copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # ######################################## # # MU + XAPIAN + ISYNC # # Mail synchronization and mail indexing # function msys2_extra_environment () { msys2_extra_repo="https://github.com/msys2-unofficial/MSYS2-packages.git" msys2_extra_source_dir="$emacs_build_git_dir/MSYS2-packages" } function action3_mu () { local mu_zip_file="$emacs_build_zip_dir/mu-${architecture}.zip" msys2_extra_environment ensure_msys2_devel \ && msys2_extra_clone \ && msys2_extra_build_and_install_package gmime3 \ && msys2_extra_build_and_install_package xapian-core \ && msys2_extra_build_and_install_package mu \ && emacs_extensions="$mu_zip_file $emacs_extensions" \ && msys2_extra_package mu-git "/" "glib2 xapian-core gmime3" "$mu_zip_file" } function test_mu () { local mu="$emacs_full_install_dir/usr/bin/mu.exe" test -x "$mu" \ && "$mu" --help | grep "mu general options" >/dev/null 2>&1 } function action3_isync () { local isync_zip_file="$emacs_build_zip_dir/isync-${architecture}.zip" msys2_extra_environment ensure_msys2_devel \ && msys2_extra_clone \ && msys2_extra_build_and_install_package isync \ && emacs_extensions="$isync_zip_file $emacs_extensions" \ && msys2_extra_package isync-git "/" "gcc-libs ca-certificates" "$isync_zip_file" "$isync_zip_file" } function test_isync () { local mbsync="$emacs_full_install_dir/usr/bin/mbsync.exe" test -x "$mbsync" \ && "$mbsync" --help | grep "mailbox synchronizer" >/dev/null 2>&1 } function ensure_msys2_devel () { local required_packages="base-devel msys2-devel" pacman -S --noconfirm --needed $required_packages >/dev/null 2>&1 if test "$?" != 0; then echo Unable to install MSYS2 packages $required_packages echo Giving up return -1 fi } function msys2_makepkg () { $SHELL -c "source shell msys; makepkg $* EMACS=$emacs_install_dir/bin/emacs.exe" } function msys2_extra_build_and_install_package () { #set -x local package_name="$1" local package_dir="$msys2_extra_source_dir/$package_name" local package_file=`ls "${package_dir}/"*.zst 2>/dev/null` if test ! -f "$emacs_install_dir/bin/emacs.exe"; then echo Please build and package Emacs before the extensions exit -1 fi if test ! -f "$package_file"; then echo Building package $package_dir on directory $package_dir (cd "$package_dir" && rm -f *.zst && msys2_makepkg --noconfirm -rsf -p PKGBUILD) if test "$?" != 0; then echo Unable to build package. Aborting. return -1 fi package_file=`ls "${package_dir}/"*.zst` fi if test -f "$package_file" && pacman -U --noconfirm "$package_file"; then echo Installed $package_name return 0 else echo Failed to build and install package $package_name return -1 fi } function msys2_extra_package () { local base="$1" local prefix="$2" local dependencies="$3" local zip_file="$4" # List all dependencies local all_dependencies=`full_dependency_list "$base $dependencies gcc-libs" "sh coreutils" "$base" "msys2-no-prefix"` echo Packaging $base and dependencies into $zip_file (mingw_dir="$prefix"; package_dependencies "$zip_file" "$all_dependencies") \ && zip -9r "$zip_file" /etc/fstab } function msys2_extra_clone () { echo Cloning repository $msys2_extra_repo clone_repo "master" "$msys2_extra_repo" "$msys2_extra_source_dir" \ && (cd "$msys2_extra_source_dir" && git reset --hard && git checkout . ) \ && msys2_extra_mu_pkg_description \ && msys2_extra_gmime3_pkg_description \ && msys2_extra_xapian_pkg_description \ && msys2_extra_isync_pkg_description } function msys2_build_isync () { cd "$msys2_extra_source_dir/isync" \ && makepkg -sf } function msys2_extra_mu_pkg_description () { cat > "$msys2_extra_source_dir/mu/PKGBUILD" <<\EOF # Maintainer: damon-kwok # Modification by Juan Jose Garcia Ripoll to fix dependencies _realname=mu # _date="`date +%Y-%m-%d@%H-%M-%S`" pkgname=${_realname}-git #-${_date} pkgver=20201202 pkgrel=1 pkgdesc="'mu' is a tool for dealing with e-mail messages stored in the Maildir-format." arch=('i686' 'x86_64') groups=('net-utils') license=('GPL-3.0') url="https://www.djcbsoftware.nl/code/mu/" # depends=(xapian-core libiconv libguile guile gmp libgc libcrypt) # makedepends=(git glib2-devel libiconv-devel libguile-devel gmp-devel libgc-devel libcrypt-devel xapian-core gmime3) depends=(glib2 xapian-core libiconv ) makedepends=(git glib2-devel libiconv-devel xapian-core gmime3 diffutils) source=("git+https://github.com/djcb/mu") sha256sums=('SKIP') pkgver() { cd "${srcdir}"/${_realname} # printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" git log -1 --format="%cd" --date=short | sed 's|-||g' } build() { cd "${srcdir}"/${_realname} if grep '^AX_LIB_READLINE' configure.ac; then patch -p1 < ../../mu-readline.patch fi if test -f Makefile; then make distclean fi chmod +x ./autogen.sh echo Using EMACS=$EMACS ./autogen.sh --disable-gtk --disable-webkit --disable-guile --disable-readline make } package() { cd "${srcdir}"/${_realname} make DESTDIR="${pkgdir}" install install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE } EOF cat > "$msys2_extra_source_dir/mu/mu-readline.patch" <<\EOF diff --git a/configure.ac b/configure.ac index 9d8ebf2f..cbeb2e19 100644 --- a/configure.ac +++ b/configure.ac @@ -246,10 +246,13 @@ AM_COND_IF([BUILD_GUILE],[AC_DEFINE(BUILD_GUILE,[1], [Do we support Guile?])]) ############################################################################### # optional readline -saved_libs=$LIBS -AX_LIB_READLINE -AC_SUBST(READLINE_LIBS,${LIBS}) -LIBS=$saved_libs +AC_ARG_ENABLE([readline], AS_HELP_STRING([--disable-readline],[Disable readline])) +AS_IF([test "x$enable_readline" != "xno"], [ + saved_libs=$LIBS + AX_LIB_READLINE + AC_SUBST(READLINE_LIBS,${LIBS}) + LIBS=$saved_libs +]) ############################################################################### ############################################################################### EOF } function msys2_extra_gmime3_pkg_description () { cat > "$msys2_extra_source_dir/gmime3/PKGBUILD" <<\EOF # Maintainer: damon-kwok pkgname=gmime3 pkgver=3.2.7 pkgrel=1 pkgdesc="The GMime package contains a set of utilities for parsing and creating messages using the Multipurpose Internet Mail Extension (MIME) as defined by the applicable RFCs." arch=('i686' 'x86_64') groups=('libraries') license=('GPL') url="https://github.com/jstedfast/gmime" depends=(glib2 libiconv zlib libgpg-error) makedepends=(gcc gcc-libs make libtool autoconf automake pkg-config glib2-devel libiconv-devel zlib-devel libgpg-error-devel) provides=(libgmime-3.0.so) source=(http://ftp.gnome.org/pub/gnome/sources/gmime/3.2/gmime-${pkgver}.tar.xz) sha256sums=('2aea96647a468ba2160a64e17c6dc6afe674ed9ac86070624a3f584c10737d44') # depends=(glib2 gpgme zlib libidn2) # makedepends=(gobject-introspection gtk-doc git vala docbook-utils) # provides=(libgmime-3.0.so) # _commit=6546ed5e2935e5f99e99e0311ea6cec6d6101aaf # tags/3.2.6^0 # source=("git+https://github.com/jstedfast/gmime#commit=$_commit") # sha256sums=('SKIP') build() { cd "gmime-${pkgver}" patch -p0 < ../../install.patch autoreconf --install -f --verbose ./configure --prefix=/usr --disable-static --enable-shared make } package() { cd "${srcdir}/gmime-${pkgver}" make DESTDIR="${pkgdir}" install install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE } EOF } function msys2_extra_xapian_pkg_description () { cat > "$msys2_extra_source_dir/xapian-core/PKGBUILD" <<\EOF # Maintainer: damon-kwok pkgname=xapian-core # epoch=1 pkgver=1.4.15 pkgrel=1 pkgdesc='Open source search engine library.' arch=('i686' 'x86_64') url='https://www.xapian.org/' license=('GPL') depends=('libutil-linux' zlib) makedepends=(gcc gcc-libs make libtool autoconf automake 'libutil-linux-devel' 'zlib-devel') # xapian config requires libxapian.la options=('libtool') source=("https://oligarchy.co.uk/xapian/${pkgver}/${pkgname}-${pkgver}.tar.xz") #{,.asc}) sha512sums=('f28209acae12a42a345382668f7f7da7a2ce5a08362d0e2af63c9f94cb2adca95366499a7afa0bd9008fbfcca4fd1f2c9221e594fc2a2c740f5899e9f03ecad3') # 1.4.14 sha512sums=('c08c9abe87e08491566b7cfa8cda9e2a80e4959a647428b6d82bce7af1c967b4cb463607ffb8976372a980c163923ced36117a66e0b5a1f35659393def3d371b') # 'SKIP') # validpgpkeys=('08E2400FF7FE8FEDE3ACB52818147B073BAD2B07') # Olly Betts build() { cd ${pkgname}-${pkgver} autoreconf --install -f --verbose ./configure --prefix=/usr --disable-dependency-tracking make } package() { cd ${pkgname}-${pkgver} make DESTDIR="${pkgdir}" install } EOF } function msys2_extra_isync_pkg_description () { cat > "$msys2_extra_source_dir/isync/PKGBUILD" <<\EOF # Maintainer: damon-kwok _realname=isync # _date="`date +%Y-%m-%d`" pkgname=${_realname}-git #-${_date} pkgver=20200804 pkgrel=1 pkgdesc="isync is a command line application which synchronizes mailboxes." arch=('i686' 'x86_64') groups=('net-utils') license=('GPL-2.0') url="http://isync.sourceforge.net/" depends=('openssl' 'libsasl' 'zlib' 'libdb') makedepends=('openssl-devel' 'libsasl-devel' 'zlib-devel' 'libdb') source=("git+https://git.code.sf.net/p/isync/isync") sha256sums=('SKIP') pkgver() { cd "${srcdir}"/${_realname} # printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" git log -1 --format="%cd" --date=short | sed 's|-||g' } build() { cd "${srcdir}"/${_realname} chmod +x ./autogen.sh ./autogen.sh ./configure --prefix=/usr make } package() { cd "${srcdir}"/${_realname} make DESTDIR="${pkgdir}" install install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE } EOF }