From: Robert Pluim <rpluim@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: Andy Moreton <andrewjmoreton@gmail.com>, 50985@debbugs.gnu.org
Subject: bug#50985: Merging gnulib for Emacs 28.1?
Date: Tue, 05 Oct 2021 15:44:56 +0200 [thread overview]
Message-ID: <8735pfy49z.fsf@gmail.com> (raw)
In-Reply-To: <83h7dv4oiq.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 05 Oct 2021 15:58:05 +0300")
[-- Attachment #1: Type: text/plain, Size: 1390 bytes --]
>>>>> On Tue, 05 Oct 2021 15:58:05 +0300, Eli Zaretskii <eliz@gnu.org> said:
>> From: Andy Moreton <andrewjmoreton@gmail.com>
>> Date: Tue, 05 Oct 2021 00:18:11 +0100
>>
>> In file included from C:/emacs/git/emacs/emacs-28/nt/inc/stdint.h:24,
>> from C:/emacs/git/emacs/emacs-28/nt/inc/ms-w32.h:327,
>> from C:/emacs/git/emacs/emacs-28/src/conf_post.h:44,
>> from ../src/config.h:2726,
>> from C:/emacs/git/emacs/emacs-28/lib/fingerprint.c:20:
>> ./stdint.h:89:5: error: #if with no expression
>> 89 | #if
>> | ^
>>
>> This appears to be caused by a change in "lib/stdint.h.in":
>>
>> emacs-28/lib/stint.h.in: #if @GNULIBHEADERS_OVERRIDE_WINT_T@
>> master/lib/stint.h.in: #if @GNULIB_OVERRIDES_WINT_T@
>>
>> emacs-28/configure.ac still has:
>>
>> # Emacs does not use the wchar or wctype-h modules.
>> AC_DEFUN([gt_TYPE_WINT_T],
>> [GNULIB_OVERRIDES_WINT_T=0
>> AC_SUBST([GNULIB_OVERRIDES_WINT_T])])
>>
>> It looks like this needs updating to use the new name.
Eli> Thanks, I installed this and the other change you proposed, to allow
Eli> people build Emacs, until Paul fixes this "properly".
Hereʼs what I did to get it to build --with-native-compilation. Not
pushing, since no doubt my method and commit message are all wrong :-)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Unbreak-with-native-compilation-build-after-gnulib-u.patch --]
[-- Type: text/x-diff, Size: 8312 bytes --]
From f2746d9bffc9555470049b2eab2cc5003d3f637c Mon Sep 17 00:00:00 2001
From: Robert Pluim <rpluim@gmail.com>
Date: Tue, 5 Oct 2021 15:38:00 +0200
Subject: [PATCH] Unbreak --with-native-compilation build after gnulib update
To: emacs-devel@gnu.org
Bug#50985
* admin/merge-gnulib (GNULIB_MODULES): Add crypto/md5.
* admin/merge-gnulib (AVOIDED_MODULES): Add crypto/af_alg, fflush,
fpurge, freading, fseek, fseeko, ftell, ftello, lseek, sys_socket,
sys_uio.
* lib/gnulib.mk.in: Regenerate.
* lib/md5-stream.c: New file.
* m4/gnulib-comp.m4: Regenerate.
---
admin/merge-gnulib | 4 +-
lib/gnulib.mk.in | 22 ++++++-
lib/md5-stream.c | 141 +++++++++++++++++++++++++++++++++++++++++++++
m4/gnulib-comp.m4 | 2 +
4 files changed, 167 insertions(+), 2 deletions(-)
create mode 100644 lib/md5-stream.c
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 10cc73aa73..2f476fd422 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -30,6 +30,7 @@ GNULIB_MODULES=
canonicalize-lgpl
careadlinkat close-stream copy-file-range
count-leading-zeros count-one-bits count-trailing-zeros
+ crypto/md5
crypto/md5-buffer crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
d-type diffseq double-slash-root dtoastr dtotimespec dup2
environ execinfo explicit_bzero faccessat
@@ -49,7 +50,8 @@ GNULIB_MODULES=
'
AVOIDED_MODULES='
- btowc close dup fchdir fstat langinfo lock
+ crypto/af_alg btowc close dup fchdir fstat langinfo lock
+ fflush fpurge freading fseek fseeko ftell ftello lseek sys_socket sys_uio
mbrtowc mbsinit memchr mkdir msvc-inval msvc-nothrow nl_langinfo
openat-die opendir pthread-h raise
save-cwd select setenv sigprocmask stat stdarg stdbool
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index bac27f3a68..f44b5a4170 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -34,6 +34,7 @@
# --no-libtool \
# --macro-prefix=gl \
# --no-vc-files \
+# --avoid=crypto/af_alg \
# --avoid=btowc \
# --avoid=close \
# --avoid=dup \
@@ -41,6 +42,16 @@
# --avoid=fstat \
# --avoid=langinfo \
# --avoid=lock \
+# --avoid=fflush \
+# --avoid=fpurge \
+# --avoid=freading \
+# --avoid=fseek \
+# --avoid=fseeko \
+# --avoid=ftell \
+# --avoid=ftello \
+# --avoid=lseek \
+# --avoid=sys_socket \
+# --avoid=sys_uio \
# --avoid=mbrtowc \
# --avoid=mbsinit \
# --avoid=memchr \
@@ -79,6 +90,7 @@
# count-leading-zeros \
# count-one-bits \
# count-trailing-zeros \
+# crypto/md5 \
# crypto/md5-buffer \
# crypto/sha1-buffer \
# crypto/sha256-buffer \
@@ -544,8 +556,8 @@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@
GL_GNULIB__EXIT = @GL_GNULIB__EXIT@
GMALLOC_OBJ = @GMALLOC_OBJ@
GMP_H = @GMP_H@
-GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
GNULIB_WARN_CFLAGS = @GNULIB_WARN_CFLAGS@
GNUSTEP_CFLAGS = @GNUSTEP_CFLAGS@
GNU_OBJC_CFLAGS = @GNU_OBJC_CFLAGS@
@@ -1473,6 +1485,14 @@ EXTRA_DIST += count-trailing-zeros.h
endif
## end gnulib module count-trailing-zeros
+## begin gnulib module crypto/md5
+ifeq (,$(OMIT_GNULIB_MODULE_crypto/md5))
+
+libgnu_a_SOURCES += md5-stream.c
+
+endif
+## end gnulib module crypto/md5
+
## begin gnulib module crypto/md5-buffer
ifeq (,$(OMIT_GNULIB_MODULE_crypto/md5-buffer))
diff --git a/lib/md5-stream.c b/lib/md5-stream.c
new file mode 100644
index 0000000000..fb483b7334
--- /dev/null
+++ b/lib/md5-stream.c
@@ -0,0 +1,141 @@
+/* Functions to compute MD5 message digest of files or memory blocks.
+ according to the definition of MD5 in RFC 1321 from April 1992.
+ Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2021 Free Software
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
+
+#include <config.h>
+
+/* Specification. */
+#if HAVE_OPENSSL_MD5
+# define GL_OPENSSL_INLINE _GL_EXTERN_INLINE
+#endif
+#include "md5.h"
+
+#include <stdlib.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#include "af_alg.h"
+
+#ifdef _LIBC
+# include <endian.h>
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define WORDS_BIGENDIAN 1
+# endif
+/* We need to keep the namespace clean so define the MD5 function
+ protected using leading __ . */
+# define md5_init_ctx __md5_init_ctx
+# define md5_process_block __md5_process_block
+# define md5_process_bytes __md5_process_bytes
+# define md5_finish_ctx __md5_finish_ctx
+# define md5_stream __md5_stream
+#endif
+
+#define BLOCKSIZE 32768
+#if BLOCKSIZE % 64 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* Compute MD5 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+int
+md5_stream (FILE *stream, void *resblock)
+{
+ switch (afalg_stream (stream, "md5", resblock, MD5_DIGEST_SIZE))
+ {
+ case 0: return 0;
+ case -EIO: return 1;
+ }
+
+ char *buffer = malloc (BLOCKSIZE + 72);
+ if (!buffer)
+ return 1;
+
+ struct md5_ctx ctx;
+ md5_init_ctx (&ctx);
+ size_t sum;
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ /* Either process a partial fread() from this loop,
+ or the fread() in afalg_stream may have gotten EOF.
+ We need to avoid a subsequent fread() as EOF may
+ not be sticky. For details of such systems, see:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=1190 */
+ if (feof (stream))
+ goto process_partial_block;
+
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ {
+ free (buffer);
+ return 1;
+ }
+ goto process_partial_block;
+ }
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ md5_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+process_partial_block:
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ md5_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ md5_finish_ctx (&ctx, resblock);
+ free (buffer);
+ return 0;
+}
+
+/*
+ * Hey Emacs!
+ * Local Variables:
+ * coding: utf-8
+ * End:
+ */
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index dd5bde8d79..a795fe7651 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -63,6 +63,7 @@ AC_DEFUN
# Code from module count-leading-zeros:
# Code from module count-one-bits:
# Code from module count-trailing-zeros:
+ # Code from module crypto/md5:
# Code from module crypto/md5-buffer:
# Code from module crypto/sha1-buffer:
# Code from module crypto/sha256-buffer:
@@ -1207,6 +1208,7 @@ AC_DEFUN
lib/malloc/scratch_buffer_grow.c
lib/malloc/scratch_buffer_grow_preserve.c
lib/malloc/scratch_buffer_set_array_size.c
+ lib/md5-stream.c
lib/md5.c
lib/md5.h
lib/memmem.c
--
2.33.0.363.g4c719308ce
[-- Attachment #3: Type: text/plain, Size: 13 bytes --]
Robert
--
next prev parent reply other threads:[~2021-10-05 13:44 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-03 3:42 bug#50985: Merging gnulib for Emacs 28.1? Stefan Kangas
2021-10-03 19:37 ` Paul Eggert
2021-10-04 6:37 ` Paul Eggert
2021-10-04 12:19 ` Eli Zaretskii
2021-10-04 22:26 ` Paul Eggert
2021-10-04 23:18 ` Andy Moreton
2021-10-04 23:44 ` Andy Moreton
2021-10-05 12:44 ` Ken Brown
2021-10-05 12:59 ` Eli Zaretskii
2021-10-05 12:58 ` Eli Zaretskii
2021-10-05 13:44 ` Robert Pluim [this message]
2021-10-05 14:09 ` Ken Brown
2021-10-05 14:11 ` Robert Pluim
2021-10-05 16:16 ` Paul Eggert
2021-10-05 18:15 ` Andy Moreton
2021-10-06 7:23 ` Robert Pluim
2021-10-05 16:19 ` Paul Eggert
2021-10-07 9:14 ` Lars Ingebrigtsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8735pfy49z.fsf@gmail.com \
--to=rpluim@gmail.com \
--cc=50985@debbugs.gnu.org \
--cc=andrewjmoreton@gmail.com \
--cc=eliz@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).