You are not logged in.

#1 2018-02-04 05:30:07

ardagnir
Member
From: USA
Registered: 2012-12-04
Posts: 16
Website

PKGBUILDs for Athame (needs review)

I've created two PKGBUILDs for Athame (Vim integration for readine and zsh, see https://github.com/ardagnir/athame) but these are my first PKGBUILDs so I wanted to check here and make sure I'm not doing anything dumb.
I made them by modifying the PKGBUILDS of the non-athame readline and zsh to include the Athame stuff. I've included both the Athame PKGBUILDS and the diffs with the originals.

readline-athame:

# $Id$
# Maintainer:  James Kolb <jck1089@gmail.com>

pkgname=readline-athame
pkgbase=readline
_basever=7.0
_patchlevel=003
pkgver=${_basever}.${_patchlevel}
pkgrel=1
pkgdesc='Readline with Athame(provides full Vim mode)'
arch=('i686' 'x86_64')
url='http://github.com/ardagnir/athame/'
license=('GPL')
backup=('etc/inputrc' 'etc/athamerc')
depends=('glibc' 'ncurses' 'libncursesw.so' 'vim')
conflicts=("readline")
provides=('libhistory.so' 'libreadline.so' "readline=${_basever}")
options=('!emptydirs')
source=(git://github.com/ardagnir/athame
        git://github.com/ardagnir/vimbed
        https://ftp.gnu.org/gnu/readline/readline-$_basever.tar.gz{,.sig}
        inputrc)
validpgpkeys=('7C0135FB088AAF6C66C650B9BB5869F064EA74AB') # Chet Ramey

