You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

350 lines
11 KiB

# 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 <damon-kwok@outlook.com>
# 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 <damon-kwok@outlook.com>
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 <damon-kwok@outlook.com>
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 <olly@debian.org>
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 <damon-kwok@outlook.com>
_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
}