summaryrefslogtreecommitdiff
path: root/source/e/emacs
diff options
context:
space:
mode:
Diffstat (limited to 'source/e/emacs')
-rw-r--r--source/e/emacs/emacs.35739.patch114
-rwxr-xr-xsource/e/emacs/emacs.SlackBuild20
2 files changed, 127 insertions, 7 deletions
diff --git a/source/e/emacs/emacs.35739.patch b/source/e/emacs/emacs.35739.patch
new file mode 100644
index 00000000..2429013e
--- /dev/null
+++ b/source/e/emacs/emacs.35739.patch
@@ -0,0 +1,114 @@
+From b3df3729596332a39404c364798a61bfef2adcc2 Mon Sep 17 00:00:00 2001
+From: Stefan Monnier <monnier@iro.umontreal.ca>
+Date: Fri, 31 May 2019 00:54:05 -0400
+Subject: * lisp/emacs-lisp/package.el: Obey buffer-file-coding-system
+ (bug#35739)
+
+`url-insert-file-contents` saves in buffer-file-coding-system
+the coding-system used to decode the contents. Preserve this
+as the contents is moved from buffer to string to buffer, and use
+it when saving the contents to file, so as to try and better preserve
+the original byte sequence.
+
+(package--buffer-string, package--cs): New functions.
+(package--check-signature): Encode `string` if a coding-system
+was specified in buffer-file-coding-system.
+(package--download-one-archive, package-install-from-archive):
+Obey and preserve the buffer-file-coding-system if specified.
+
+Do not merge.
+---
+ lisp/emacs-lisp/package.el | 36 +++++++++++++++++++++++++++---------
+ 1 file changed, 27 insertions(+), 9 deletions(-)
+
+diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
+index 1a185de..46f7c91 100644
+--- a/lisp/emacs-lisp/package.el
++++ b/lisp/emacs-lisp/package.el
+@@ -1241,6 +1241,17 @@ errors."
+ (signal 'bad-signature (list sig-file)))
+ good-signatures)))
+
++(defun package--buffer-string ()
++ (let ((string (buffer-string)))
++ (when (and buffer-file-coding-system
++ (> (length string) 0))
++ (put-text-property 0 1 'package--cs buffer-file-coding-system string))
++ string))
++
++(defun package--cs (string)
++ (and (> (length string) 0)
++ (get-text-property 0 'package--cs string)))
++
+ (defun package--check-signature (location file &optional string async callback unwind)
+ "Check signature of the current buffer.
+ Download the signature file from LOCATION by appending \".sig\"
+@@ -1260,8 +1271,12 @@ Otherwise, an error is signaled.
+
+ UNWIND, if provided, is a function to be called after everything
+ else, even if an error is signaled."
+- (let ((sig-file (concat file ".sig"))
+- (string (or string (buffer-string))))
++ (let* ((sig-file (concat file ".sig"))
++ (string (or string (package--buffer-string)))
++ (cs (package--cs string)))
++ ;; Re-encode the downloaded file with the coding-system with which
++ ;; it was decoded, so we (hopefully) get the exact same bytes back.
++ (when cs (setq string (encode-coding-string string cs)))
+ (package--with-response-buffer location :file sig-file
+ :async async :noerror t
+ ;; Connection error is assumed to mean "no sig-file".
+@@ -1529,7 +1544,7 @@ similar to an entry in `package-alist'. Save the cached copy to
+ :error-form (package--update-downloads-in-progress archive)
+ (let* ((location (cdr archive))
+ (name (car archive))
+- (content (buffer-string))
++ (content (package--buffer-string))
+ (dir (expand-file-name (format "archives/%s" name) package-user-dir))
+ (local-file (expand-file-name file dir)))
+ (when (listp (read content))
+@@ -1538,7 +1553,8 @@ similar to an entry in `package-alist'. Save the cached copy to
+ (member name package-unsigned-archives))
+ ;; If we don't care about the signature, save the file and
+ ;; we're done.
+- (progn (let ((coding-system-for-write 'utf-8))
++ (progn (let ((coding-system-for-write
++ (or (package--cs content) 'utf-8)))
+ (write-region content nil local-file nil 'silent))
+ (package--update-downloads-in-progress archive))
+ ;; If we care, check it (perhaps async) and *then* write the file.
+@@ -1546,7 +1562,7 @@ similar to an entry in `package-alist'. Save the cached copy to
+ location file content async
+ ;; This function will be called after signature checking.
+ (lambda (&optional good-sigs)
+- (let ((coding-system-for-write 'utf-8))
++ (let ((coding-system-for-write (or (package--cs content) 'utf-8)))
+ (write-region content nil local-file nil 'silent))
+ ;; Write out good signatures into archive-contents.signed file.
+ (when good-sigs
+@@ -1838,15 +1854,17 @@ if all the in-between dependencies are also in PACKAGE-LIST."
+ (let ((save-silently t))
+ (package-unpack pkg-desc))
+ ;; If we care, check it and *then* write the file.
+- (let ((content (buffer-string)))
++ (let ((content (package--buffer-string)))
+ (package--check-signature
+ location file content nil
+ ;; This function will be called after signature checking.
+ (lambda (&optional good-sigs)
+ ;; Signature checked, unpack now.
+- (with-temp-buffer (insert content)
+- (let ((save-silently t))
+- (package-unpack pkg-desc)))
++ (with-temp-buffer
++ (insert content)
++ (setq buffer-file-coding-system (package--cs content))
++ (let ((save-silently t))
++ (package-unpack pkg-desc)))
+ ;; Here the package has been installed successfully, mark it as
+ ;; signed if appropriate.
+ (when good-sigs
+--
+cgit v1.0-41-gc330
+
+
diff --git a/source/e/emacs/emacs.SlackBuild b/source/e/emacs/emacs.SlackBuild
index 403663d0..e542dcd1 100755
--- a/source/e/emacs/emacs.SlackBuild
+++ b/source/e/emacs/emacs.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA
+# Copyright 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2017, 2018, 2019 Patrick J. Volkerding, Sebeka, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -20,8 +20,6 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Slackware build script for emacs-22
-
# Written by Dušan Stefanović (stefanovic.dusan@gmail.com)
# Modified by Robby Workman <rworkman@slackbuilds.org>
# Modified by Patrick Volkerding <volkerdi@slackware.com>
@@ -29,7 +27,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=emacs
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
# Determine version number the tarball is labeled with:
TARBALLVER=${TARBALLVER:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
# OK, now what's being used as the source directory version number... account
@@ -94,6 +92,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+zcat $CWD/emacs.35739.patch.gz | patch -p1 --verbose || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -107,7 +107,7 @@ CXXFLAGS="$SLKCFLAGS" \
--without-gconf \
--without-gsettings \
--with-x \
- --with-x-toolkit=gtk3 \
+ --with-x-toolkit=${X_TOOLKIT:-gtk3} \
--build=${ARCH}-slackware-linux || exit 1
make $NUMJOBS || make || exit 1
@@ -131,6 +131,8 @@ find . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+zcat $CWD/emacs.35739.patch.gz | patch -p1 --verbose || exit 1
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -207,6 +209,10 @@ mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
-cd $PKG
-/sbin/makepkg -l y -c n $TMP/$PKGNAM-$TARBALLVER-$ARCH-$BUILD.txz
+# Tag packages that use a toolkit other than default (currently gtk3):
+if [ -z "$TAG" ] && [ ! -z "$X_TOOLKIT" ]; then
+ TAG="_$X_TOOLKIT"
+fi
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$TARBALLVER-$ARCH-$BUILD$TAG.txz