if [ $_patchlevel -gt 0 ]; then
    for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
        source=(${source[@]} https://ftp.gnu.org/gnu/readline/readline-$_basever-patches/readline${_basever//.}-$(printf "%03d" $_p){,.sig})
    done
fi

prepare() {
	cd "${srcdir}/athame"
	git submodule init
	git config submodule.vimbed "${srcdir}/vimbed"
	git submodule update

  cd "${srcdir}/$pkgbase-$_basever"
  for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
    msg "applying patch readline${_basever//.}-$(printf "%03d" $_p)"
    patch -p0 -i ../readline${_basever//.}-$(printf "%03d" $_p)
  done

  # remove RPATH from shared objects (FS#14366)
  sed -i 's|-Wl,-rpath,$(libdir) ||g' support/shobj-conf

	# Patch with Athame
	${srcdir}/athame/athame_patcher.sh readline ${srcdir}/athame
}

build() {
  cd $pkgbase-$_basever

  # build with -fPIC for x86_64 (FS#15634)
  [[ $CARCH == "x86_64" ]] && CFLAGS="$CFLAGS -fPIC"

  ./configure --prefix=/usr
  make SHLIB_LIBS="-lncurses -lutil" ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
}

package() {
  make -C $pkgbase-$_basever DESTDIR="$pkgdir" install
  install -Dm644 inputrc "$pkgdir"/etc/inputrc
	install -Dm644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
}

md5sums=('SKIP'
         'SKIP'
         '205b03a87fc83dab653b628c59b9fc91'
         'SKIP'
         '58d54966c1191db45973cb3191ac621a'
         'e299384458a4cbefaaac3f30e9cc2bba'
         'SKIP'
         'f9071a353e2fd52a91d32667b23715d6'
         'SKIP'
         '03595464cf0283286a6e07f4f01c4a70'
         'SKIP')

Diffs from readline:

 # $Id$
-# Maintainer:  Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
-# Contributor: Allan McRae <allan@archlinux.org>
-# Contributor: judd <jvinet@zeroflux.org>
+# Maintainer:  James Kolb <jck1089@gmail.com>
 
-pkgname=readline
+pkgname=readline-athame
+pkgbase=readline
 _basever=7.0
 _patchlevel=003
 pkgver=${_basever}.${_patchlevel}
 pkgrel=1
-pkgdesc='GNU readline library'
+pkgdesc='Readline with Athame(provides full Vim mode)'
 arch=('i686' 'x86_64')
-url='http://tiswww.case.edu/php/chet/readline/rltop.html'
+url='http://github.com/ardagnir/athame/'
 license=('GPL')
-backup=('etc/inputrc')
-depends=('glibc' 'ncurses' 'libncursesw.so')
-provides=('libhistory.so' 'libreadline.so')
+backup=('etc/inputrc' 'etc/athamerc')
+depends=('glibc' 'ncurses' 'libncursesw.so' 'vim')
+conflicts=("readline")
+provides=('libhistory.so' 'libreadline.so' "readline=${_basever}")
 options=('!emptydirs')
-source=(https://ftp.gnu.org/gnu/readline/readline-$_basever.tar.gz{,.sig}
+source=(git://github.com/ardagnir/athame
+        git://github.com/ardagnir/vimbed
+        https://ftp.gnu.org/gnu/readline/readline-$_basever.tar.gz{,.sig}
         inputrc)
 validpgpkeys=('7C0135FB088AAF6C66C650B9BB5869F064EA74AB') # Chet Ramey
 
@@ -27,7 +29,12 @@
 fi
 
 prepare() {
-  cd $pkgname-$_basever
+	cd "${srcdir}/athame"
+	git submodule init
+	git config submodule.vimbed "${srcdir}/vimbed"
+	git submodule update
+
+  cd "${srcdir}/$pkgbase-$_basever"
   for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
     msg "applying patch readline${_basever//.}-$(printf "%03d" $_p)"
     patch -p0 -i ../readline${_basever//.}-$(printf "%03d" $_p)
@@ -35,24 +42,30 @@
 
   # remove RPATH from shared objects (FS#14366)
   sed -i 's|-Wl,-rpath,$(libdir) ||g' support/shobj-conf
+
+	# Patch with Athame
+	${srcdir}/athame/athame_patcher.sh readline ${srcdir}/athame
 }
 
 build() {
-  cd $pkgname-$_basever
+  cd $pkgbase-$_basever
 
   # build with -fPIC for x86_64 (FS#15634)
   [[ $CARCH == "x86_64" ]] && CFLAGS="$CFLAGS -fPIC"
 
   ./configure --prefix=/usr
-  make SHLIB_LIBS=-lncurses
+  make SHLIB_LIBS="-lncurses -lutil" ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
 }
 
 package() {
-  make -C $pkgname-$_basever DESTDIR="$pkgdir" install
+  make -C $pkgbase-$_basever DESTDIR="$pkgdir" install
   install -Dm644 inputrc "$pkgdir"/etc/inputrc
+	install -Dm644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
 }
 
-md5sums=('205b03a87fc83dab653b628c59b9fc91'
+md5sums=('SKIP'
+         'SKIP'
+         '205b03a87fc83dab653b628c59b9fc91'
          'SKIP'
          '58d54966c1191db45973cb3191ac621a'
          'e299384458a4cbefaaac3f30e9cc2bba'

zsh-athame:

# $Id$
# Maintainer: James Kolb <jck1089@gmail.com>

pkgbase=zsh
pkgname=('zsh-athame')
pkgver=5.4.2
pkgrel=1
arch=('x86_64')
conflicts=('zsh')
provides=("zsh=${pkgver}")
url='http://github.com/ardagnir/athame/'
license=('custom')
makedepends=('pcre' 'libcap' 'gdbm')
source=("https://www.zsh.org/pub/zsh-${pkgver}"{,-doc}".tar.gz"{,.asc}
        'zprofile'
        'git://github.com/ardagnir/athame'
        'git://github.com/ardagnir/vimbed')
sha512sums=('5eaa2ff3dc8052dfb50d2be19bfeed1856b00f7c2dc698129c95c2373a516ee61dba5b42ded390ac20b171abe352b1875f177a4dda8fdc15a4f2a05bb7a024e2'
            'SKIP'
            '76cb8ec64d0ddab5562b34415f3b6837e7c6339162488ba3cf2c50e70c571b5597d5fe37d24ba0cad65ef24e6d47bba3077dc1e2016e055ad77bda951fc56b39'
            'SKIP'
            'b287e00d8de4dc4cfb1c52bb2aef1d4b191de3512baad4c91dc81e78ddc3e5bb07297f43924b022ac44ff401a348d8a9fa366e19ddc8ea1ea72df311f5ed0034'
            'SKIP'
            'SKIP')
validpgpkeys=('F7B2754C7DE2830914661F0EA71D9A9D4BDB27B3')

prepare() {
	cd "${srcdir}/athame"
	git submodule init
	git config submodule.vimbed "${srcdir}/vimbed"
	git submodule update

	cd "${srcdir}/${pkgbase}-${pkgver}"

	# Set correct keymap path
	sed -i 's#/usr/share/keymaps#/usr/share/kbd/keymaps#g' Completion/Unix/Command/_loadkeys

	# Fix usb.ids path
	sed -i 's#/usr/share/misc/usb.ids#/usr/share/hwdata/usb.ids#g' Completion/Linux/Command/_lsusb

	# Remove unneeded and conflicting completion scripts
	for _fpath in AIX BSD Cygwin Darwin Debian Mandriva openSUSE Redhat Solaris; do
		rm -rf Completion/$_fpath
		sed "s#\s*Completion/$_fpath/\*/\*##g" -i Src/Zle/complete.mdd
	done
	rm Completion/Linux/Command/_{pkgtool,rpmbuild}

	# Remove tests that don't work with the new athame behavior.
	rm Test/[XY]*.ztst

	# Patch with athame
	${srcdir}/athame/athame_patcher.sh zsh ${srcdir}/athame
}

build() {
	cd "${srcdir}/${pkgbase}-${pkgver}"

	./configure --prefix=/usr \
		--docdir=/usr/share/doc/zsh \
		--htmldir=/usr/share/doc/zsh/html \
		--enable-etcdir=/etc/zsh \
		--enable-zshenv=/etc/zsh/zshenv \
		--enable-zlogin=/etc/zsh/zlogin \
		--enable-zlogout=/etc/zsh/zlogout \
		--enable-zprofile=/etc/zsh/zprofile \
		--enable-zshrc=/etc/zsh/zshrc \
		--enable-maildir-support \
		--with-term-lib='ncursesw' \
		--enable-multibyte \
		--enable-function-subdirs \
		--enable-fndir=/usr/share/zsh/functions \
		--enable-scriptdir=/usr/share/zsh/scripts \
		--with-tcsetpgrp \
		--enable-pcre \
		--enable-cap \
		--enable-zsh-secure-free
	make ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
}

check() {
	cd "${srcdir}/${pkgbase}-${pkgver}"
	HOME="${srcdir}" make check
}

package_zsh-athame() {
	pkgdesc='Zsh with Athame: provides full vim support for Zsh'
	depends=('pcre' 'libcap' 'gdbm' 'vim')
	backup=('etc/zsh/zprofile', 'etc/athamerc')
	install=zsh.install

	cd "${srcdir}/${pkgbase}-${pkgver}"
	make DESTDIR="${pkgdir}/" install
	install -D -m644 "${srcdir}/zprofile" "${pkgdir}/etc/zsh/zprofile"
	install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
	cd "${srcdir}/athame"
	install -D -m644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
	install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
}

Diffs from zsh:

 # $Id$
-# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+# Maintainer: James Kolb <jck1089@gmail.com>
 
 pkgbase=zsh
-pkgname=('zsh' 'zsh-doc')
+pkgname=('zsh-athame')
 pkgver=5.4.2
-pkgrel=2
+pkgrel=1
 arch=('x86_64')
-url='http://www.zsh.org/'
+conflicts=('zsh')
+provides=("zsh=${pkgver}")
+url='http://github.com/ardagnir/athame/'
 license=('custom')
 makedepends=('pcre' 'libcap' 'gdbm')
 source=("https://www.zsh.org/pub/zsh-${pkgver}"{,-doc}".tar.gz"{,.asc}
-        'zprofile')
+        'zprofile'
+        'git://github.com/ardagnir/athame'
+        'git://github.com/ardagnir/vimbed')
 sha512sums=('5eaa2ff3dc8052dfb50d2be19bfeed1856b00f7c2dc698129c95c2373a516ee61dba5b42ded390ac20b171abe352b1875f177a4dda8fdc15a4f2a05bb7a024e2'
             'SKIP'
             '76cb8ec64d0ddab5562b34415f3b6837e7c6339162488ba3cf2c50e70c571b5597d5fe37d24ba0cad65ef24e6d47bba3077dc1e2016e055ad77bda951fc56b39'
             'SKIP'
-            'b287e00d8de4dc4cfb1c52bb2aef1d4b191de3512baad4c91dc81e78ddc3e5bb07297f43924b022ac44ff401a348d8a9fa366e19ddc8ea1ea72df311f5ed0034')
+            'b287e00d8de4dc4cfb1c52bb2aef1d4b191de3512baad4c91dc81e78ddc3e5bb07297f43924b022ac44ff401a348d8a9fa366e19ddc8ea1ea72df311f5ed0034'
+            'SKIP'
+            'SKIP')
 validpgpkeys=('F7B2754C7DE2830914661F0EA71D9A9D4BDB27B3')
 
 prepare() {
+	cd "${srcdir}/athame"
+	git submodule init
+	git config submodule.vimbed "${srcdir}/vimbed"
+	git submodule update
+
 	cd "${srcdir}/${pkgbase}-${pkgver}"
 
 	# Set correct keymap path
@@ -33,6 +44,12 @@
 		sed "s#\s*Completion/$_fpath/\*/\*##g" -i Src/Zle/complete.mdd
 	done
 	rm Completion/Linux/Command/_{pkgtool,rpmbuild}
+
+	# Remove tests that don't work with the new athame behavior.
+	rm Test/[XY]*.ztst
+
+	# Patch with athame
+	${srcdir}/athame/athame_patcher.sh zsh ${srcdir}/athame
 }
 
 build() {
@@ -57,7 +74,7 @@
 		--enable-pcre \
 		--enable-cap \
 		--enable-zsh-secure-free
-	make
+	make ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
 }
 
 check() {
@@ -65,23 +82,17 @@
 	HOME="${srcdir}" make check
 }
 
-package_zsh() {
-	pkgdesc='A very advanced and programmable command interpreter (shell) for UNIX'
-	depends=('pcre' 'libcap' 'gdbm')
-	backup=('etc/zsh/zprofile')
+package_zsh-athame() {
+	pkgdesc='Zsh with Athame: provides full vim support for Zsh'
+	depends=('pcre' 'libcap' 'gdbm' 'vim')
+	backup=('etc/zsh/zprofile', 'etc/athamerc')
 	install=zsh.install
 
 	cd "${srcdir}/${pkgbase}-${pkgver}"
 	make DESTDIR="${pkgdir}/" install
 	install -D -m644 "${srcdir}/zprofile" "${pkgdir}/etc/zsh/zprofile"
 	install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
-}
-
-package_zsh-doc() {
-	pkgdesc='Info, HTML and PDF format of the ZSH documentation'
-
-	cd "${srcdir}/${pkgbase}-${pkgver}"
-	make DESTDIR="${pkgdir}/" install.info install.html
-	install -D -m644 Doc/zsh.pdf "${pkgdir}/usr/share/doc/zsh/zsh.pdf"
-	install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+	cd "${srcdir}/athame"
+	install -D -m644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
+	install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
 }

Last edited by ardagnir (2018-02-04 05:32:57)

Offline

#2 2018-02-04 18:32:52

loqs
Member
Registered: 2014-03-06
Posts: 17,328

Re: PKGBUILDs for Athame (needs review)

readline-athame:

  1. No make-depends on git.

  2. Package is using git HEAD but package name is not postfixed with -git.

  3. provides=('libhistory.so' 'libreadline.so' "readline=${_basever}") the package is ABI compliant with readline?

  4. vimbed is AGPL licensed but the package is licensed GPL

  5. -# Maintainer:  Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
    -# Contributor: Allan McRae <allan@archlinux.org>
    -# Contributor: judd <jvinet@zeroflux.org>

    You removed all the previous contributors/maintainer instead of keeping them as contributors.

zsh-athame:

  1. No make-depends on git.

  2. Package is using git HEAD but package name is not postfixed with -git.

  3. vimbed is AGPL licensed,  athame is GPL licensed  but the package is licensed custom

    -# Maintainer: Pierre Schmitz <pierre@archlinux.de>

    You removed the previous maintainer instead of keeping them as a contributor.

Offline

#3 2018-02-06 06:26:10

ardagnir
Member
From: USA
Registered: 2012-12-04
Posts: 16
Website

Re: PKGBUILDs for Athame (needs review)

Thanks! I fixed all your comments. Readline-athame is ABI compliant with readline.

readline-athame-git:

# $Id$
# Maintainer:  James Kolb <jck1089@gmail.com>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>

pkgname=readline-athame-git
pkgbase=readline
_basever=7.0
_patchlevel=003
pkgver=${_basever}.${_patchlevel}
pkgrel=1
pkgdesc='Readline with Athame(provides full Vim mode)'
arch=('i686' 'x86_64')
url='http://github.com/ardagnir/athame/'
license=('GPL' 'AGPL')
backup=('etc/inputrc' 'etc/athamerc')
depends=('glibc' 'ncurses' 'libncursesw.so' 'vim')
makedepends=('git')
conflicts=("readline")
provides=('libhistory.so' 'libreadline.so' "readline=${_basever}")
options=('!emptydirs')
source=(git://github.com/ardagnir/athame
        git://github.com/ardagnir/vimbed
        https://ftp.gnu.org/gnu/readline/readline-$_basever.tar.gz{,.sig}
        inputrc)
validpgpkeys=('7C0135FB088AAF6C66C650B9BB5869F064EA74AB') # Chet Ramey

if [ $_patchlevel -gt 0 ]; then
    for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
        source=(${source[@]} https://ftp.gnu.org/gnu/readline/readline-$_basever-patches/readline${_basever//.}-$(printf "%03d" $_p){,.sig})
    done
fi

prepare() {
  cd "${srcdir}/athame"
  git submodule init
  git config submodule.vimbed "${srcdir}/vimbed"
  git submodule update

  cd "${srcdir}/$pkgbase-$_basever"
  for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
    msg "applying patch readline${_basever//.}-$(printf "%03d" $_p)"
    patch -p0 -i ../readline${_basever//.}-$(printf "%03d" $_p)
  done

  # remove RPATH from shared objects (FS#14366)
  sed -i 's|-Wl,-rpath,$(libdir) ||g' support/shobj-conf

  # Patch with Athame
  ${srcdir}/athame/athame_patcher.sh readline ${srcdir}/athame
}

build() {
  cd $pkgbase-$_basever

  # build with -fPIC for x86_64 (FS#15634)
  [[ $CARCH == "x86_64" ]] && CFLAGS="$CFLAGS -fPIC"

  ./configure --prefix=/usr
  make SHLIB_LIBS="-lncurses -lutil" ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
}

package() {
  make -C $pkgbase-$_basever DESTDIR="$pkgdir" install
  install -Dm644 inputrc "$pkgdir"/etc/inputrc
  install -Dm644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
}

md5sums=('SKIP'
         'SKIP'
         '205b03a87fc83dab653b628c59b9fc91'
         'SKIP'
         '58d54966c1191db45973cb3191ac621a'
         'e299384458a4cbefaaac3f30e9cc2bba'
         'SKIP'
         'f9071a353e2fd52a91d32667b23715d6'
         'SKIP'
         '03595464cf0283286a6e07f4f01c4a70'
         'SKIP')

zsh-athame-git:

# $Id$
# Maintainer: James Kolb <jck1089@gmail.com>
# Contributor: Pierre Schmitz <pierre@archlinux.de>

pkgbase=zsh
pkgname=('zsh-athame-git')
pkgver=5.4.2
pkgrel=1
arch=('x86_64')
conflicts=('zsh')
provides=("zsh=${pkgver}")
url='http://github.com/ardagnir/athame/'
license=('custom' 'GPL' 'AGPL')
makedepends=('pcre' 'libcap' 'gdbm' 'git')
source=("https://www.zsh.org/pub/zsh-${pkgver}"{,-doc}".tar.gz"{,.asc}
        'zprofile'
        'git://github.com/ardagnir/athame'
        'git://github.com/ardagnir/vimbed')
sha512sums=('5eaa2ff3dc8052dfb50d2be19bfeed1856b00f7c2dc698129c95c2373a516ee61dba5b42ded390ac20b171abe352b1875f177a4dda8fdc15a4f2a05bb7a024e2'
            'SKIP'
            '76cb8ec64d0ddab5562b34415f3b6837e7c6339162488ba3cf2c50e70c571b5597d5fe37d24ba0cad65ef24e6d47bba3077dc1e2016e055ad77bda951fc56b39'
            'SKIP'
            'b287e00d8de4dc4cfb1c52bb2aef1d4b191de3512baad4c91dc81e78ddc3e5bb07297f43924b022ac44ff401a348d8a9fa366e19ddc8ea1ea72df311f5ed0034'
            'SKIP'
            'SKIP')
validpgpkeys=('F7B2754C7DE2830914661F0EA71D9A9D4BDB27B3')

prepare() {
	cd "${srcdir}/athame"
	git submodule init
	git config submodule.vimbed "${srcdir}/vimbed"
	git submodule update

	cd "${srcdir}/${pkgbase}-${pkgver}"

	# Set correct keymap path
	sed -i 's#/usr/share/keymaps#/usr/share/kbd/keymaps#g' Completion/Unix/Command/_loadkeys

	# Fix usb.ids path
	sed -i 's#/usr/share/misc/usb.ids#/usr/share/hwdata/usb.ids#g' Completion/Linux/Command/_lsusb

	# Remove unneeded and conflicting completion scripts
	for _fpath in AIX BSD Cygwin Darwin Debian Mandriva openSUSE Redhat Solaris; do
		rm -rf Completion/$_fpath
		sed "s#\s*Completion/$_fpath/\*/\*##g" -i Src/Zle/complete.mdd
	done
	rm Completion/Linux/Command/_{pkgtool,rpmbuild}

	# Remove tests that don't work with the new athame behavior.
	rm Test/[XY]*.ztst

	# Patch with athame
	${srcdir}/athame/athame_patcher.sh zsh ${srcdir}/athame
}

build() {
	cd "${srcdir}/${pkgbase}-${pkgver}"

	./configure --prefix=/usr \
		--docdir=/usr/share/doc/zsh \
		--htmldir=/usr/share/doc/zsh/html \
		--enable-etcdir=/etc/zsh \
		--enable-zshenv=/etc/zsh/zshenv \
		--enable-zlogin=/etc/zsh/zlogin \
		--enable-zlogout=/etc/zsh/zlogout \
		--enable-zprofile=/etc/zsh/zprofile \
		--enable-zshrc=/etc/zsh/zshrc \
		--enable-maildir-support \
		--with-term-lib='ncursesw' \
		--enable-multibyte \
		--enable-function-subdirs \
		--enable-fndir=/usr/share/zsh/functions \
		--enable-scriptdir=/usr/share/zsh/scripts \
		--with-tcsetpgrp \
		--enable-pcre \
		--enable-cap \
		--enable-zsh-secure-free
	make ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
}

check() {
	cd "${srcdir}/${pkgbase}-${pkgver}"
	HOME="${srcdir}" make check
}

package_zsh-athame-git() {
	pkgdesc='Zsh with Athame: provides full vim support for Zsh'
	depends=('pcre' 'libcap' 'gdbm' 'vim')
	backup=('etc/zsh/zprofile', 'etc/athamerc')
	install=zsh.install

	cd "${srcdir}/${pkgbase}-${pkgver}"
	make DESTDIR="${pkgdir}/" install
	install -D -m644 "${srcdir}/zprofile" "${pkgdir}/etc/zsh/zprofile"
	install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
	cd "${srcdir}/athame"
	install -D -m644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
}

Offline

#4 2018-02-06 06:35:21

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,544

Re: PKGBUILDs for Athame (needs review)

Those pkgbase variables are going to be a problem if you want to upload it to the AUR.

You realize what a PITA this is going to be to keep in sync, right? If you update bash without updating readline at the same time after an ABI break, pacman no longer works.

Offline

#5 2018-02-06 07:14:05

ardagnir
Member
From: USA
Registered: 2012-12-04
Posts: 16
Website

Re: PKGBUILDs for Athame (needs review)

I've never had a problem with readline ABI changes. The package only provides readline 7.0, so readline would need to break ABI without incrementing the version, and it doesn't look like they like to change it much: https://abi-laboratory.pro/tracker/timeline/readline/

New version without pkgbase:

readline-athame-git:

# $Id$
# Maintainer:  James Kolb <jck1089@gmail.com>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: judd <jvinet@zeroflux.org>

pkgname=readline-athame-git
_basever=7.0
_patchlevel=003
pkgver=${_basever}.${_patchlevel}
pkgrel=1
pkgdesc='Readline with Athame(provides full Vim mode)'
arch=('i686' 'x86_64')
url='http://github.com/ardagnir/athame/'
license=('GPL' 'AGPL')
backup=('etc/inputrc' 'etc/athamerc')
depends=('glibc' 'ncurses' 'libncursesw.so' 'vim')
makedepends=('git')
conflicts=("readline")
provides=('libhistory.so.7' 'libreadline.so.7' "readline=${_basever}")
options=('!emptydirs')
source=(git://github.com/ardagnir/athame
        git://github.com/ardagnir/vimbed
        https://ftp.gnu.org/gnu/readline/readline-$_basever.tar.gz{,.sig}
        inputrc)
validpgpkeys=('7C0135FB088AAF6C66C650B9BB5869F064EA74AB') # Chet Ramey

if [ $_patchlevel -gt 0 ]; then
    for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
        source=(${source[@]} https://ftp.gnu.org/gnu/readline/readline-$_basever-patches/readline${_basever//.}-$(printf "%03d" $_p){,.sig})
    done
fi

prepare() {
  cd "${srcdir}/athame"
  git submodule init
  git config submodule.vimbed "${srcdir}/vimbed"
  git submodule update

  cd "${srcdir}/readline-$_basever"
  for (( _p=1; _p <= $((10#${_patchlevel})); _p++ )); do
    msg "applying patch readline${_basever//.}-$(printf "%03d" $_p)"
    patch -p0 -i ../readline${_basever//.}-$(printf "%03d" $_p)
  done

  # remove RPATH from shared objects (FS#14366)
  sed -i 's|-Wl,-rpath,$(libdir) ||g' support/shobj-conf

  # Patch with Athame
  ${srcdir}/athame/athame_patcher.sh readline ${srcdir}/athame
}

build() {
  cd readline-$_basever

  # build with -fPIC for x86_64 (FS#15634)
  [[ $CARCH == "x86_64" ]] && CFLAGS="$CFLAGS -fPIC"

  ./configure --prefix=/usr
  make SHLIB_LIBS="-lncurses -lutil" ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
}

package() {
  make -C readline-$_basever DESTDIR="$pkgdir" install
  install -Dm644 inputrc "$pkgdir"/etc/inputrc
  install -Dm644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
}

md5sums=('SKIP'
         'SKIP'
         '205b03a87fc83dab653b628c59b9fc91'
         'SKIP'
         '58d54966c1191db45973cb3191ac621a'
         'e299384458a4cbefaaac3f30e9cc2bba'
         'SKIP'
         'f9071a353e2fd52a91d32667b23715d6'
         'SKIP'
         '03595464cf0283286a6e07f4f01c4a70'
         'SKIP')

zsh-athame-git:

# $Id$
# Maintainer: James Kolb <jck1089@gmail.com>
# Contributor: Pierre Schmitz <pierre@archlinux.de>

pkgname=('zsh-athame-git')
pkgver=5.4.2
pkgrel=1
arch=('x86_64')
conflicts=('zsh')
provides=("zsh=${pkgver}")
url='http://github.com/ardagnir/athame/'
license=('custom' 'GPL' 'AGPL')
makedepends=('pcre' 'libcap' 'gdbm' 'git')
source=("https://www.zsh.org/pub/zsh-${pkgver}"{,-doc}".tar.gz"{,.asc}
        'zprofile'
        'git://github.com/ardagnir/athame'
        'git://github.com/ardagnir/vimbed')
sha512sums=('5eaa2ff3dc8052dfb50d2be19bfeed1856b00f7c2dc698129c95c2373a516ee61dba5b42ded390ac20b171abe352b1875f177a4dda8fdc15a4f2a05bb7a024e2'
            'SKIP'
            '76cb8ec64d0ddab5562b34415f3b6837e7c6339162488ba3cf2c50e70c571b5597d5fe37d24ba0cad65ef24e6d47bba3077dc1e2016e055ad77bda951fc56b39'
            'SKIP'
            'b287e00d8de4dc4cfb1c52bb2aef1d4b191de3512baad4c91dc81e78ddc3e5bb07297f43924b022ac44ff401a348d8a9fa366e19ddc8ea1ea72df311f5ed0034'
            'SKIP'
            'SKIP')
validpgpkeys=('F7B2754C7DE2830914661F0EA71D9A9D4BDB27B3')

prepare() {
	cd "${srcdir}/athame"
	git submodule init
	git config submodule.vimbed "${srcdir}/vimbed"
	git submodule update

	cd "${srcdir}/zsh-${pkgver}"

	# Set correct keymap path
	sed -i 's#/usr/share/keymaps#/usr/share/kbd/keymaps#g' Completion/Unix/Command/_loadkeys

	# Fix usb.ids path
	sed -i 's#/usr/share/misc/usb.ids#/usr/share/hwdata/usb.ids#g' Completion/Linux/Command/_lsusb

	# Remove unneeded and conflicting completion scripts
	for _fpath in AIX BSD Cygwin Darwin Debian Mandriva openSUSE Redhat Solaris; do
		rm -rf Completion/$_fpath
		sed "s#\s*Completion/$_fpath/\*/\*##g" -i Src/Zle/complete.mdd
	done
	rm Completion/Linux/Command/_{pkgtool,rpmbuild}

	# Remove tests that don't work with the new athame behavior.
	rm Test/[XY]*.ztst

	# Patch with athame
	${srcdir}/athame/athame_patcher.sh zsh ${srcdir}/athame
}

build() {
	cd "${srcdir}/zsh-${pkgver}"

	./configure --prefix=/usr \
		--docdir=/usr/share/doc/zsh \
		--htmldir=/usr/share/doc/zsh/html \
		--enable-etcdir=/etc/zsh \
		--enable-zshenv=/etc/zsh/zshenv \
		--enable-zlogin=/etc/zsh/zlogin \
		--enable-zlogout=/etc/zsh/zlogout \
		--enable-zprofile=/etc/zsh/zprofile \
		--enable-zshrc=/etc/zsh/zshrc \
		--enable-maildir-support \
		--with-term-lib='ncursesw' \
		--enable-multibyte \
		--enable-function-subdirs \
		--enable-fndir=/usr/share/zsh/functions \
		--enable-scriptdir=/usr/share/zsh/scripts \
		--with-tcsetpgrp \
		--enable-pcre \
		--enable-cap \
		--enable-zsh-secure-free
	make ATHAME_VIM_BIN="/usr/bin/vim" ATHAME_USE_JOBS_DEFAULT=1
}

check() {
	cd "${srcdir}/zsh-${pkgver}"
	HOME="${srcdir}" make check
}

package_zsh-athame-git() {
	pkgdesc='Zsh with Athame: provides full vim support for Zsh'
	depends=('pcre' 'libcap' 'gdbm' 'vim')
	backup=('etc/zsh/zprofile', 'etc/athamerc')
	install=zsh.install

	cd "${srcdir}/zsh-${pkgver}"
	make DESTDIR="${pkgdir}/" install
	install -D -m644 "${srcdir}/zprofile" "${pkgdir}/etc/zsh/zprofile"
	install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
	cd "${srcdir}/athame"
	install -D -m644 "${srcdir}/athame/athamerc" "${pkgdir}/etc/athamerc"
}

Offline

#6 2018-02-06 07:19:46

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,544

Re: PKGBUILDs for Athame (needs review)

And yet the last time we had a soname bump in readline, we had a bunch of people in here with broken pacman and unable to login.

Offline

#7 2018-02-06 13:07:04

NoSuck
Member
Registered: 2015-03-04
Posts: 157
Website

Re: PKGBUILDs for Athame (needs review)

Do you find much advantage to using Athame as opposed to binding, say, bash's edit-and-execute-command to be more accessible (^x^e by default)?

As Scimmia alluded to, readline is rooted pretty deep in the core of our home.  I hope Athame makes testing its #1 priority.

Offline

#8 2018-02-06 15:30:26

eschwartz
Fellow
Registered: 2014-08-08
Posts: 4,097

Re: PKGBUILDs for Athame (needs review)

You should provide libreadline.so rather than *.so.7, as makepkg contains tooling to autodetect any *.so provides or depends and give it versioning such as libreadline.so=7-64 (by using readelf on all binaries in the $pkgdir and, as appropriate, extracting the version info from either the "Shared library" dependencies, or the "Library soname" provides) -- see how our readline package does it in the PKGBUILD and in the Provides and Depends fields on the Package Details page.

Note that readline depends on a strict version of ncurses.so, while bash does not do the same with readline. It used to do the same for ncurses, as a safeguard against users doing partial updates (because an unbootable system is annoying to fix even after you've been told why partial updates are bad), but it looks like that was recently removed, not sure what the intent was though.


Managing AUR repos The Right Way -- aurpublish (now a standalone tool)

Offline

#9 2018-02-07 07:26:29

ardagnir
Member
From: USA
Registered: 2012-12-04
Posts: 16
Website

Re: PKGBUILDs for Athame (needs review)

^x^e is super annoying for people like me who are easily distracted because I do some vim thing that's muscle memory and it doesn't work and then I have to stop my train of thought and go, "oh yeah, I have to switch to vim" and then I switch to vim and it wipes all the context off my shell and I think "what was I doing again?"

I haven't had any real problems with my shell being hosed because of Athame in years and I use Athame (often with half-implemented experimental changes that aren't in master) on all of my home computers.

I removed the ".7"s from readline and added both packages to the AUR (https://aur.archlinux.org/packages/readline-athame-git/ and https://aur.archlinux.org/packages/zsh-athame-git/), though it looks like AUR doesn't show the libreadline.so=7-64 thing.

Offline

#10 2018-02-07 19:21:41

eschwartz
Fellow
Registered: 2014-08-08
Posts: 4,097

Re: PKGBUILDs for Athame (needs review)

ardagnir wrote:

I removed the ".7"s from readline and added both packages to the AUR (https://aur.archlinux.org/packages/readline-athame-git/ and https://aur.archlinux.org/packages/zsh-athame-git/), though it looks like AUR doesn't show the libreadline.so=7-64 thing.

Correct, since that is calculated during the actual packaging, not when generating srcinfo.


Managing AUR repos The Right Way -- aurpublish (now a standalone tool)

Offline

Board footer

Powered by FluxBB