unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#65340: further build failure on Android (Termux)
@ 2023-08-16 10:34 Bruno Haible
  2023-08-16 12:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 12+ messages in thread
From: Bruno Haible @ 2023-08-16 10:34 UTC (permalink / raw)
  To: 65340

After getting past bug#65319 and bug#65339,
the build of Emacs in the Termux app on Android 11 fails:

$ make
...
Dumping under the name emacs.pdmp
Dumping fingerprint: 231a76223bb9dd03b59400f731ac83c210b62f43015b9f12d53894ae244c6b77
Dump complete
Byte counts: header=100 hot=3947676 discardable=70896 cold=3671984
Reloc counts: hot=441711 discardable=4726
Adding name emacs-30.0.50.1

Error: permission-denied ("Adding new name" "Permission denied" "/data/data/com.termux/files/home/emacs/src/emacs" "/data/data/com.termux/files/home/emacs/src/emacs-30.0.50.1")
  mapbacktrace(#[1028 "\1\4\203\24\0\301\302!\210\300\4!\210\301\303!\210\202\35\0\301\304!\210\3\3B\262\1\211\2035\0\300\1@!\210\211A\211\262\2\2035\0\301\305!\210\202!\0\301\306!\207" [prin1 princ "  " "(" "  (" " " ")\n"] 7 "\n\n(fn EVALD FUNC ARGS FLAGS)"])
  debug-early-backtrace()
  debug-early(error (permission-denied "Adding new name" "Permission denied" "/data/data/com.termux/files/home/emacs/src/emacs" "/data/data/com.termux/files/home/emacs/src/emacs-30.0.50.1"))
  add-name-to-file("/data/data/com.termux/files/home/emacs/src/emacs" "/data/data/com.termux/files/home/emacs/src/emacs-30.0.50.1" t)
  (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number)) (exe (if (eq system-type 'windows-nt) ".exe" ""))) (while (string-match "[^-+_.a-zA-Z0-9]+" name) (setq name (concat (downcase (substring name 0 (match-beginning 0))) "-" (substring name (match-end 0))))) (message "Adding name %s" (concat name exe)) (add-name-to-file (expand-file-name (concat "emacs" exe) invocation-directory) (expand-file-name (concat name exe) invocation-directory) t) (when (equal dump-mode "pdump") (message "Adding name %s" (concat name ".pdmp")) (add-name-to-file (expand-file-name "emacs.pdmp" invocation-directory) (expand-file-name (concat name ".pdmp") invocation-directory) t)))
  (if (not (or (eq system-type 'ms-dos) (eq system-type 'haiku) (featurep 'android) (member dump-mode '("pbootstrap" "bootstrap")))) (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number)) (exe (if (eq system-type 'windows-nt) ".exe" ""))) (while (string-match "[^-+_.a-zA-Z0-9]+" name) (setq name (concat (downcase (substring name 0 (match-beginning 0))) "-" (substring name (match-end 0))))) (message "Adding name %s" (concat name exe)) (add-name-to-file (expand-file-name (concat "emacs" exe) invocation-directory) (expand-file-name (concat name exe) invocation-directory) t) (when (equal dump-mode "pdump") (message "Adding name %s" (concat name ".pdmp")) (add-name-to-file (expand-file-name "emacs.pdmp" invocation-directory) (expand-file-name (concat name ".pdmp") invocation-directory) t))))
  (let ((output (cond ((equal dump-mode "pdump") "emacs.pdmp") ((equal dump-mode "dump") "emacs") ((equal dump-mode "bootstrap") "emacs") ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp") (t (error "Unrecognized dump mode %s" dump-mode))))) (when (and (featurep 'native-compile) (equal dump-mode "pdump")) (setq native-comp-enable-subr-trampolines t)) (message "Dumping under the name %s" output) (condition-case nil (delete-file output) (file-error nil)) (let (success) (unwind-protect (let ((tmp-dump-mode dump-mode) (dump-mode nil) (lexical-binding nil)) (if (member tmp-dump-mode '("pdump" "pbootstrap")) (dump-emacs-portable (expand-file-name output invocation-directory)) (dump-emacs output (if (eq system-type 'ms-dos) "temacs.exe" "temacs")) (message "%d pure bytes used" pure-bytes-used)) (setq success t)) (unless success (ignore-errors (delete-file output))))) (if (not (or (eq system-type 'ms-dos) (eq system-type 'haiku) (featurep 'android) (member dump-mode '("pbootstrap" "bootstrap")))) (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number)) (exe (if (eq system-type 'windows-nt) ".exe" ""))) (while (string-match "[^-+_.a-zA-Z0-9]+" name) (setq name (concat (downcase (substring name 0 (match-beginning 0))) "-" (substring name (match-end 0))))) (message "Adding name %s" (concat name exe)) (add-name-to-file (expand-file-name (concat "emacs" exe) invocation-directory) (expand-file-name (concat name exe) invocation-directory) t) (when (equal dump-mode "pdump") (message "Adding name %s" (concat name ".pdmp")) (add-name-to-file (expand-file-name "emacs.pdmp" invocation-directory) (expand-file-name (concat name ".pdmp") invocation-directory) t)))) (kill-emacs))
  (if dump-mode (let ((output (cond ((equal dump-mode "pdump") "emacs.pdmp") ((equal dump-mode "dump") "emacs")Adding new name: Permission denied, /data/data/com.termux/files/home/emacs/src/emacs, /data/data/com.termux/files/home/emacs/src/emacs-30.0.50.1
 ((equal dump-mode "bootstrap") "emacs") ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp") (t (error "Unrecognized dump mode %s" dump-mode))))) (when (and (featurep 'native-compile) (equal dump-mode "pdump")) (setq native-comp-enable-subr-trampolines t)) (message "Dumping under the name %s" output) (condition-case nil (delete-file output) (file-error nil)) (let (success) (unwind-protect (let ((tmp-dump-mode dump-mode) (dump-mode nil) (lexical-binding nil)) (if (member tmp-dump-mode '("pdump" "pbootstrap")) (dump-emacs-portable (expand-file-name output invocation-directory)) (dump-emacs output (if (eq system-type 'ms-dos) "temacs.exe" "temacs")) (message "%d pure bytes used" pure-bytes-used)) (setq success t)) (unless success (ignore-errors (delete-file output))))) (if (not (or (eq system-type 'ms-dos) (eq system-type 'haiku) (featurep 'android) (member dump-mode '("pbootstrap" "bootstrap")))) (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number)) (exe (if (eq system-type 'windows-nt) ".exe" ""))) (while (string-match "[^-+_.a-zA-Z0-9]+" name) (setq name (concat (downcase (substring name 0 (match-beginning 0))) "-" (substring name (match-end 0))))) (message "Adding name %s" (concat name exe)) (add-name-to-file (expand-file-name (concat "emacs" exe) invocation-directory) (expand-file-name (concat name exe) invocation-directory) t) (when (equal dump-mode "pdump") (message "Adding name %s" (concat name ".pdmp")) (add-name-to-file (expand-file-name "emacs.pdmp" invocation-directory) (expand-file-name (concat name ".pdmp") invocation-directory) t)))) (kill-emacs)))
  (if (eq system-type 'android) (progn (when (not noninteractive) (let ((temp-dir (getenv "TEMP")) (dump-file-name (format "%semacs-%s.pdmp" (file-name-as-directory "~") pdumper-fingerprint)) (dump-temp-file-name (format "%s~emacs-%s.pdmp" (file-name-as-directory "~") pdumper-fingerprint))) (unless (pdumper-stats) (condition-case nil (progn (dump-emacs-portable dump-temp-file-name) (rename-file dump-temp-file-name dump-file-name) nil) (error nil)))))) (if dump-mode (let ((output (cond ((equal dump-mode "pdump") "emacs.pdmp") ((equal dump-mode "dump") "emacs") ((equal dump-mode "bootstrap") "emacs") ((equal dump-mode "pbootstrap") "bootstrap-emacs.pdmp") (t (error "Unrecognized dump mode %s" dump-mode))))) (when (and (featurep 'native-compile) (equal dump-mode "pdump")) (setq native-comp-enable-subr-trampolines t)) (message "Dumping under the name %s" output) (condition-case nil (delete-file output) (file-error nil)) (let (success) (unwind-protect (let ((tmp-dump-mode dump-mode) (dump-mode nil) (lexical-binding nil)) (if (member tmp-dump-mode '("pdump" "pbootstrap")) (dump-emacs-portable (expand-file-name output invocation-directory)) (dump-emacs output (if (eq system-type 'ms-dos) "temacs.exe" "temacs")) (message "%d pure bytes used" pure-bytes-used)) (setq success t)) (unless success (ignore-errors (delete-file output))))) (if (not (or (eq system-type 'ms-dos) (eq system-type 'haiku) (featurep 'android) (member dump-mode '("pbootstrap" "bootstrap")))) (let ((name (format "emacs-%s.%d" emacs-version emacs-build-number)) (exe (if (eq system-type 'windows-nt) ".exe" ""))) (while (string-match "[^-+_.a-zA-Z0-9]+" name) (setq name (concat (downcase (substring name 0 (match-beginning 0))) "-" (substring name (match-end 0))))) (message "Adding name %s" (concat name exe)) (add-name-to-file (expand-file-name (concat "emacs" exe) invocation-directory) (expand-file-name (concat name exe) invocation-directory) t) (when (equal dump-mode "pdump") (message "Adding name %s" (concat name ".pdmp")) (add-name-to-file (expand-file-name "emacs.pdmp" invocation-directory) (expand-file-name (concat name ".pdmp") invocation-directory) t)))) (kill-emacs))))
  load("loadup.el")
make[2]: *** [Makefile:682: emacs.pdmp] Error 255
make[2]: Leaving directory '/data/data/com.termux/files/home/emacs/src'
make[1]: *** [Makefile:554: src] Error 2
make[1]: Leaving directory '/data/data/com.termux/files/home/emacs'
make[1]: Entering directory '/data/data/com.termux/files/home/emacs'
***
*** "make all" failed with exit status 2.

The problem is that the function add-name-to-file attempts to create a
hard link. However, this is not allowed, not even at the shell level:

$ ln ~/hello.c ~/hello1.c
ln: failed to create hard link '/data/data/com.termux/files/home/hello1.c' => '/data/data/com.termux/files/home/hello.c': Permission denied

The Termux people use a symbolic link instead of a hard link:
https://github.com/termux/termux-packages/blob/master/packages/emacs/src-fileio.c.patch

Bruno








^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-16 10:34 bug#65340: further build failure on Android (Termux) Bruno Haible
@ 2023-08-16 12:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-16 22:46   ` Bruno Haible
  0 siblings, 1 reply; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-16 12:39 UTC (permalink / raw)
  To: Bruno Haible; +Cc: 65340

As with the bug you previously reported, this should also now be fixed.
Please test and ack.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-16 12:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-16 22:46   ` Bruno Haible
  2023-08-17  0:49     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 12+ messages in thread
From: Bruno Haible @ 2023-08-16 22:46 UTC (permalink / raw)
  To: Po Lu; +Cc: 65340

Po Lu wrote:
> As with the bug you previously reported, this should also now be fixed.
> Please test and ack.

In my previous build, I had mistakenly forgotten to include the
configure '--host=armv7l-linux-androideabi' option. Thus my build skipped
a couple of of stumbling stones. Sorry about that.

Now, with this option included, I'm getting two other problems in the
first place:

1) Although I have installed ncurses-6.4 and put -I and -L options
so that libncurses should be found, the build fails while linking the
'temacs.tmp' executable:
----------------------------------------------------------------------
clang -ferror-limit=0 -o temacs.tmp \
  -Demacs  -I. -I. -I../lib -I../lib                          -MMD -MF deps/.d -MP                   -Wno-switch -Wno-pointer-sign -Wno-string-plus-int -Wno-unknown-attributes -Wno-unknown-pragmas -Wno-initializer-overrides -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -O2 -DHAVE_CONFIG_H    -L/data/data/com.termux/files/home/local/lib -Wl,-rpath,/data/data/com.termux/files/home/local/include \
    dispnew.o frame.o scroll.o xdisp.o menu.o  window.o charset.o coding.o category.o ccl.o character.o chartab.o bidi.o cm.o term.o terminal.o xfaces.o    emacs.o keyboard.o macros.o keymap.o sysdep.o bignum.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o cmds.o casetab.o casefiddle.o indent.o search.o regex-emacs.o undo.o alloc.o pdumper.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o sort.o font.o print.o lread.o  syntax.o  bytecode.o comp.o  process.o gnutls.o callproc.o region-cache.o sound.o timefns.o atimer.o doprnt.o intervals.o textprop.o composite.o xml.o lcms.o   profiler.o decompress.o thread.o systhread.o sqlite.o  treesit.o itree.o                tparam.o lastfile.o      ../lib/libgnu.a                                -lutil              -lm     -
 lgmp        
ld.lld: error: undefined symbol: tputs
>>> referenced by cm.c
>>>               cm.o:(cmcostinit)
>>> referenced by cm.c
>>>               cm.o:(cmcostinit)
>>> referenced by cm.c
>>>               cm.o:(cmcostinit)
>>> referenced 114 more times
>>> did you mean: fputs
>>> defined in: /system/lib/libc.so

ld.lld: error: undefined symbol: tgetent
>>> referenced by term.c
>>>               term.o:(init_tty)

ld.lld: error: undefined symbol: tgetstr
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced 76 more times

ld.lld: error: undefined symbol: tgetflag
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced 9 more times

ld.lld: error: undefined symbol: tgetnum
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced by term.c
>>>               term.o:(init_tty)
>>> referenced 4 more times

ld.lld: error: undefined symbol: PC
>>> referenced by term.c
>>>               term.o:(init_tty)
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Makefile:743: temacs] Error 1
make[2]: Leaving directory '/data/data/com.termux/files/home/emacs/src'
make[1]: *** [Makefile:554: src] Error 2
make[1]: Leaving directory '/data/data/com.termux/files/home/emacs'
make[1]: Entering directory '/data/data/com.termux/files/home/emacs'
***
*** "make all" failed with exit status 2.
----------------------------------------------------------------------

The reason is that in src/config.h, the macro TERMINFO is no longer defined.

The cause are these two pieces of configure.ac:

AC_CACHE_CHECK([for library containing tputs], [emacs_cv_tputs_lib],
[if test "${opsys}" = "mingw32" || test "$opsys" = "android"; then
  emacs_cv_tputs_lib='none required'
else
  # curses precedes termcap because of AIX (Bug#9736#35) and OpenIndiana.
  tputs_libraries='tinfo ncurses terminfo curses termcap tinfow ncursesw'


  mingw32 | android)
    TERMINFO=no
    LIBS_TERMCAP=
    ;;

$opsys is apparently 'android' in the Termux build, derived from $host_os.

I got past this stumbling block by hand-editing the generated configure
file, taking out these two comparisons of $opsys with 'android'.


2) Then it fails later, while loading "version.el":
-------------------------------------------------------------------------------
./temacs --batch  -l loadup --temacs=pbootstrap \
        --bin-dest /data/data/com.termux/files/home/local/bin/ --eln-dest /data/data/com.termux/files/home/local/lib/emacs/30.0.50/
Loading loadup.el (source)...
Dump mode: pbootstrap
Using load-path (/data/data/com.termux/files/home/emacs/lisp /data/data/com.termux/files/home/emacs/lisp/emacs-lisp /data/data/com.termux/files/home/emacs/lisp/progmodes /data/data/com.termux/files/home/emacs/lisp/language /data/data/com.termux/files/home/emacs/lisp/international /data/data/com.termux/files/home/emacs/lisp/textmodes /data/data/com.termux/files/home/emacs/lisp/vc)
Loading emacs-lisp/debug-early (source)...
Loading emacs-lisp/byte-run (source)...
Loading emacs-lisp/backquote (source)...
Loading subr (source)...
Loading keymap (source)...
Loading version (source)...
Opening input file: No such file or directory, /assets/build_info

Error: file-missing ("Opening input file" "No such file or directory" "/assets/build_info")
  mapbacktrace((closure ((prin1 . prin1) t) (evald func args _flags) (let ((args args)) (if evald (progn (princ "  ") (funcall prin1 func) (princ "(")) (progn (princ "  (") (setq args (cons func args)))) (if args (while (progn (funcall prin1 (car args)) (setq args (cdr args))) (princ " "))) (princ ")\n"))))
  (let ((print-escape-newlines t) (print-escape-control-characters t) (print-escape-nonascii t) (prin1 (if (and (fboundp 'cl-prin1) (fboundp 'cl-defmethod) (condition-case nil (require 'cl-print) (error nil))) #'cl-prin1 #'prin1))) (mapbacktrace #'(lambda (evald func args _flags) (let ((args args)) (if evald (progn (princ "  ") (funcall prin1 func) (princ "(")) (progn (princ "  (") (setq args (cons func args)))) (if args (while (progn (funcall prin1 (car args)) (setq args (cdr args))) (princ " "))) (princ ")\n")))))
  debug-early-backtrace()
  debug-early(error (file-missing "Opening input file" "No such file or directory" "/assets/build_info"))
  insert-file-contents("/assets/build_info")
  (progn (insert-file-contents "/assets/build_info") (let ((string (buffer-substring 1 (line-end-position)))) (and (not (equal string "Unknown")) string)))
  (unwind-protect (progn (insert-file-contents "/assets/build_info") (let ((string (buffer-substring 1 (line-end-position)))) (and (not (equal string "Unknown")) string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents "/assets/build_info") (let ((string (buffer-substring 1 (line-end-position)))) (and (not (equal string "Unknown")) string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (with-current-buffer temp-buffer (unwind-protect (progn (insert-file-contents "/assets/build_info") (let ((string (buffer-substring 1 (line-end-position)))) (and (not (equal string "Unknown")) string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*" t))) (with-current-buffer temp-buffer (unwind-protect (progn (insert-file-contents "/assets/build_info") (let ((string (buffer-substring 1 (line-end-position)))) (and (not (equal string "Unknown")) string))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
  (with-temp-buffer (insert-file-contents "/assets/build_info") (let ((string (buffer-substring 1 (line-end-position)))) (and (not (equal string "Unknown")) string)))
  android-read-build-system()
  (and (eq system-type 'android) (android-read-build-system))
  (or (and (eq system-type 'android) (android-read-build-system)) (system-name))
  (defconst emacs-build-system (or (and (eq system-type 'android) (android-read-build-system)) (system-name)) "Name of the system on which Emacs was built, or nil if not available.")
  load("version")
  load("loadup.el")
make[2]: *** [Makefile:1012: bootstrap-emacs.pdmp] Error 255
make[2]: Leaving directory '/data/data/com.termux/files/home/emacs/src'
make[1]: *** [Makefile:554: src] Error 2
make[1]: Leaving directory '/data/data/com.termux/files/home/emacs'
make[1]: Entering directory '/data/data/com.termux/files/home/emacs'
***
*** "make all" failed with exit status 2.
-------------------------------------------------------------------------------

Looking at version.el, this looks like some
  (eq system-type 'android)
test that was meant for the Android GUI, now applying to the Android Termux
build.


3) I'll get to testing the "Error: permission-denied" from function
add-name-to-file only after I'm past the errors 1) and 2), since it comes
from a later point in loadup.el.

Bruno








^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-16 22:46   ` Bruno Haible
@ 2023-08-17  0:49     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-17 13:50       ` Bruno Haible
  0 siblings, 1 reply; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17  0:49 UTC (permalink / raw)
  To: Bruno Haible; +Cc: 65340

Thanks, both problems you mentioned should now be fixed.

BTW, I see that config.guess doesn't detect Android when trying to
establish the operating system for a Linux-based system.  I have a
straightforward fix, but no papers for config.  So it would be expedient
for you or Paul to rewrite it independently.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-17  0:49     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-17 13:50       ` Bruno Haible
  2023-08-17 14:02         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-18  0:26         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 2 replies; 12+ messages in thread
From: Bruno Haible @ 2023-08-17 13:50 UTC (permalink / raw)
  To: Po Lu; +Cc: 65340

Po Lu wrote:
> Thanks, both problems you mentioned should now be fixed.

Thanks. configure now displays

  checking for library containing tputs... -ltinfo

But I still get a link error, due to configure.ac line 6062. I needed
to change this line
  mingw32 | android)
to
  mingw32)
in order for the build to go further.

With this done, "make" succeeds, and "make install" works fine as well.
If there are issues with "make check", I'll report them separately.

> BTW, I see that config.guess doesn't detect Android when trying to
> establish the operating system for a Linux-based system.  I have a
> straightforward fix, but no papers for config.  So it would be expedient
> for you or Paul to rewrite it independently.

Good point. Indeed, if config.guess guessed it correctly, my mistake
yesterday would not have happened.

For such tiny contributions to config.guess, no copyright assignment is needed,
per <https://www.gnu.org/prep/maintain/html_node/Legally-Significant.html>.
I filed a patch here now:
https://lists.gnu.org/archive/html/config-patches/2023-08/msg00012.html

Bruno








^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-17 13:50       ` Bruno Haible
@ 2023-08-17 14:02         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-18  0:26         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 0 replies; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-17 14:02 UTC (permalink / raw)
  To: Bruno Haible; +Cc: 65340

Bruno Haible <bruno@clisp.org> writes:

> Po Lu wrote:
>> Thanks, both problems you mentioned should now be fixed.
>
> Thanks. configure now displays
>
>   checking for library containing tputs... -ltinfo
>
> But I still get a link error, due to configure.ac line 6062. I needed
> to change this line
>   mingw32 | android)
> to
>   mingw32)
> in order for the build to go further.
>
> With this done, "make" succeeds, and "make install" works fine as
> well.

I will fix this tomorrow, and thanks.

> If there are issues with "make check", I'll report them separately.

Please do, if they reflect functionality that is actually broken on
Android (or in general), rather than bugs in our test suite.  Bear in
mind that our test results are very tenuous, even on GNU/Linux systems
that Emacs developers regularly develop and test on.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-17 13:50       ` Bruno Haible
  2023-08-17 14:02         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-18  0:26         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-18 10:55           ` Bruno Haible
  1 sibling, 1 reply; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-18  0:26 UTC (permalink / raw)
  To: Bruno Haible; +Cc: 65340

Bruno Haible <bruno@clisp.org> writes:

> Po Lu wrote:
>> Thanks, both problems you mentioned should now be fixed.
>
> Thanks. configure now displays
>
>   checking for library containing tputs... -ltinfo
>
> But I still get a link error, due to configure.ac line 6062. I needed
> to change this line
>   mingw32 | android)
> to
>   mingw32)
> in order for the build to go further.
>
> With this done, "make" succeeds, and "make install" works fine as well.
> If there are issues with "make check", I'll report them separately.

This should also be fixed now.  Please test and ack, thanks.

> I filed a patch here now:
> https://lists.gnu.org/archive/html/config-patches/2023-08/msg00012.html

Thanks for working on this.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-18  0:26         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-18 10:55           ` Bruno Haible
  2023-08-18 11:50             ` Gregory Heytings
  0 siblings, 1 reply; 12+ messages in thread
From: Bruno Haible @ 2023-08-18 10:55 UTC (permalink / raw)
  To: Po Lu; +Cc: 65340

Po Lu wrote:
> This should also be fixed now.  Please test and ack, thanks.

Thanks. Now the build succeeds!

For the record, this is my build recipe:

CONFIG_SHELL=$PREFIX/bin/sh; export CONFIG_SHELL
CC="clang -ferror-limit=0" CXX="clang++ -ferror-limit=0"; export CC CXX
# No working gdb so far -> omit debugging information.
CFLAGS="-O2"; export CFLAGS
./configure --host=armv7l-linux-androideabi --prefix=$HOME/local \
            CPPFLAGS="-Wall -I$HOME/local/include" \
            LDFLAGS="-L$HOME/local/lib -Wl,-rpath,$HOME/local/include" \
            --disable-silent-rules --without-all --without-x
make

You can close this ticket.

Bruno








^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-18 10:55           ` Bruno Haible
@ 2023-08-18 11:50             ` Gregory Heytings
  2023-08-18 12:00               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 12+ messages in thread
From: Gregory Heytings @ 2023-08-18 11:50 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Po Lu, 65340


>
> ./configure [...] --without-all --without-x
>

Note that you can also build an unrestricted Emacs under Termux.  I use 
configure options that are similar to those of the Termux people:

--disable-autodepend
--without-imagemagick
--without-libotf
--without-xaw3d
--without-gpm
--without-dbus
--without-gconf
--without-gsettings
--without-selinux
--with-json
--with-modules
--with-pdumper=yes
--with-x
--with-x-toolkit=lucid






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-18 11:50             ` Gregory Heytings
@ 2023-08-18 12:00               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-18 12:13                 ` Gregory Heytings
  0 siblings, 1 reply; 12+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-18 12:00 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Bruno Haible, 65340-done

Gregory Heytings <gregory@heytings.org> writes:

>>
>> ./configure [...] --without-all --without-x
>>
>
> Note that you can also build an unrestricted Emacs under Termux.  I
> use configure options that are similar to those of the Termux people:
>
> --disable-autodepend
> --without-imagemagick
> --without-libotf
> --without-xaw3d
> --without-gpm
> --without-dbus
> --without-gconf
> --without-gsettings
> --without-selinux
> --with-json
> --with-modules
> --with-pdumper=yes
> --with-x
> --with-x-toolkit=lucid

If you read the bug report, you would have realized that it revolves
entirely around building Emacs under Termux.  And adjustments to
config.guess to facilitate such endeavors.

Also, prior to the last several commits, building master under such an
environment was impossible.

Closing as per Bruno.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-18 12:00               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-18 12:13                 ` Gregory Heytings
  2023-08-18 12:48                   ` Bruno Haible
  0 siblings, 1 reply; 12+ messages in thread
From: Gregory Heytings @ 2023-08-18 12:13 UTC (permalink / raw)
  To: Po Lu; +Cc: Bruno Haible, 65340-done


>>> ./configure [...] --without-all --without-x
>>
>> Note that you can also build an unrestricted Emacs under Termux.
>
> If you read the bug report, you would have realized that it revolves 
> entirely around building Emacs under Termux.
>

I did read the bug report, and did realize that it "revolves entirely 
around building Emacs under Termux".  See the first sentence of my post.

>
> Also, prior to the last several commits, building master under such an 
> environment was impossible.
>

Not "impossible".  It required patches, such as those provided by the 
Termux team, some of which (or variants thereof) have now be included in 
master.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#65340: further build failure on Android (Termux)
  2023-08-18 12:13                 ` Gregory Heytings
@ 2023-08-18 12:48                   ` Bruno Haible
  0 siblings, 0 replies; 12+ messages in thread
From: Bruno Haible @ 2023-08-18 12:48 UTC (permalink / raw)
  To: Po Lu, Gregory Heytings; +Cc: 65340-done

Gregory Heytings wrote:
> > Also, prior to the last several commits, building master under such an 
> > environment was impossible.
> 
> Not "impossible".  It required patches, such as those provided by the 
> Termux team

As long as such patches are not upstream,
  - It takes a while to find these downstream patches. They are at
    https://github.com/termux/termux-packages/tree/master/packages/emacs
    but this wasn't clear to me from the beginning.
  - It is an inconvenience to reapply such downstream patches each time
    you want to build a new snapshot from upstream.
That's why I opened this ticket, to make sure that the easiest possible
Emacs configuration actually builds out-of-the-box on Termux.

If you want to upstream the remaining 12-14 downstream patches, feel free
to open a new ticket.

Bruno








^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-08-18 12:48 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-16 10:34 bug#65340: further build failure on Android (Termux) Bruno Haible
2023-08-16 12:39 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-16 22:46   ` Bruno Haible
2023-08-17  0:49     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-17 13:50       ` Bruno Haible
2023-08-17 14:02         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-18  0:26         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-18 10:55           ` Bruno Haible
2023-08-18 11:50             ` Gregory Heytings
2023-08-18 12:00               ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-18 12:13                 ` Gregory Heytings
2023-08-18 12:48                   ` Bruno Haible

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).