unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Re: Android port
  2023-01-19 14:27               ` Android port (was: gnulib fsusage) Eli Zaretskii
@ 2023-01-19 14:34                 ` Po Lu
  2023-01-19 14:56                   ` Eli Zaretskii
  2023-01-20  6:47                 ` Android port (was: gnulib fsusage) Jean Louis
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-01-19 14:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> First, we need to decide whether we indeed want to have this in Emacs.
> Android is not a free platform, so when its support comes with a lot
> of additional non-trivial code that we'd need to understand and
> support/maintain (including a lot of Java), we had better discussed
> that first.

OK.  But to be fair, I had zero experience with Android development
myself before working on this; I have taken care to keep the Java code
as minimal as possible and comprehensible to C developers.

> If we do decide to have this, I'd definitely want more documentation
> of the internals and how they differ from the "traditional" platforms
> than you have there now, and preferably in one place, not scattered
> among the many source files, Makefile's, and READMEs.

Sure.  Please feel free to describe what you find confusing, and I will
try to document it in the README in the java directory.

> Then there are the design decisions you made: how to support windows
> and frames, how to handle the "task-killer" issues, how to handle the
> Android's access rights and privileges system, etc.

> For instance, I was quite surprised to see lack of support for scroll
> bars on account of them being "useless": I'm a happy user of an
> Android smartphone, and I use the scroll bars all the time.

I tried to find the scroll bars in a real (as in, not Emacs) Android
application, and could not find any at all.  The scroll bar in the
toolkit does not respond to input at all, and disappears after you
finish scrolling.  Besides, the Emacs scroll bar implementation I worked
on had major problems adapting to touch screen input.

> If we are to have a serious discussion of this, I'd encourage people
> to read the code of the branch and bring up issues here.

Yes, please do so.  Thanks.



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

* Re: Android port
  2023-01-19 14:34                 ` Android port Po Lu
@ 2023-01-19 14:56                   ` Eli Zaretskii
  2023-01-20  0:18                     ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-01-19 14:56 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: emacs-devel@gnu.org
> Date: Thu, 19 Jan 2023 22:34:22 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > If we do decide to have this, I'd definitely want more documentation
> > of the internals and how they differ from the "traditional" platforms
> > than you have there now, and preferably in one place, not scattered
> > among the many source files, Makefile's, and READMEs.
> 
> Sure.  Please feel free to describe what you find confusing, and I will
> try to document it in the README in the java directory.

It isn't just about the Java directory.  It's every point where the
Android port deviates from its desktop/laptop behavior.  Starting with
dumping, then the fact that we compile to shared libraries instead of
executables, etc. etc.

> > Then there are the design decisions you made: how to support windows
> > and frames, how to handle the "task-killer" issues, how to handle the
> > Android's access rights and privileges system, etc.
> 
> > For instance, I was quite surprised to see lack of support for scroll
> > bars on account of them being "useless": I'm a happy user of an
> > Android smartphone, and I use the scroll bars all the time.
> 
> I tried to find the scroll bars in a real (as in, not Emacs) Android
> application, and could not find any at all.

?? The Web browser comes to mind and the email client.  The scroll bar
in both is quite functional.



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

* Re: Android port
  2023-01-19 14:56                   ` Eli Zaretskii
@ 2023-01-20  0:18                     ` Po Lu
  2023-01-20  7:09                       ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-01-20  0:18 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> It isn't just about the Java directory.  It's every point where the
> Android port deviates from its desktop/laptop behavior.  Starting with
> dumping, then the fact that we compile to shared libraries instead of
> executables, etc. etc.

Where should that information be put?

> ?? The Web browser comes to mind and the email client.  The scroll bar
> in both is quite functional.

Ah.  Here, in Mozilla Firefox, I can't find any scroll bars at all.
K9 mail does have them, but of the disappearing kind.  What vendor made
your Android device?



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

* Re: Android port
  2023-01-20  0:18                     ` Po Lu
@ 2023-01-20  7:09                       ` Eli Zaretskii
  2023-01-20  9:39                         ` Po Lu
  2023-01-25 10:48                         ` Po Lu
  0 siblings, 2 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-01-20  7:09 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: emacs-devel@gnu.org
> Date: Fri, 20 Jan 2023 08:18:14 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > It isn't just about the Java directory.  It's every point where the
> > Android port deviates from its desktop/laptop behavior.  Starting with
> > dumping, then the fact that we compile to shared libraries instead of
> > executables, etc. etc.
> 
> Where should that information be put?

Preferably on the android_*.c files, each file with its part of the
story.  Alternatively, you could have a separate android-internals.txt
file in admin/notes/, I suppose.

> > ?? The Web browser comes to mind and the email client.  The scroll bar
> > in both is quite functional.
> 
> Ah.  Here, in Mozilla Firefox, I can't find any scroll bars at all.
> K9 mail does have them, but of the disappearing kind.  What vendor made
> your Android device?

Samsung.  I tried their own browser (which AFAIU is a derivative of
Chromium), not Firefox.

It sounds like on Android, scroll bars are not unified, and each app
provides what it wants.  But it is definitely possible to have a
functional scroll bar.



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

* Re: Android port
  2023-01-20  7:09                       ` Eli Zaretskii
@ 2023-01-20  9:39                         ` Po Lu
  2023-01-25 10:48                         ` Po Lu
  1 sibling, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-01-20  9:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Preferably on the android_*.c files, each file with its part of the
> story.  Alternatively, you could have a separate android-internals.txt
> file in admin/notes/, I suppose.

OK, thanks.  I think the latter would be easier.

>> > ?? The Web browser comes to mind and the email client.  The scroll bar
>> > in both is quite functional.
>> 
>> Ah.  Here, in Mozilla Firefox, I can't find any scroll bars at all.
>> K9 mail does have them, but of the disappearing kind.  What vendor made
>> your Android device?
>
> Samsung.  I tried their own browser (which AFAIU is a derivative of
> Chromium), not Firefox.

Thanks.  I'll take a look at what the Samsung browser does.

> It sounds like on Android, scroll bars are not unified, and each app
> provides what it wants.  But it is definitely possible to have a
> functional scroll bar.

I guess so.  The non-functional scroll bar I was referring to is the
scroll bar provided by the Android toolkit as part of the ScrollView
widget.



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

* Re: Android port
  2023-01-20  7:09                       ` Eli Zaretskii
  2023-01-20  9:39                         ` Po Lu
@ 2023-01-25 10:48                         ` Po Lu
  2023-01-26  8:59                           ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-01-25 10:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Preferably on the android_*.c files, each file with its part of the
> story.  Alternatively, you could have a separate android-internals.txt
> file in admin/notes/, I suppose.

I ended up putting a significant writeup in java/README, as that's where
the Nextstep port has its documentation, which is supposed to teach us
Emacs developers Objective-C.

Would you please read it and say what you think?
I will extend it in the next few days to describe more of the GUI code
as well.

Thanks.



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

* Re: Android port
  2023-01-25 10:48                         ` Po Lu
@ 2023-01-26  8:59                           ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-01-26  8:59 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: emacs-devel@gnu.org
> Date: Wed, 25 Jan 2023 18:48:05 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Preferably on the android_*.c files, each file with its part of the
> > story.  Alternatively, you could have a separate android-internals.txt
> > file in admin/notes/, I suppose.
> 
> I ended up putting a significant writeup in java/README, as that's where
> the Nextstep port has its documentation, which is supposed to teach us
> Emacs developers Objective-C.
> 
> Would you please read it and say what you think?

Thanks, will do when I have time.



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

* Re: Android port
  2023-01-28  7:50                     ` Konstantin Kharlamov
  2023-01-28  8:49                       ` Eli Zaretskii
@ 2023-01-28  9:57                       ` Po Lu
  2023-01-28 10:23                         ` Konstantin Kharlamov
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-01-28  9:57 UTC (permalink / raw)
  To: Konstantin Kharlamov; +Cc: Eli Zaretskii, Jean Louis, emacs-devel

Konstantin Kharlamov <hi-angel@yandex.ru> writes:

> On Fri, 2023-01-20 at 09:19 +0200, Eli Zaretskii wrote:
>> > Date: Fri, 20 Jan 2023 09:47:34 +0300
>> > From: Jean Louis <bugs@gnu.support>
>> > Cc: Po Lu <luangruo@yahoo.com>, emacs-devel@gnu.org
>> > 
>> > * Eli Zaretskii <eliz@gnu.org> [2023-01-19 17:28]:
>> > > First, we need to decide whether we indeed want to have this in Emacs.
>> > > Android is not a free platform, so when its support comes with a lot
>> > > of additional non-trivial code that we'd need to understand and
>> > > support/maintain (including a lot of Java), we had better discussed
>> > > that first.
>> > 
>> > Replicant is free platform.
>> 
>> That fact is not relevant to this discussion.
>
> I think the point Jean meant to make is that Android platform per se isn't
> closed, even if the unfortunate situation is that many vendors ship a lot of
> closed code, mainly drivers (tho situation with closed drivers is slowly
> improving, Google seem to be working on that).

Google is working on allowing the proprietary drivers to run alongside
any version of Linux, not on removing them entirely.

Google themselves develop Play Services, arguably the most problematic
piece of proprietary software in Android.

> The link Jean posted is just one of (free and open source) derivatives of
> Android platform. The other one very popular comes to mind was CyanogenMod,
> which later was succeeded by LineageOS.

LineageOS and CyanogenMod are not free software, because both contain
proprietary device driver files, and in the case of CyanogenMod,
proprietary user level libraries as well.

AOSP, on the other hand, is really free software.  But that doesn't help
when you can only run it in an emulator.

If you had read the Android appendix of the Emacs manual, you would have
seen that it explains this situation:

H.1 Android history
===================

Android is an operating system for mobile devices developed by the Open
Handset Alliance, a group of companies interested in developing handsets
that can run a common set of software.  It is supposedly free software.

   Like the X Consortium of times past, the Open Handset Alliance
believes that “openness” (namely, the regular release of the Android
source code) is simply a tool to increase the popularity of the Android
platform.  Computer companies normally produce proprietary software.
The companies in the Open Handset Alliance are no different – most
versions of Android installed on devices are proprietary, by virtue of
containing proprietary components, that often cannot even be replaced by
the user.

   Android is not designed to respect users’ freedom.  Almost all
versions of Android (including some which are supposedly free software)
include support for Digital Restrictions Management, technology that is
designed to limit users’ ability to copy media to and from their own
devices.  Most Android devices also come with proprietary Google
applications which are required to run the system, and many other
Android applications.

   Thus, it must be necessary to consider Android proprietary software
from a practical standpoint.  That is an injustice.  If you use Android,
we urge you to switch to a free operating system, if only for your
freedom’s sake.

   We support GNU Emacs on proprietary operating systems because we hope
this taste of freedom will inspire users to escape from them.



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

* Re: Android port
  2023-01-28  9:31                             ` Konstantin Kharlamov
@ 2023-01-28  9:59                               ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-01-28  9:59 UTC (permalink / raw)
  To: Konstantin Kharlamov; +Cc: Eli Zaretskii, bugs, emacs-devel

Konstantin Kharlamov <hi-angel@yandex.ru> writes:

> Please don't generalize actions of individual companies to the platform as whole. Your reply doesn't make my statement false, because the original Android is the one where no such vendor additions were made.
>
> Either way, I doubt Po is planning to make any use of such proprietary
> additions, so discussing those additions has no value.

We are not going to use features only in proprietary versions of Android
because we hope that the resulting Emacs binaries will also work on free
operating systems such as AOSP and Replicant.

But Android itself is proprietary from a practical standpoint, so we
will continue to treat it as a proprietary platform wrt its support in
Emacs, if only because free Android is available for a minuscule amount
of users.



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

* Re: Android port
  2023-01-28  9:57                       ` Po Lu
@ 2023-01-28 10:23                         ` Konstantin Kharlamov
  0 siblings, 0 replies; 205+ messages in thread
From: Konstantin Kharlamov @ 2023-01-28 10:23 UTC (permalink / raw)
  To: Po Lu; +Cc: Eli Zaretskii, Jean Louis, emacs-devel

On Sat, 2023-01-28 at 17:57 +0800, Po Lu wrote:
> Google is working on allowing the proprietary drivers to run alongside
> any version of Linux, not on removing them entirely.
> 
> Google themselves develop Play Services, arguably the most problematic
> piece of proprietary software in Android.
> 
> > The link Jean posted is just one of (free and open source) derivatives of
> > Android platform. The other one very popular comes to mind was CyanogenMod,
> > which later was succeeded by LineageOS.
> 
> LineageOS and CyanogenMod are not free software, because both contain
> proprietary device driver files, and in the case of CyanogenMod,
> proprietary user level libraries as well.
> 
> AOSP, on the other hand, is really free software.  But that doesn't help
> when you can only run it in an emulator.
> 
> If you had read the Android appendix of the Emacs manual, you would have
> seen that it explains this situation:

I didn't because a link to the branch was never posted in the thread ☺

Either way, now I see the point you are trying to make as you're using an
expression "from a practical standpoint it is closed". So, like, in theory it is
open, but in practice no device runs the original Android.

In my head I still can't connect the relevance of that "practice" to Emacs
Android  port though, because you can treat the port as a program that is
supposed to run on the original open platform, and then, almost "accidentally"
(not really, but I hope you see my point), as an app that can run on any other
Android device…

But I won't be going into that further because my main motivation for
participation was to make sure your work on making the port isn't wasted, which,
judging by your reply, seem to have been resolved before I joined.

So, anyway, thanks for your work!



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

* Android port
       [not found] <87ttzkmrw1.fsf.ref@yahoo.com>
@ 2023-02-17 11:51 ` Po Lu
  2023-02-17 12:26   ` Eric S Fraga
                     ` (4 more replies)
  0 siblings, 5 replies; 205+ messages in thread
From: Po Lu @ 2023-02-17 11:51 UTC (permalink / raw)
  To: emacs-devel

I believe the Android port of Emacs is now more or less feature
complete.

It can be found on the feature/android branch of the Emacs repository,
and should support all (mipsel, arm, armv7l, mips64, aarch64 and x86)
Android devices capable of running Android 2.2 or later.  You can obtain
a check out of that code like so:

  $ git clone git://git.sv.gnu.org/emacs.git -b feature/android

Please give it as much testing as you can on real hardware from many
different Android vendors.  Follow the instructions in INSTALL.android
to build and install Emacs for your specific device.  In addition,
please submit patches and report editing modes that do not work well
with the input methods of various on screen keyboards, along with other
bugs, using ``M-x report-emacs-bug RET.''

The answers to various common questions (such as ``how to access
external storage'', or ``where does Emacs put its init.el'') are in the
Android appendix of the Emacs manual in the branch.

Prebuilt binaries will be made available shortly, but please do not
expect them to contain all dependencies with which Emacs can be built.
At present, I don't recommend using binaries from f-droid.org, since
they are out of date, but I will ask the f-droid packagers to rectify
that problem.

I will post this news to comp.emacs; please post this to other forums
frequented by Emacs users as well.



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

* Re: Android port
  2023-02-17 11:51 ` Po Lu
@ 2023-02-17 12:26   ` Eric S Fraga
  2023-02-17 12:56   ` Arsen Arsenović
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 205+ messages in thread
From: Eric S Fraga @ 2023-02-17 12:26 UTC (permalink / raw)
  To: emacs-devel

On Friday, 17 Feb 2023 at 19:51, Po Lu wrote:
> I believe the Android port of Emacs is now more or less feature
> complete.

Excellent.  Thank you!

> Prebuilt binaries will be made available shortly, but please do not
> expect them to contain all dependencies with which Emacs can be built.
> At present, I don't recommend using binaries from f-droid.org, since
> they are out of date, but I will ask the f-droid packagers to rectify
> that problem.

I look forward to having these binaries available.  I had already
installed an earlier version from f-droid but would like to test this
latest version.  Note that I am testing on a system probably more suited
to Emacs than the typical phone as mine has a physical keyboard: Planet
Computers Gemini.  Screenshot of Emacs on that phone:

https://fediscience.org/@ericsfraga/109863360504898593

-- 
Eric S Fraga via gnus (Emacs 30.0.50 2023-02-14) on Debian 11.5




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

* Re: Android port
  2023-02-17 11:51 ` Po Lu
  2023-02-17 12:26   ` Eric S Fraga
@ 2023-02-17 12:56   ` Arsen Arsenović
  2023-02-17 13:05     ` Po Lu
  2023-02-19 11:17     ` Arsen Arsenović
  2023-02-17 13:50   ` tomas
                     ` (2 subsequent siblings)
  4 siblings, 2 replies; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-17 12:56 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2023 bytes --]

Hi,

Po Lu <luangruo@yahoo.com> writes:

> I believe the Android port of Emacs is now more or less feature
> complete.
>
> It can be found on the feature/android branch of the Emacs repository,
> and should support all (mipsel, arm, armv7l, mips64, aarch64 and x86)
> Android devices capable of running Android 2.2 or later.  You can obtain
> a check out of that code like so:
>
>   $ git clone git://git.sv.gnu.org/emacs.git -b feature/android
>
> Please give it as much testing as you can on real hardware from many
> different Android vendors.  Follow the instructions in INSTALL.android
> to build and install Emacs for your specific device.  In addition,
> please submit patches and report editing modes that do not work well
> with the input methods of various on screen keyboards, along with other
> bugs, using ``M-x report-emacs-bug RET.''
>
> The answers to various common questions (such as ``how to access
> external storage'', or ``where does Emacs put its init.el'') are in the
> Android appendix of the Emacs manual in the branch.
>
> Prebuilt binaries will be made available shortly, but please do not
> expect them to contain all dependencies with which Emacs can be built.
> At present, I don't recommend using binaries from f-droid.org, since
> they are out of date, but I will ask the f-droid packagers to rectify
> that problem.
>
> I will post this news to comp.emacs; please post this to other forums
> frequented by Emacs users as well.

Thanks for the effort.  I was quite excited for this.

For now, I was trying to make an out-of-tree build without gnutls.  This
configuration appears to be broken (though, not due to gnutls):

  make[2]: Entering directory '/home/arsen/gnu/emacs-android/build/java'
  make[2]: *** No rule to make target '../java/Makefile.in', needed by 'Makefile'.  Stop.
  make[2]: Leaving directory '/home/arsen/gnu/emacs-android/build/java'

I'll report a fix when I come up with one.

Have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-17 12:56   ` Arsen Arsenović
@ 2023-02-17 13:05     ` Po Lu
  2023-02-17 13:21       ` Arsen Arsenović
  2023-02-19 11:17     ` Arsen Arsenović
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-17 13:05 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: emacs-devel

Arsen Arsenović <arsen@aarsen.me> writes:

> Hi,
>
> Po Lu <luangruo@yahoo.com> writes:
>
>> I believe the Android port of Emacs is now more or less feature
>> complete.
>>
>> It can be found on the feature/android branch of the Emacs repository,
>> and should support all (mipsel, arm, armv7l, mips64, aarch64 and x86)
>> Android devices capable of running Android 2.2 or later.  You can obtain
>> a check out of that code like so:
>>
>>   $ git clone git://git.sv.gnu.org/emacs.git -b feature/android
>>
>> Please give it as much testing as you can on real hardware from many
>> different Android vendors.  Follow the instructions in INSTALL.android
>> to build and install Emacs for your specific device.  In addition,
>> please submit patches and report editing modes that do not work well
>> with the input methods of various on screen keyboards, along with other
>> bugs, using ``M-x report-emacs-bug RET.''
>>
>> The answers to various common questions (such as ``how to access
>> external storage'', or ``where does Emacs put its init.el'') are in the
>> Android appendix of the Emacs manual in the branch.
>>
>> Prebuilt binaries will be made available shortly, but please do not
>> expect them to contain all dependencies with which Emacs can be built.
>> At present, I don't recommend using binaries from f-droid.org, since
>> they are out of date, but I will ask the f-droid packagers to rectify
>> that problem.
>>
>> I will post this news to comp.emacs; please post this to other forums
>> frequented by Emacs users as well.
>
> Thanks for the effort.  I was quite excited for this.
>
> For now, I was trying to make an out-of-tree build without gnutls.  This
> configuration appears to be broken (though, not due to gnutls):
>
>   make[2]: Entering directory '/home/arsen/gnu/emacs-android/build/java'
>   make[2]: *** No rule to make target '../java/Makefile.in', needed by 'Makefile'.  Stop.
>   make[2]: Leaving directory '/home/arsen/gnu/emacs-android/build/java'
>
> I'll report a fix when I come up with one.
>
> Have a lovely day.

Out of tree builds are currently not supported because of some specifics
related to the ``aapt'' tool and ``ndk-build'' system used by Android.

I'd not attempt wasting time trying to fix that.



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

* Re: Android port
  2023-02-17 13:05     ` Po Lu
@ 2023-02-17 13:21       ` Arsen Arsenović
  0 siblings, 0 replies; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-17 13:21 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 420 bytes --]

Hi,

Po Lu <luangruo@yahoo.com> writes:

> Out of tree builds are currently not supported because of some specifics
> related to the ``aapt'' tool and ``ndk-build'' system used by Android.
>
> I'd not attempt wasting time trying to fix that.

Sure.  In-tree worked as expected, and I see Emacs on the phone.  I'll
try porting more tangible parts of my scripts in a few days.

Thanks.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-17 11:51 ` Po Lu
  2023-02-17 12:26   ` Eric S Fraga
  2023-02-17 12:56   ` Arsen Arsenović
@ 2023-02-17 13:50   ` tomas
  2023-02-21 13:41   ` Po Lu
  2023-03-10 20:07   ` Etienne Prud'homme
  4 siblings, 0 replies; 205+ messages in thread
From: tomas @ 2023-02-17 13:50 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 216 bytes --]

On Fri, Feb 17, 2023 at 07:51:42PM +0800, Po Lu wrote:
> I believe the Android port of Emacs is now more or less feature
> complete.

Not an Android user here, but: this is huge. Thanks a lot!

Cheers
-- 
t

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* Re: Android port
@ 2023-02-18  8:35 Angelo Graziosi
  2023-02-18  8:42 ` Po Lu
  2023-02-18 18:12 ` Jean Louis
  0 siblings, 2 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-18  8:35 UTC (permalink / raw)
  To: emacs-devel@gnu.org

Just out of curiosity,

Po Lu wrote:

> At present, I don't recommend using binaries from f-droid.org, since
> they are out of date, but I will ask the f-droid packagers to rectify
> that problem.

I see (https://f-droid.org/it/packages/org.gnu.emacs) the package was added on 2023-02-09.. Why is it not "good"? has it been built with your method or does it belong to another project? Which?

There it says the package is for Android >= 5.1 while you says your work is for Android > 2...

TIA,
 Angelo.



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

* Re: Android port
  2023-02-18  8:35 Android port Angelo Graziosi
@ 2023-02-18  8:42 ` Po Lu
  2023-02-18 21:58   ` Angelo Graziosi
  2023-02-18 18:12 ` Jean Louis
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-18  8:42 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> I see (https://f-droid.org/it/packages/org.gnu.emacs) the package was
> added on 2023-02-09.. Why is it not "good"? has it been built with
> your method or does it belong to another project? Which?

It was made 10 days ago.

> There it says the package is for Android >= 5.1 while you says your
> work is for Android > 2...

The C compiler they used is too new for the resulting binary to work on
older versions of Android.

Emacs is not like other programs, where one binary can run on any number
of systems.  You should build Emacs for an API level reasonably close to
what you will install it on, and with the right C compiler for that.

Otherwise, you will get gnulib substitutes for several system functions,
which may not be what you want.



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

* Re: Android port
  2023-02-18  8:35 Android port Angelo Graziosi
  2023-02-18  8:42 ` Po Lu
@ 2023-02-18 18:12 ` Jean Louis
  2023-02-19  8:31   ` Po Lu
  1 sibling, 1 reply; 205+ messages in thread
From: Jean Louis @ 2023-02-18 18:12 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

* Angelo Graziosi <angelo.g0@libero.it> [2023-02-18 11:37]:
> Just out of curiosity,
> 
> Po Lu wrote:
> 
> > At present, I don't recommend using binaries from f-droid.org, since
> > they are out of date, but I will ask the f-droid packagers to rectify
> > that problem.
> 
> I see (https://f-droid.org/it/packages/org.gnu.emacs) the package was added on 2023-02-09.. Why is it not "good"? has it been built with your method or does it belong to another project? Which?

I can't play Tetris, Emacs aborts.

-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



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

* Re: Android port
  2023-02-18  8:42 ` Po Lu
@ 2023-02-18 21:58   ` Angelo Graziosi
  2023-02-19  2:13     ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-18 21:58 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org

> Il 18/02/2023 09:42 Po Lu ha scritto:
> 
> It was made 10 days ago.
> 

I gave a try to the F-Droid package installing it on a device with android 11. I use this device with mouse and keyboard (the delete key does not work in Emacs). 

I enabled Emacs to have access to all the files.

When I start Emacs there is a notification [See (emacs) Android Environment for more details about this notification]: what it means is a mystery.

The font on this system is too small and I would increase it as I do, for example, with my build on GNU/Linux. But How is this font called? I cannot establish this from Options - Set Default Font

It seems that HOME (~/) is "/data/data/org.gnu/files" which cannot be accessed from, for example, Termux (this app has access to /data/data/com.termux/). So it is hard (but not impossible) to comunicate with the "external world" (for example to move an init.el, taken from another system,  to ~/.emacs.d/: this would facilitate the setup of this android Emacs.

In any case, I created a ~/.emacs.d/init.el and added something like

(global-tab-line-mode 1)

(setq tab-line-tabs-function 'tab-line-tabs-buffer-groups)
(setq tab-line-close-tab-function 'kill-buffer)

(setq auto-save-list-file-prefix nil)

(column-number-mode 1)
(delete-selection-mode 1)
(electric-pair-mode 1)
(savehist-mode 1)
(tool-bar-mode -1)

Needless to say, Emacs crashes all the time and I have to try many times to write that. And if I add

(desktop-save-mode 1)

it crashes during startup, mainly if one want to load desktop file blocked by the lock file left there by previous crash..

BTW, the About Emacs says it is a

  build 1, aarch64-unknown-linux-android220 of 2023-02-18

Why 2023-02-18 if the package was made 10 days ago?



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

* Re: Android port
  2023-02-18 21:58   ` Angelo Graziosi
@ 2023-02-19  2:13     ` Po Lu
  2023-02-19  9:01       ` Angelo Graziosi
  2023-02-19 11:30       ` Peter Oliver
  0 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-02-19  2:13 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> I gave a try to the F-Droid package installing it on a device with
> android 11. I use this device with mouse and keyboard (the delete key
> does not work in Emacs).
>
> I enabled Emacs to have access to all the files.
>
> When I start Emacs there is a notification [See (emacs) Android
> Environment for more details about this notification]: what it means
> is a mystery.

As it says, you should read the node ``Android Environment'' in the
Emacs manual.  This notification is displayed to prevent Emacs from
being killed after entering the background.

> The font on this system is too small and I would increase it as I do,
> for example, with my build on GNU/Linux. But How is this font called?
> I cannot establish this from Options - Set Default Font
>
> It seems that HOME (~/) is "/data/data/org.gnu/files" which cannot be
> accessed from, for example, Termux (this app has access to
> /data/data/com.termux/). So it is hard (but not impossible) to
> comunicate with the "external world" (for example to move an init.el,
> taken from another system, to ~/.emacs.d/: this would facilitate the
> setup of this android Emacs.

Android security policy prevents applications from accessing each others
home directories, so yes, it is not easy to access.

Copying an init.el from another system is best done through the system
file manager or by copying the files into Emacs's home directory via the
external storage.

File managers on most proprietary versions of Android refuse to display
Emacs's home directory, because they are more keen to display
advertisements than to actually manage files.

> In any case, I created a ~/.emacs.d/init.el and added something like
>
> (global-tab-line-mode 1)
>
> (setq tab-line-tabs-function 'tab-line-tabs-buffer-groups)
> (setq tab-line-close-tab-function 'kill-buffer)
>
> (setq auto-save-list-file-prefix nil)
>
> (column-number-mode 1)
> (delete-selection-mode 1)
> (electric-pair-mode 1)
> (savehist-mode 1)
> (tool-bar-mode -1)
>
> Needless to say, Emacs crashes all the time and I have to try many
> times to write that. And if I add

First, try with an up to date build.  Next, please show the output of
the following command with your device connected to a computer (once
again, this is described in the Android appendix of the Emacs manual, so
please read it.)

  adb logcat | grep android_run_debug_thread

> (desktop-save-mode 1)
>
> it crashes during startup, mainly if one want to load desktop file
> blocked by the lock file left there by previous crash..

I will look into that.

> BTW, the About Emacs says it is a
>
>   build 1, aarch64-unknown-linux-android220 of 2023-02-18
>
> Why 2023-02-18 if the package was made 10 days ago?

Android does not correctly report the date of an executable.
It is always the present.



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

* Re: Android port
  2023-02-18 18:12 ` Jean Louis
@ 2023-02-19  8:31   ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-02-19  8:31 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Jean Louis <bugs@gnu.support> writes:

> * Angelo Graziosi <angelo.g0@libero.it> [2023-02-18 11:37]:
>> Just out of curiosity,
>> 
>> Po Lu wrote:
>> 
>> > At present, I don't recommend using binaries from f-droid.org, since
>> > they are out of date, but I will ask the f-droid packagers to rectify
>> > that problem.
>> 
>> I see (https://f-droid.org/it/packages/org.gnu.emacs) the package was added on 2023-02-09.. Why is it not "good"? has it been built with your method or does it belong to another project? Which?
>
> I can't play Tetris, Emacs aborts.

Please show a backtrace from ``adb logcat''.



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

* Re: Android port
  2023-02-19  2:13     ` Po Lu
@ 2023-02-19  9:01       ` Angelo Graziosi
  2023-02-19  9:24         ` Dov Grobgeld
                           ` (2 more replies)
  2023-02-19 11:30       ` Peter Oliver
  1 sibling, 3 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-19  9:01 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 19/02/2023 03:13 Po Lu ha scritto:
> 
> As it says, you should read the node ``Android Environment'' in the
> Emacs manual.  This notification is displayed to prevent Emacs from
> being killed after entering the background.

I did but many things are still unclear..

> Copying an init.el from another system is best done through the system
> file manager or by copying the files into Emacs's home directory via the
> external storage.
> 

Here the file manager does not show Emacs directory.. or at least I cannot find it.. It is unclear the last sentence: from Emacs I can visit a file, say in /sdcard/Download/, but HOW copy it in Emacs, say in ~/?

> File managers on most proprietary versions of Android refuse to display
> Emacs's home directory, because they are more keen to display
> advertisements than to actually manage files.

..so this way could be unusable here...


> First, try with an up to date build.  

Let's wait for an F-Droid update, then..

> 
>   adb logcat | grep android_run_debug_thread
> 

to run the above or similar I should install adb on GNU/Linux (Mint in my case)? and how to connect the device? with its cable? I never did this because I transfer files via ssh and similar.. BTW, I have adb installed in Termux on the same device.. I wonder if I can use that..

In any case,
 Thanks!



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

* Re: Android port
  2023-02-19  9:01       ` Angelo Graziosi
@ 2023-02-19  9:24         ` Dov Grobgeld
  2023-02-19 10:17           ` Michael Albinus
  2023-02-19 10:55           ` Po Lu
  2023-02-19 10:40         ` Arsen Arsenović
  2023-02-19 10:53         ` Po Lu
  2 siblings, 2 replies; 205+ messages in thread
From: Dov Grobgeld @ 2023-02-19  9:24 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Po Lu, emacs-devel@gnu.org

Finally something that I can answer. :-)

To use adb on Linux you need to do the following:

1. Enable debug mode on the android device. The way you do this
depends on the device, but it typically involves tapping five to seven
times on the system about kernel version. Look for it on the web.
2. After enabling debug mode looking for "USB debugging" on the device
and turn it on.
3. Connect the android device to the computer by cable.
4. Run `adb shell` on your computer. This will fail to connect because
of permissions.
5. On the android device you will get a popup asking whether you want
to allow usb debugging from your computer. Confirm this.
6. Back in the computer terminal do a `killall adb` to remove the
previous adb process (it installs itself as a server). And redo it.
7. You will now have a shell into your device. :-)

You can use adb to copy files `adb push` and `adb pull` to the device.

You can also use `adb logcat` and filter the output by regexps.

Hope this helps!

Looking forward to using emacs on my android tablet!

Dov


On Sun, Feb 19, 2023 at 11:02 AM Angelo Graziosi <angelo.g0@libero.it> wrote:
>
>
> > Il 19/02/2023 03:13 Po Lu ha scritto:
> >
> > As it says, you should read the node ``Android Environment'' in the
> > Emacs manual.  This notification is displayed to prevent Emacs from
> > being killed after entering the background.
>
> I did but many things are still unclear..
>
> > Copying an init.el from another system is best done through the system
> > file manager or by copying the files into Emacs's home directory via the
> > external storage.
> >
>
> Here the file manager does not show Emacs directory.. or at least I cannot find it.. It is unclear the last sentence: from Emacs I can visit a file, say in /sdcard/Download/, but HOW copy it in Emacs, say in ~/?
>
> > File managers on most proprietary versions of Android refuse to display
> > Emacs's home directory, because they are more keen to display
> > advertisements than to actually manage files.
>
> ..so this way could be unusable here...
>
>
> > First, try with an up to date build.
>
> Let's wait for an F-Droid update, then..
>
> >
> >   adb logcat | grep android_run_debug_thread
> >
>
> to run the above or similar I should install adb on GNU/Linux (Mint in my case)? and how to connect the device? with its cable? I never did this because I transfer files via ssh and similar.. BTW, I have adb installed in Termux on the same device.. I wonder if I can use that..
>
> In any case,
>  Thanks!
>



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

* Re: Android port
  2023-02-19  9:24         ` Dov Grobgeld
@ 2023-02-19 10:17           ` Michael Albinus
  2023-02-19 10:55             ` Po Lu
  2023-02-19 10:55           ` Po Lu
  1 sibling, 1 reply; 205+ messages in thread
From: Michael Albinus @ 2023-02-19 10:17 UTC (permalink / raw)
  To: Dov Grobgeld; +Cc: Angelo Graziosi, Po Lu, emacs-devel@gnu.org

Dov Grobgeld <dov.grobgeld@gmail.com> writes:

> To use adb on Linux you need to do the following:
>
> 1. Enable debug mode on the android device. The way you do this
> depends on the device, but it typically involves tapping five to seven
> times on the system about kernel version. Look for it on the web.
> 2. After enabling debug mode looking for "USB debugging" on the device
> and turn it on.
> 3. Connect the android device to the computer by cable.
> 4. Run `adb shell` on your computer. This will fail to connect because
> of permissions.
> 5. On the android device you will get a popup asking whether you want
> to allow usb debugging from your computer. Confirm this.
> 6. Back in the computer terminal do a `killall adb` to remove the
> previous adb process (it installs itself as a server). And redo it.
> 7. You will now have a shell into your device. :-)
>
> You can use adb to copy files `adb push` and `adb pull` to the device.
>
> You can also use `adb logcat` and filter the output by regexps.

In Emacs, there's also Tramp's "adb" method. If you have only one
Android device, you can access it via "C-x C-f /adb::" from your local
Emacs, running on Linux.

The only missing feature is support of "adb logcat". Shall we add
something like this?

> Hope this helps!
>
> Looking forward to using emacs on my android tablet!
>
> Dov

Best regards, Michael.



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

* Re: Android port
  2023-02-19  9:01       ` Angelo Graziosi
  2023-02-19  9:24         ` Dov Grobgeld
@ 2023-02-19 10:40         ` Arsen Arsenović
  2023-02-19 10:53         ` Po Lu
  2 siblings, 0 replies; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-19 10:40 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Po Lu, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2059 bytes --]

Hi,

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Il 19/02/2023 03:13 Po Lu ha scritto:
>> 
>> As it says, you should read the node ``Android Environment'' in the
>> Emacs manual.  This notification is displayed to prevent Emacs from
>> being killed after entering the background.
>
> I did but many things are still unclear..
>
>> Copying an init.el from another system is best done through the system
>> file manager or by copying the files into Emacs's home directory via the
>> external storage.
>> 
>
> Here the file manager does not show Emacs directory.. or at least I cannot find
> it.. It is unclear the last sentence: from Emacs I can visit a file, say in
> /sdcard/Download/, but HOW copy it in Emacs, say in ~/?

On my device, which uses a near-vanilla build of AOSP, Emacs is visible
in the hamburger menu on the left in the Files app, below the SD card
option, and above Termux.  Do you see something similar on your device?

>> File managers on most proprietary versions of Android refuse to display
>> Emacs's home directory, because they are more keen to display
>> advertisements than to actually manage files.
>
> ..so this way could be unusable here...
>
>
>> First, try with an up to date build.  
>
> Let's wait for an F-Droid update, then..

FWIW, I could reproduce this on 1f81186d67b2a86e6a555a7ad3323fcd13f5e257
but not c8f49c9276d34741bfbe7752dd38391c0b8d782b, so, it may be fixed.

>> 
>>   adb logcat | grep android_run_debug_thread
>> 
>
> to run the above or similar I should install adb on GNU/Linux (Mint in my
> case)? and how to connect the device? with its cable? I never did this because
> I transfer files via ssh and similar.. BTW, I have adb installed in Termux on
> the same device.. I wonder if I can use that..

You could, technically, though it's likely easier to do it on your PC.
Enable USB debugging, install the adb package.  Your normal
charging/data transfer cable ought to work.

> In any case,
>  Thanks!

Have a nice day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-19  9:01       ` Angelo Graziosi
  2023-02-19  9:24         ` Dov Grobgeld
  2023-02-19 10:40         ` Arsen Arsenović
@ 2023-02-19 10:53         ` Po Lu
  2023-02-19 11:19           ` Angelo Graziosi
  2 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-19 10:53 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Copying an init.el from another system is best done through the system
>> file manager or by copying the files into Emacs's home directory via the
>> external storage.
>> 
>
> Here the file manager does not show Emacs directory.. or at least I
> cannot find it.. It is unclear the last sentence: from Emacs I can
> visit a file, say in /sdcard/Download/, but HOW copy it in Emacs, say
> in ~/?

If you click the three line menu on the top left, the file manager
should display a panel containing a list of mounted ``volumes''.

A volume labelled ``Emacs home directory'' should be visible.

>> File managers on most proprietary versions of Android refuse to display
>> Emacs's home directory, because they are more keen to display
>> advertisements than to actually manage files.
>
> ..so this way could be unusable here...

Too bad.

>> First, try with an up to date build.  
>
> Let's wait for an F-Droid update, then..
>
>> 
>>   adb logcat | grep android_run_debug_thread
>> 
>
> to run the above or similar I should install adb on GNU/Linux (Mint in
> my case)? and how to connect the device? with its cable? I never did
> this because I transfer files via ssh and similar.. BTW, I have adb
> installed in Termux on the same device.. I wonder if I can use that..

That will not work, unless you connect your phone to itself via its adb
port.



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

* Re: Android port
  2023-02-19 10:17           ` Michael Albinus
@ 2023-02-19 10:55             ` Po Lu
  2023-02-19 11:49               ` Michael Albinus
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-19 10:55 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Dov Grobgeld, Angelo Graziosi, emacs-devel@gnu.org

Michael Albinus <michael.albinus@gmx.de> writes:

> Dov Grobgeld <dov.grobgeld@gmail.com> writes:
>
>> To use adb on Linux you need to do the following:
>>
>> 1. Enable debug mode on the android device. The way you do this
>> depends on the device, but it typically involves tapping five to seven
>> times on the system about kernel version. Look for it on the web.
>> 2. After enabling debug mode looking for "USB debugging" on the device
>> and turn it on.
>> 3. Connect the android device to the computer by cable.
>> 4. Run `adb shell` on your computer. This will fail to connect because
>> of permissions.
>> 5. On the android device you will get a popup asking whether you want
>> to allow usb debugging from your computer. Confirm this.
>> 6. Back in the computer terminal do a `killall adb` to remove the
>> previous adb process (it installs itself as a server). And redo it.
>> 7. You will now have a shell into your device. :-)
>>
>> You can use adb to copy files `adb push` and `adb pull` to the device.
>>
>> You can also use `adb logcat` and filter the output by regexps.
>
> In Emacs, there's also Tramp's "adb" method. If you have only one
> Android device, you can access it via "C-x C-f /adb::" from your local
> Emacs, running on Linux.
>
> The only missing feature is support of "adb logcat". Shall we add
> something like this?

If you run `logcat' from a directory in /adb::, it will work just as
well as if you ran `adb logcat'.



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

* Re: Android port
  2023-02-19  9:24         ` Dov Grobgeld
  2023-02-19 10:17           ` Michael Albinus
@ 2023-02-19 10:55           ` Po Lu
  2023-02-19 11:11             ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-19 10:55 UTC (permalink / raw)
  To: Dov Grobgeld; +Cc: Angelo Graziosi, emacs-devel@gnu.org

Dov Grobgeld <dov.grobgeld@gmail.com> writes:

> Finally something that I can answer. :-)
>
> To use adb on Linux you need to do the following:
>
> 1. Enable debug mode on the android device. The way you do this
> depends on the device, but it typically involves tapping five to seven
> times on the system about kernel version. Look for it on the web.
> 2. After enabling debug mode looking for "USB debugging" on the device
> and turn it on.
> 3. Connect the android device to the computer by cable.
> 4. Run `adb shell` on your computer. This will fail to connect because
> of permissions.
> 5. On the android device you will get a popup asking whether you want
> to allow usb debugging from your computer. Confirm this.
> 6. Back in the computer terminal do a `killall adb` to remove the
> previous adb process (it installs itself as a server). And redo it.
> 7. You will now have a shell into your device. :-)
>
> You can use adb to copy files `adb push` and `adb pull` to the device.
>
> You can also use `adb logcat` and filter the output by regexps.
>
> Hope this helps!
>
> Looking forward to using emacs on my android tablet!

Thanks.

Everyone, do we need this information in the Emacs manual?



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

* Re: Android port
  2023-02-19 10:55           ` Po Lu
@ 2023-02-19 11:11             ` Angelo Graziosi
  2023-02-19 11:24               ` Peter Oliver
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-19 11:11 UTC (permalink / raw)
  To: Po Lu, Dov Grobgeld; +Cc: emacs-devel@gnu.org


> Il 19/02/2023 11:55 Po Lu ha scritto:
> 
>  
> Dov Grobgeld writes:
> 
> > Finally something that I can answer. :-)
> >
> > To use adb on Linux you need to do the following:
> >
> > 1. Enable debug mode on the android device. The way you do this
> > depends on the device, but it typically involves tapping five to seven
> > times on the system about kernel version. Look for it on the web.
> > 2. After enabling debug mode looking for "USB debugging" on the device
> > and turn it on.
> > 3. Connect the android device to the computer by cable.
> > 4. Run `adb shell` on your computer. This will fail to connect because
> > of permissions.
> > 5. On the android device you will get a popup asking whether you want
> > to allow usb debugging from your computer. Confirm this.
> > 6. Back in the computer terminal do a `killall adb` to remove the
> > previous adb process (it installs itself as a server). And redo it.
> > 7. You will now have a shell into your device. :-)
> >
> > You can use adb to copy files `adb push` and `adb pull` to the device.
> >
> > You can also use `adb logcat` and filter the output by regexps.
> >
> > Hope this helps!
> >
> > Looking forward to using emacs on my android tablet!
> 
> Thanks.
> 
> Everyone, do we need this information in the Emacs manual?

+1



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

* Re: Android port
  2023-02-17 12:56   ` Arsen Arsenović
  2023-02-17 13:05     ` Po Lu
@ 2023-02-19 11:17     ` Arsen Arsenović
  2023-02-19 12:21       ` Po Lu
  1 sibling, 1 reply; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-19 11:17 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: Po Lu, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1417 bytes --]

Hi,

While building initially, I got some make errors that looked like they
were from a race, for example:

    GEN         execinfo.h
  mv: cannot stat 'execinfo.h-t': No such file or directory

Further confirming my suspicion that these are coming from a race is
Emacs compiling fine if make is reinvoked, and that a non-parallel make
build works fine.

I figured this was a fluke initially, but, I reproduced the issue today.
You can fetch the build log from here:
https://www.aarsen.me/~arsen/emacs-races.script

There also appears to be a dependency missing between generating the APK
and running the pdumper, or such, since I could re-run make after make
concluded in the nonparallel case.

This seems pretty reproducible on my machine, I suspect due to the large
number of -t files utilized in Gnulib.

-- 8< --

While I'm around, I was also thinking about how to enable using the
modifier keys on virtual keyboards without modifiers.  I was considering
mapping a key, say, KEYCODE_VOLUME_DOWN to ESC if pressed and Ctrl if
held in combination with another key, hence, the sequence Press VolDown,
Release VolDown, Press VolDown, Type x, Release VolDown would be parsed
as ESC C-x, or C-M-x.  Do you know if this is possible?  All methods
that I know rely on external tools (XKB configs, AHK, ...) that are not
available on android.

Thanks in advance.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-19 10:53         ` Po Lu
@ 2023-02-19 11:19           ` Angelo Graziosi
  2023-02-19 11:59             ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-19 11:19 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 19/02/2023 11:53 Po Lu ha scritto:
> 
> 
> If you click the three line menu on the top left, the file manager
> should display a panel containing a list of mounted ``volumes''.
> 
> A volume labelled ``Emacs home directory'' should be visible.

The navigation bar collapses in 6 icons:

- Recent files
- Documents
- Download
- Installation files
- Internal Memory
- Analyze memory

 
> >> File managers on most proprietary versions of Android refuse to display
> >> Emacs's home directory, because they are more keen to display
> >> advertisements than to actually manage files.
> >
> > ..so this way could be unusable here...
> 
> Too bad.

Ever since there was the upgrade to android 11 problems began...



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

* Re: Android port
  2023-02-19 11:11             ` Angelo Graziosi
@ 2023-02-19 11:24               ` Peter Oliver
  2023-02-19 12:01                 ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Peter Oliver @ 2023-02-19 11:24 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org

Po Lu writes:

> Dov Grobgeld writes:
>
>> To use adb on Linux you need to do the following:
>>
>> 1. Enable debug mode on the android device. The way you do this
>> depends on the device, but it typically involves tapping five to seven
>> times on the system about kernel version. Look for it on the web.
>> 2. After enabling debug mode looking for "USB debugging" on the device
>> and turn it on.
>> 3. Connect the android device to the computer by cable.
>> 4. Run `adb shell` on your computer. This will fail to connect because
>> of permissions.
>> 5. On the android device you will get a popup asking whether you want
>> to allow usb debugging from your computer. Confirm this.
>> 6. Back in the computer terminal do a `killall adb` to remove the
>> previous adb process (it installs itself as a server). And redo it.
>> 7. You will now have a shell into your device. :-)
>>
>> You can use adb to copy files `adb push` and `adb pull` to the device.
>>
>> You can also use `adb logcat` and filter the output by regexps.
>
> Everyone, do we need this information in the Emacs manual?

Yes, but better to direct users to the official documentation (https://developer.android.com/studio/command-line/adb) rather than try to describe it ourselves, I think.

-- 
Peter Oliver



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

* Re: Android port
  2023-02-19  2:13     ` Po Lu
  2023-02-19  9:01       ` Angelo Graziosi
@ 2023-02-19 11:30       ` Peter Oliver
  1 sibling, 0 replies; 205+ messages in thread
From: Peter Oliver @ 2023-02-19 11:30 UTC (permalink / raw)
  To: emacs-devel@gnu.org

On Sun, 19 Feb 2023, Po Lu wrote:

> Copying an init.el from another system is best done through the system
> file manager or by copying the files into Emacs's home directory via the
> external storage.

Another moderately convenient option is KDE Connect, which consists of a pair of applications to run on an Android device and a normal computer to provide a range of integrations between them.  One of the integrations offered is file sharing.

It is developed by the KDE project, but using the KDE desktop is not required.

https://kdeconnect.kde.org/

-- 
Peter Oliver



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

* Re: Android port
  2023-02-19 10:55             ` Po Lu
@ 2023-02-19 11:49               ` Michael Albinus
  0 siblings, 0 replies; 205+ messages in thread
From: Michael Albinus @ 2023-02-19 11:49 UTC (permalink / raw)
  To: Po Lu; +Cc: Dov Grobgeld, Angelo Graziosi, emacs-devel@gnu.org

Po Lu <luangruo@yahoo.com> writes:

Hi,

>> In Emacs, there's also Tramp's "adb" method. If you have only one
>> Android device, you can access it via "C-x C-f /adb::" from your local
>> Emacs, running on Linux.
>>
>> The only missing feature is support of "adb logcat". Shall we add
>> something like this?
>
> If you run `logcat' from a directory in /adb::, it will work just as
> well as if you ran `adb logcat'.

Great. Tramp's adb method supports remote processes. so with a proper
default-directory, one can call from Emacs

--8<---------------cut here---------------start------------->8---
(async-shell-command "logcat | grep android_run_debug_thread")
--8<---------------cut here---------------end--------------->8---

Best regards, Michael.



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

* Re: Android port
  2023-02-19 11:19           ` Angelo Graziosi
@ 2023-02-19 11:59             ` Po Lu
  2023-02-19 17:10               ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-19 11:59 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> The navigation bar collapses in 6 icons:
>
> - Recent files
> - Documents
> - Download
> - Installation files
> - Internal Memory
> - Analyze memory

I guess the best thing to do is to try installing a version of Android
on your device that will let you use Android's own free file manager.
Alternatively, copy the file(s) to `/sdcard' and then copy them to
Emacs's home directory from inside Emacs.

> Ever since there was the upgrade to android 11 problems began...

It would be more appropriate to call such changes to your system
downgrades.



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

* Re: Android port
  2023-02-19 11:24               ` Peter Oliver
@ 2023-02-19 12:01                 ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-02-19 12:01 UTC (permalink / raw)
  To: Peter Oliver; +Cc: emacs-devel@gnu.org

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

> Yes, but better to direct users to the official documentation (https://developer.android.com/studio/command-line/adb) rather than try to describe it ourselves, I think.

I think I will write both down in the manual.
Thanks for bringing this up.



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

* Re: Android port
  2023-02-19 11:17     ` Arsen Arsenović
@ 2023-02-19 12:21       ` Po Lu
  2023-02-19 14:16         ` Po Lu
  2023-02-19 14:42         ` Arsen Arsenović
  0 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-02-19 12:21 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: emacs-devel

Arsen Arsenović <arsen@aarsen.me> writes:

> Hi,
>
> While building initially, I got some make errors that looked like they
> were from a race, for example:
>
>     GEN         execinfo.h
>   mv: cannot stat 'execinfo.h-t': No such file or directory
>
> Further confirming my suspicion that these are coming from a race is
> Emacs compiling fine if make is reinvoked, and that a non-parallel make
> build works fine.
>
> I figured this was a fluke initially, but, I reproduced the issue today.
> You can fetch the build log from here:
> https://www.aarsen.me/~arsen/emacs-races.script
>
> There also appears to be a dependency missing between generating the APK
> and running the pdumper, or such, since I could re-run make after make
> concluded in the nonparallel case.

This should not be a problem, since the dumping happens on-device on
Android.

> This seems pretty reproducible on my machine, I suspect due to the large
> number of -t files utilized in Gnulib.

I will look into this, thanks.

> While I'm around, I was also thinking about how to enable using the
> modifier keys on virtual keyboards without modifiers.  I was considering
> mapping a key, say, KEYCODE_VOLUME_DOWN to ESC if pressed and Ctrl if
> held in combination with another key, hence, the sequence Press VolDown,
> Release VolDown, Press VolDown, Type x, Release VolDown would be parsed
> as ESC C-x, or C-M-x.  Do you know if this is possible?  All methods
> that I know rely on external tools (XKB configs, AHK, ...) that are not
> available on android.

I'm not sure how to do this, since those keys are not ``meta modifiers''
on the system.

I'd recommend an on screen keyboard which has those modifier keys
instead.



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

* Re: Android port
  2023-02-19 12:21       ` Po Lu
@ 2023-02-19 14:16         ` Po Lu
  2023-02-19 14:40           ` Arsen Arsenović
  2023-02-19 14:42         ` Arsen Arsenović
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-19 14:16 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: emacs-devel

Po Lu <luangruo@yahoo.com> writes:

> Arsen Arsenović <arsen@aarsen.me> writes:
>
>> Hi,
>>
>> While building initially, I got some make errors that looked like they
>> were from a race, for example:
>>
>>     GEN         execinfo.h
>>   mv: cannot stat 'execinfo.h-t': No such file or directory
>>
>> Further confirming my suspicion that these are coming from a race is
>> Emacs compiling fine if make is reinvoked, and that a non-parallel make
>> build works fine.
>>
>> I figured this was a fluke initially, but, I reproduced the issue today.
>> You can fetch the build log from here:
>> https://www.aarsen.me/~arsen/emacs-races.script
>>
>> There also appears to be a dependency missing between generating the APK
>> and running the pdumper, or such, since I could re-run make after make
>> concluded in the nonparallel case.
>
> This should not be a problem, since the dumping happens on-device on
> Android.
>
>> This seems pretty reproducible on my machine, I suspect due to the large
>> number of -t files utilized in Gnulib.
>
> I will look into this, thanks.
>
>> While I'm around, I was also thinking about how to enable using the
>> modifier keys on virtual keyboards without modifiers.  I was considering
>> mapping a key, say, KEYCODE_VOLUME_DOWN to ESC if pressed and Ctrl if
>> held in combination with another key, hence, the sequence Press VolDown,
>> Release VolDown, Press VolDown, Type x, Release VolDown would be parsed
>> as ESC C-x, or C-M-x.  Do you know if this is possible?  All methods
>> that I know rely on external tools (XKB configs, AHK, ...) that are not
>> available on android.
>
> I'm not sure how to do this, since those keys are not ``meta modifiers''
> on the system.
>
> I'd recommend an on screen keyboard which has those modifier keys
> instead.

Please see if the parallel build has been fixed.  Thanks.



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

* Re: Android port
  2023-02-19 14:16         ` Po Lu
@ 2023-02-19 14:40           ` Arsen Arsenović
  2023-02-19 15:13             ` Arsen Arsenović
  0 siblings, 1 reply; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-19 14:40 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 302 bytes --]

Hi,

Po Lu <luangruo@yahoo.com> writes:

> Please see if the parallel build has been fixed.  Thanks.

One build passed fine, so my guess is yes.  I'll let it spin for a bit
with GNU Make's --shuffle, too, and report if anything comes up.

Thanks!

Have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-19 12:21       ` Po Lu
  2023-02-19 14:16         ` Po Lu
@ 2023-02-19 14:42         ` Arsen Arsenović
  1 sibling, 0 replies; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-19 14:42 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2564 bytes --]

Hi,

Po Lu <luangruo@yahoo.com> writes:

> Arsen Arsenović <arsen@aarsen.me> writes:
>
>> Hi,
>>
>> While building initially, I got some make errors that looked like they
>> were from a race, for example:
>>
>>     GEN         execinfo.h
>>   mv: cannot stat 'execinfo.h-t': No such file or directory
>>
>> Further confirming my suspicion that these are coming from a race is
>> Emacs compiling fine if make is reinvoked, and that a non-parallel make
>> build works fine.
>>
>> I figured this was a fluke initially, but, I reproduced the issue today.
>> You can fetch the build log from here:
>> https://www.aarsen.me/~arsen/emacs-races.script
>>
>> There also appears to be a dependency missing between generating the APK
>> and running the pdumper, or such, since I could re-run make after make
>> concluded in the nonparallel case.
>
> This should not be a problem, since the dumping happens on-device on
> Android.

Ah, OK.

>> This seems pretty reproducible on my machine, I suspect due to the large
>> number of -t files utilized in Gnulib.
>
> I will look into this, thanks.
>
>> While I'm around, I was also thinking about how to enable using the
>> modifier keys on virtual keyboards without modifiers.  I was considering
>> mapping a key, say, KEYCODE_VOLUME_DOWN to ESC if pressed and Ctrl if
>> held in combination with another key, hence, the sequence Press VolDown,
>> Release VolDown, Press VolDown, Type x, Release VolDown would be parsed
>> as ESC C-x, or C-M-x.  Do you know if this is possible?  All methods
>> that I know rely on external tools (XKB configs, AHK, ...) that are not
>> available on android.
>
> I'm not sure how to do this, since those keys are not ``meta modifiers''
> on the system.
>
> I'd recommend an on screen keyboard which has those modifier keys
> instead.

Indeed, that'd require some state tracking, for instance, on press reset
a special-as-ctrl flag and set a special-held flag, if anything else is
typed interpret it as C-<N> if special-held is set and set
special-as-ctrl, and on key release, reset special-held and emit an ESC
if special-as-ctrl is reset.

I'm not aware of a better solution because, as you said, these keys
aren't modifiers, and register as normal keypresses.

My thinking here is that providing an alternative for folk who don't use
virtual keyboards with modifier keys already (which is, most likely,
almost everyone) could ease their transition and help them with muscle
memory.

Have a splendid day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-19 14:40           ` Arsen Arsenović
@ 2023-02-19 15:13             ` Arsen Arsenović
  2023-02-20  2:37               ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-19 15:13 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel


[-- Attachment #1.1: Type: text/plain, Size: 4216 bytes --]

Hi,

I encountered another one:

  javac -classpath "/home/arsen/Android/Sdk/platforms/android-Tiramisu/android.jar:." -target 1.7 -source 1.7 -Xlint:d
  eprecation org/gnu/emacs/EmacsContextMenu.java
  warning: [options] bootstrap class path not set in conjunction with -source 7
  warning: [options] source value 7 is obsolete and will be removed in a future release
  warning: [options] target value 7 is obsolete and will be removed in a future release
  warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
  org/gnu/emacs/EmacsContextMenu.java:265: error: cannot find symbol
      final Holder<Boolean> rc;
            ^
    symbol:   class Holder
    location: class EmacsContextMenu
  org/gnu/emacs/EmacsContextMenu.java:267: error: cannot find symbol
      rc = new Holder<Boolean> ();
               ^
    symbol:   class Holder
    location: class EmacsContextMenu
  2 errors
  4 warnings
  make[2]: *** [Makefile:261: org/gnu/emacs/EmacsContextMenu.class] Error 1 shuffle=2758590628

I tried replicating with that shuffle= value, but it seems that I did
not get lucky twice.  However, I believe I have the reason why:

  ~/gnu/emacs-android2 130 $ grep -r --include='*.java' Holder
  java/org/gnu/emacs/EmacsService.java:class Holder<T>
  java/org/gnu/emacs/EmacsService.java:    final Holder<EmacsView> view;
  java/org/gnu/emacs/EmacsService.java:    view = new Holder<EmacsView> ();
  java/org/gnu/emacs/EmacsService.java:    final Holder<ClipboardManager> manager;
  java/org/gnu/emacs/EmacsService.java:    manager = new Holder<ClipboardManager> ();
  java/org/gnu/emacs/EmacsDialog.java:    final Holder<Boolean> rc;
  java/org/gnu/emacs/EmacsDialog.java:    rc = new Holder<Boolean> ();
  java/org/gnu/emacs/EmacsContextMenu.java:    final Holder<Boolean> rc;
  java/org/gnu/emacs/EmacsContextMenu.java:    rc = new Holder<Boolean> ();

There is no dependency between these Holder<T> users and the .java that
provides it:

  ~/gnu/emacs-android2/java$ rm org/gnu/emacs/EmacsDialog.class
  ~/gnu/emacs-android2/java$ make org/gnu/emacs/EmacsDialog.class
    JAVAC    org/gnu/emacs/EmacsDialog.class
  warning: [options] bootstrap class path not set in conjunction with -source 7
  warning: [options] source value 7 is obsolete and will be removed in a future release
  warning: [options] target value 7 is obsolete and will be removed in a future release
  warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
  org/gnu/emacs/EmacsDialog.java:302: error: cannot find symbol
      final Holder<Boolean> rc;
            ^
    symbol:   class Holder
    location: class EmacsDialog
  org/gnu/emacs/EmacsDialog.java:304: error: cannot find symbol
      rc = new Holder<Boolean> ();
               ^
    symbol:   class Holder
    location: class EmacsDialog
  2 errors
  4 warnings
  make: *** [Makefile:261: org/gnu/emacs/EmacsDialog.class] Error 1
  ~/gnu/emacs-android2/java 2 $ rm org/gnu/emacs/EmacsService.class; make org/gnu/emacs/EmacsService.class
    JAVAC    org/gnu/emacs/EmacsService.class
  warning: [options] bootstrap class path not set in conjunction with -source 7
  warning: [options] source value 7 is obsolete and will be removed in a future release
  warning: [options] target value 7 is obsolete and will be removed in a future release
  warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
  4 warnings
  ~/gnu/emacs-android2/java$ make org/gnu/emacs/EmacsDialog.class
    JAVAC    org/gnu/emacs/EmacsDialog.class
  warning: [options] bootstrap class path not set in conjunction with -source 7
  warning: [options] source value 7 is obsolete and will be removed in a future release
  warning: [options] target value 7 is obsolete and will be removed in a future release
  warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
  4 warnings
  ~/gnu/emacs-android2/java$ 

The simplest way to fix it is probably to break out Holder<T> into
Holder.java, as that won't require manually bookkeeping the
dependencies.  I attached a patch, which builds on x86_64-pc-linux-gnu.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: [PATCH] java: Resolve possible parallelism error across Holder class --]
[-- Type: text/x-patch, Size: 1333 bytes --]

From faf8fc54ad1d835d843e33833715eed2af83d517 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
Date: Sun, 19 Feb 2023 16:21:02 +0100
Subject: [PATCH] java: Resolve possible parallelism error across Holder class

* java/org/gnu/emacs/EmacsService.java (Holder): Move from here
to...
* java/org/gnu/emacs/Holder.java: ... here.  New file.
---
 java/org/gnu/emacs/EmacsService.java | 5 -----
 java/org/gnu/emacs/Holder.java       | 6 ++++++
 2 files changed, 6 insertions(+), 5 deletions(-)
 create mode 100644 java/org/gnu/emacs/Holder.java

diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java
index ba6ec485d62..18cbb06eaa8 100644
--- a/java/org/gnu/emacs/EmacsService.java
+++ b/java/org/gnu/emacs/EmacsService.java
@@ -62,11 +62,6 @@
 
 import android.hardware.input.InputManager;
 
-class Holder<T>
-{
-  T thing;
-};
-
 /* EmacsService is the service that starts the thread running Emacs
    and handles requests by that Emacs instance.  */
 
diff --git a/java/org/gnu/emacs/Holder.java b/java/org/gnu/emacs/Holder.java
new file mode 100644
index 00000000000..41866084ab9
--- /dev/null
+++ b/java/org/gnu/emacs/Holder.java
@@ -0,0 +1,6 @@
+package org.gnu.emacs;
+
+class Holder<T>
+{
+  T thing;
+};
-- 
2.39.2


[-- Attachment #1.3: Type: text/plain, Size: 149 bytes --]


I also tested the above by making EmacsDialog.class on a clean
configure, triggering the edge case.

Thanks in advance.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-19 11:59             ` Po Lu
@ 2023-02-19 17:10               ` Angelo Graziosi
  2023-02-20  2:39                 ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-19 17:10 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 19/02/2023 12:59 Po Lu ha scritto:
> 
> Alternatively, copy the file(s) to `/sdcard' and then copy them to
> Emacs's home directory from inside Emacs.

What I thought... Dired should help. right? or there is a better way? (notice rarely I used dired...)



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

* Re: Android port
  2023-02-19 15:13             ` Arsen Arsenović
@ 2023-02-20  2:37               ` Po Lu
  2023-02-20 15:33                 ` Arsen Arsenović
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-20  2:37 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: emacs-devel

Arsen Arsenović <arsen@aarsen.me> writes:

> Hi,
>
> I encountered another one:
>
>   javac -classpath "/home/arsen/Android/Sdk/platforms/android-Tiramisu/android.jar:." -target 1.7 -source 1.7 -Xlint:d
>   eprecation org/gnu/emacs/EmacsContextMenu.java
>   warning: [options] bootstrap class path not set in conjunction with -source 7
>   warning: [options] source value 7 is obsolete and will be removed in a future release
>   warning: [options] target value 7 is obsolete and will be removed in a future release
>   warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
>   org/gnu/emacs/EmacsContextMenu.java:265: error: cannot find symbol
>       final Holder<Boolean> rc;
>             ^
>     symbol:   class Holder
>     location: class EmacsContextMenu
>   org/gnu/emacs/EmacsContextMenu.java:267: error: cannot find symbol
>       rc = new Holder<Boolean> ();
>                ^
>     symbol:   class Holder
>     location: class EmacsContextMenu
>   2 errors
>   4 warnings
>   make[2]: *** [Makefile:261: org/gnu/emacs/EmacsContextMenu.class] Error 1 shuffle=2758590628
>
> I tried replicating with that shuffle= value, but it seems that I did
> not get lucky twice.  However, I believe I have the reason why:
>
>   ~/gnu/emacs-android2 130 $ grep -r --include='*.java' Holder
>   java/org/gnu/emacs/EmacsService.java:class Holder<T>
>   java/org/gnu/emacs/EmacsService.java:    final Holder<EmacsView> view;
>   java/org/gnu/emacs/EmacsService.java:    view = new Holder<EmacsView> ();
>   java/org/gnu/emacs/EmacsService.java:    final Holder<ClipboardManager> manager;
>   java/org/gnu/emacs/EmacsService.java:    manager = new Holder<ClipboardManager> ();
>   java/org/gnu/emacs/EmacsDialog.java:    final Holder<Boolean> rc;
>   java/org/gnu/emacs/EmacsDialog.java:    rc = new Holder<Boolean> ();
>   java/org/gnu/emacs/EmacsContextMenu.java:    final Holder<Boolean> rc;
>   java/org/gnu/emacs/EmacsContextMenu.java:    rc = new Holder<Boolean> ();
>
> There is no dependency between these Holder<T> users and the .java that
> provides it:
>
>   ~/gnu/emacs-android2/java$ rm org/gnu/emacs/EmacsDialog.class
>   ~/gnu/emacs-android2/java$ make org/gnu/emacs/EmacsDialog.class
>     JAVAC    org/gnu/emacs/EmacsDialog.class
>   warning: [options] bootstrap class path not set in conjunction with -source 7
>   warning: [options] source value 7 is obsolete and will be removed in a future release
>   warning: [options] target value 7 is obsolete and will be removed in a future release
>   warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
>   org/gnu/emacs/EmacsDialog.java:302: error: cannot find symbol
>       final Holder<Boolean> rc;
>             ^
>     symbol:   class Holder
>     location: class EmacsDialog
>   org/gnu/emacs/EmacsDialog.java:304: error: cannot find symbol
>       rc = new Holder<Boolean> ();
>                ^
>     symbol:   class Holder
>     location: class EmacsDialog
>   2 errors
>   4 warnings
>   make: *** [Makefile:261: org/gnu/emacs/EmacsDialog.class] Error 1
>   ~/gnu/emacs-android2/java 2 $ rm org/gnu/emacs/EmacsService.class; make org/gnu/emacs/EmacsService.class
>     JAVAC    org/gnu/emacs/EmacsService.class
>   warning: [options] bootstrap class path not set in conjunction with -source 7
>   warning: [options] source value 7 is obsolete and will be removed in a future release
>   warning: [options] target value 7 is obsolete and will be removed in a future release
>   warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
>   4 warnings
>   ~/gnu/emacs-android2/java$ make org/gnu/emacs/EmacsDialog.class
>     JAVAC    org/gnu/emacs/EmacsDialog.class
>   warning: [options] bootstrap class path not set in conjunction with -source 7
>   warning: [options] source value 7 is obsolete and will be removed in a future release
>   warning: [options] target value 7 is obsolete and will be removed in a future release
>   warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
>   4 warnings
>   ~/gnu/emacs-android2/java$ 
>
> The simplest way to fix it is probably to break out Holder<T> into
> Holder.java, as that won't require manually bookkeeping the
> dependencies.  I attached a patch, which builds on x86_64-pc-linux-gnu.
>
> From faf8fc54ad1d835d843e33833715eed2af83d517 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
> Date: Sun, 19 Feb 2023 16:21:02 +0100
> Subject: [PATCH] java: Resolve possible parallelism error across Holder class
>
> * java/org/gnu/emacs/EmacsService.java (Holder): Move from here
> to...
> * java/org/gnu/emacs/Holder.java: ... here.  New file.
> ---
>  java/org/gnu/emacs/EmacsService.java | 5 -----
>  java/org/gnu/emacs/Holder.java       | 6 ++++++
>  2 files changed, 6 insertions(+), 5 deletions(-)
>  create mode 100644 java/org/gnu/emacs/Holder.java
>
> diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java
> index ba6ec485d62..18cbb06eaa8 100644
> --- a/java/org/gnu/emacs/EmacsService.java
> +++ b/java/org/gnu/emacs/EmacsService.java
> @@ -62,11 +62,6 @@
>  
>  import android.hardware.input.InputManager;
>  
> -class Holder<T>
> -{
> -  T thing;
> -};
> -
>  /* EmacsService is the service that starts the thread running Emacs
>     and handles requests by that Emacs instance.  */
>  
> diff --git a/java/org/gnu/emacs/Holder.java b/java/org/gnu/emacs/Holder.java
> new file mode 100644
> index 00000000000..41866084ab9
> --- /dev/null
> +++ b/java/org/gnu/emacs/Holder.java
> @@ -0,0 +1,6 @@
> +package org.gnu.emacs;
> +
> +class Holder<T>
> +{
> +  T thing;
> +};
> -- 
> 2.39.2
>
>
> I also tested the above by making EmacsDialog.class on a clean
> configure, triggering the edge case.
>
> Thanks in advance.

Thanks.  The make depends thing is supposed to be done by javac
internally, and it should scan through source files in
org/gnu/emacs to find missing definitions.

I will try to fix the group rule definition.



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

* Re: Android port
  2023-02-19 17:10               ` Angelo Graziosi
@ 2023-02-20  2:39                 ` Po Lu
  2023-02-20 17:05                   ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-20  2:39 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Il 19/02/2023 12:59 Po Lu ha scritto:
>> 
>> Alternatively, copy the file(s) to `/sdcard' and then copy them to
>> Emacs's home directory from inside Emacs.
>
> What I thought... Dired should help. right? or there is a better way? (notice rarely I used dired...)

Dired, or running `cp' in a shell buffer.



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

* Re: Android port
  2023-02-20  2:37               ` Po Lu
@ 2023-02-20 15:33                 ` Arsen Arsenović
  2023-02-20 15:46                   ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-20 15:33 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 767 bytes --]

Hi Po,

Po Lu <luangruo@yahoo.com> writes:

> Thanks.  The make depends thing is supposed to be done by javac
> internally, and it should scan through source files in
> org/gnu/emacs to find missing definitions.

I believe it only scans through source files listed on the command line
and through the classpath.

> I will try to fix the group rule definition.

Yes, I believe this is the proper fix.  I was getting a bunch of other
errors in similar vein after fixing the one above, except even stranger,
so I suspect javac is quite bad at parallelizing.  The group build you
pushed earlier should alleviate that at a slight hit to compile speed
(which I doubt it's major enough to warrant build-time instability).

Thanks.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-20 15:33                 ` Arsen Arsenović
@ 2023-02-20 15:46                   ` Po Lu
  2023-02-20 16:05                     ` Arsen Arsenović
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-20 15:46 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: emacs-devel

Arsen Arsenović <arsen@aarsen.me> writes:

> Hi Po,
>
> Po Lu <luangruo@yahoo.com> writes:
>
>> Thanks.  The make depends thing is supposed to be done by javac
>> internally, and it should scan through source files in
>> org/gnu/emacs to find missing definitions.
>
> I believe it only scans through source files listed on the command line
> and through the classpath.

org/gnu/emacs is in the classpath.

> Yes, I believe this is the proper fix.  I was getting a bunch of other
> errors in similar vein after fixing the one above, except even stranger,
> so I suspect javac is quite bad at parallelizing.  The group build you
> pushed earlier should alleviate that at a slight hit to compile speed
> (which I doubt it's major enough to warrant build-time instability).

Thanks for finding this bug in javac.



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

* Re: Android port
  2023-02-20 15:46                   ` Po Lu
@ 2023-02-20 16:05                     ` Arsen Arsenović
  0 siblings, 0 replies; 205+ messages in thread
From: Arsen Arsenović @ 2023-02-20 16:05 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1368 bytes --]


Po Lu <luangruo@yahoo.com> writes:

> Arsen Arsenović <arsen@aarsen.me> writes:
>
>> Hi Po,
>>
>> Po Lu <luangruo@yahoo.com> writes:
>>
>>> Thanks.  The make depends thing is supposed to be done by javac
>>> internally, and it should scan through source files in
>>> org/gnu/emacs to find missing definitions.
>>
>> I believe it only scans through source files listed on the command line
>> and through the classpath.
>
> org/gnu/emacs is in the classpath.

Yes, and the sourcepath too, but I don't think the sources in those
paths are re-parsed to grab class definitions on each build, which is
where the problem stems for, but are instead parsed on an as needed
basis, with the classes available being presumed to map 1-to-1 to the
list of .java files in the sourcepath.

>> Yes, I believe this is the proper fix.  I was getting a bunch of other
>> errors in similar vein after fixing the one above, except even stranger,
>> so I suspect javac is quite bad at parallelizing.  The group build you
>> pushed earlier should alleviate that at a slight hit to compile speed
>> (which I doubt it's major enough to warrant build-time instability).
>
> Thanks for finding this bug in javac.

Sure, if you end up reporting it, please keep me posted.  I'm curious
about what the intended behavior here is.

Thanks.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-02-20  2:39                 ` Po Lu
@ 2023-02-20 17:05                   ` Angelo Graziosi
  2023-02-21  2:28                     ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-20 17:05 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


On GNU/Linux (Mint) I change the size of default (Monospace) font with

(set-frame-font "Monospace-11" nil t)

(setq default-frame-alist
      '(
        ;;(width . 120) ; character
        ;;(height . 54) ; lines
        ;;(left . (- 0)); pixel
        ;;(top  . (+ 0)); pixel
        ;;(left . 835); pixel
        ;;(top  .   0); pixel
        (font . "Monospace-11") ; font
        ))

in the init.el file. How can I do the same with this android Emacs? I cannot establish the name of the font it is using...



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

* Re: Android port
  2023-02-20 17:05                   ` Angelo Graziosi
@ 2023-02-21  2:28                     ` Po Lu
  2023-02-21 17:39                       ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-21  2:28 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> On GNU/Linux (Mint) I change the size of default (Monospace) font with
>
> (set-frame-font "Monospace-11" nil t)
>
> (setq default-frame-alist
>       '(
>         ;;(width . 120) ; character
>         ;;(height . 54) ; lines
>         ;;(left . (- 0)); pixel
>         ;;(top  . (+ 0)); pixel
>         ;;(left . 835); pixel
>         ;;(top  .   0); pixel
>         (font . "Monospace-11") ; font
>         ))
>
> in the init.el file. How can I do the same with this android Emacs? I cannot establish the name of the font it is using...

As the manual says, ``Droid Sans Mono''.



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

* Re: Android port
  2023-02-17 11:51 ` Po Lu
                     ` (2 preceding siblings ...)
  2023-02-17 13:50   ` tomas
@ 2023-02-21 13:41   ` Po Lu
  2023-03-10 20:07   ` Etienne Prud'homme
  4 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-02-21 13:41 UTC (permalink / raw)
  To: emacs-devel

Po Lu <luangruo@yahoo.com> writes:

> I believe the Android port of Emacs is now more or less feature
> complete.
>
> It can be found on the feature/android branch of the Emacs repository,
> and should support all (mipsel, arm, armv7l, mips64, aarch64 and x86)
> Android devices capable of running Android 2.2 or later.  You can obtain
> a check out of that code like so:
>
>   $ git clone git://git.sv.gnu.org/emacs.git -b feature/android
>
> Please give it as much testing as you can on real hardware from many
> different Android vendors.  Follow the instructions in INSTALL.android
> to build and install Emacs for your specific device.  In addition,
> please submit patches and report editing modes that do not work well
> with the input methods of various on screen keyboards, along with other
> bugs, using ``M-x report-emacs-bug RET.''
>
> The answers to various common questions (such as ``how to access
> external storage'', or ``where does Emacs put its init.el'') are in the
> Android appendix of the Emacs manual in the branch.
>
> Prebuilt binaries will be made available shortly, but please do not
> expect them to contain all dependencies with which Emacs can be built.
> At present, I don't recommend using binaries from f-droid.org, since
> they are out of date, but I will ask the f-droid packagers to rectify
> that problem.
>
> I will post this news to comp.emacs; please post this to other forums
> frequented by Emacs users as well.

A prebuilt binary for 64-bit ARM devices running Android 5.1 or later
can be found at:

  https://sourceforge.net/projects/android-ports-for-gnu-emacs/files

Note that because F-Droid chose to sign their release with their own
signing key, you will have to uninstall the F-Droid version before
installing this one.



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

* Re: Android port
  2023-02-21  2:28                     ` Po Lu
@ 2023-02-21 17:39                       ` Angelo Graziosi
  2023-02-21 17:51                         ` Jonathan Kenyon
                                           ` (2 more replies)
  0 siblings, 3 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-21 17:39 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 21/02/2023 03:28 Po Lu <luangruo@yahoo.com> ha scritto:
> 
>  
> Angelo Graziosi <angelo.g0@libero.it> writes:
> 
> > On GNU/Linux (Mint) I change the size of default (Monospace) font with
> >
> > (set-frame-font "Monospace-11" nil t)
> >
> > (setq default-frame-alist
> >       '(
> >         ;;(width . 120) ; character
> >         ;;(height . 54) ; lines
> >         ;;(left . (- 0)); pixel
> >         ;;(top  . (+ 0)); pixel
> >         ;;(left . 835); pixel
> >         ;;(top  .   0); pixel
> >         (font . "Monospace-11") ; font
> >         ))
> >
> > in the init.el file. How can I do the same with this android Emacs? I cannot establish the name of the font it is using...
> 
> As the manual says, ``Droid Sans Mono''.

Thanks.

I tried the last binaries (emacs-30.0.50-21-arm64-v8a.apk) and copied almost the full .emacs.d I have on GNU/Linux (with the elpa/melpa packages etc.). The result almost works but there are the following issues:

- some "random" crash (3-4 in few hours)

- when in the init file I have:

   (global-auto-revert-mode 1)

  the device vibrates and in the minibuffer shows up: "Error while reading file system events: try again". So I commented that out

- when i click on the Options menu the minibuffer shows: "Wrong type argument: stringp, nil" and the menu does not open. The other menu (File, Edit etc open regularly)

- last but not least, the DELETE key on the keyboard does not work.

It seem you have don big step forward!



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

* Re: Android port
  2023-02-21 17:39                       ` Angelo Graziosi
@ 2023-02-21 17:51                         ` Jonathan Kenyon
  2023-02-21 18:24                           ` Jonathan Kenyon
  2023-02-22  2:31                           ` Po Lu
  2023-02-22  2:30                         ` Po Lu
  2023-03-05 22:03                         ` Angelo Graziosi
  2 siblings, 2 replies; 205+ messages in thread
From: Jonathan Kenyon @ 2023-02-21 17:51 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Po Lu, emacs-devel@gnu.org

[-- Attachment #1: Type: text/plain, Size: 1827 bytes --]

If I could chime in here. One other issue I see is some keybinds throw a
"C-x <text-conversion> is undefined". Is this something other people are
seeing? Specifically C-x  h and C-x o

On Tue, Feb 21, 2023 at 11:40 AM Angelo Graziosi <angelo.g0@libero.it>
wrote:

>
> > Il 21/02/2023 03:28 Po Lu <luangruo@yahoo.com> ha scritto:
> >
> >
> > Angelo Graziosi <angelo.g0@libero.it> writes:
> >
> > > On GNU/Linux (Mint) I change the size of default (Monospace) font with
> > >
> > > (set-frame-font "Monospace-11" nil t)
> > >
> > > (setq default-frame-alist
> > >       '(
> > >         ;;(width . 120) ; character
> > >         ;;(height . 54) ; lines
> > >         ;;(left . (- 0)); pixel
> > >         ;;(top  . (+ 0)); pixel
> > >         ;;(left . 835); pixel
> > >         ;;(top  .   0); pixel
> > >         (font . "Monospace-11") ; font
> > >         ))
> > >
> > > in the init.el file. How can I do the same with this android Emacs? I
> cannot establish the name of the font it is using...
> >
> > As the manual says, ``Droid Sans Mono''.
>
> Thanks.
>
> I tried the last binaries (emacs-30.0.50-21-arm64-v8a.apk) and copied
> almost the full .emacs.d I have on GNU/Linux (with the elpa/melpa packages
> etc.). The result almost works but there are the following issues:
>
> - some "random" crash (3-4 in few hours)
>
> - when in the init file I have:
>
>    (global-auto-revert-mode 1)
>
>   the device vibrates and in the minibuffer shows up: "Error while reading
> file system events: try again". So I commented that out
>
> - when i click on the Options menu the minibuffer shows: "Wrong type
> argument: stringp, nil" and the menu does not open. The other menu (File,
> Edit etc open regularly)
>
> - last but not least, the DELETE key on the keyboard does not work.
>
> It seem you have don big step forward!
>
>

[-- Attachment #2: Type: text/html, Size: 2625 bytes --]

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

* Re: Android port
  2023-02-21 17:51                         ` Jonathan Kenyon
@ 2023-02-21 18:24                           ` Jonathan Kenyon
  2023-02-21 18:48                             ` Simon Pugnet
  2023-02-22  2:31                           ` Po Lu
  1 sibling, 1 reply; 205+ messages in thread
From: Jonathan Kenyon @ 2023-02-21 18:24 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Po Lu, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 2217 bytes --]

> One other issue I see is some keybinds throw a "C-x <text-conversion> is
undefined"

This actually only applies to software keyboards, not hardware, so there
must be some layer of translation happening from Android before it gets to
emacs.

On Tue, Feb 21, 2023, 11:51 AM Jonathan Kenyon <J.Kenyon@ordinarygizmos.com>
wrote:

> If I could chime in here. One other issue I see is some keybinds throw a
> "C-x <text-conversion> is undefined". Is this something other people are
> seeing? Specifically C-x  h and C-x o
>
> On Tue, Feb 21, 2023 at 11:40 AM Angelo Graziosi <angelo.g0@libero.it>
> wrote:
>
>>
>> > Il 21/02/2023 03:28 Po Lu <luangruo@yahoo.com> ha scritto:
>> >
>> >
>> > Angelo Graziosi <angelo.g0@libero.it> writes:
>> >
>> > > On GNU/Linux (Mint) I change the size of default (Monospace) font with
>> > >
>> > > (set-frame-font "Monospace-11" nil t)
>> > >
>> > > (setq default-frame-alist
>> > >       '(
>> > >         ;;(width . 120) ; character
>> > >         ;;(height . 54) ; lines
>> > >         ;;(left . (- 0)); pixel
>> > >         ;;(top  . (+ 0)); pixel
>> > >         ;;(left . 835); pixel
>> > >         ;;(top  .   0); pixel
>> > >         (font . "Monospace-11") ; font
>> > >         ))
>> > >
>> > > in the init.el file. How can I do the same with this android Emacs? I
>> cannot establish the name of the font it is using...
>> >
>> > As the manual says, ``Droid Sans Mono''.
>>
>> Thanks.
>>
>> I tried the last binaries (emacs-30.0.50-21-arm64-v8a.apk) and copied
>> almost the full .emacs.d I have on GNU/Linux (with the elpa/melpa packages
>> etc.). The result almost works but there are the following issues:
>>
>> - some "random" crash (3-4 in few hours)
>>
>> - when in the init file I have:
>>
>>    (global-auto-revert-mode 1)
>>
>>   the device vibrates and in the minibuffer shows up: "Error while
>> reading file system events: try again". So I commented that out
>>
>> - when i click on the Options menu the minibuffer shows: "Wrong type
>> argument: stringp, nil" and the menu does not open. The other menu (File,
>> Edit etc open regularly)
>>
>> - last but not least, the DELETE key on the keyboard does not work.
>>
>> It seem you have don big step forward!
>>
>>

[-- Attachment #2: Type: text/html, Size: 3380 bytes --]

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

* Re: Android port
  2023-02-21 18:24                           ` Jonathan Kenyon
@ 2023-02-21 18:48                             ` Simon Pugnet
  2023-02-22  2:33                               ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Simon Pugnet @ 2023-02-21 18:48 UTC (permalink / raw)
  To: Jonathan Kenyon; +Cc: Angelo Graziosi, Po Lu, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 768 bytes --]

Jonathan Kenyon <J.Kenyon@ordinarygizmos.com> writes:

>> One other issue I see is some keybinds throw a "C-x <text-conversion> is undefined"
>
> This actually only applies to software keyboards, not hardware, so there must be some layer of translation happening from Android before it gets to emacs.

I was seeing this problem too and I managed to fix it by using: -

(add-hook 'after-change-major-mode-hook (lambda () (set-text-conversion-style nil)))

There's a new section in the manual describing what "text conversions"
are and I used the information there to find out how to disable it. The
above hook is just a quick way to disable it in every buffer but I'm
sure it's just a workaround and that there's a better fix.

I hope that helps!

Kind regards,

Simon

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

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

* Re: Android port
  2023-02-21 17:39                       ` Angelo Graziosi
  2023-02-21 17:51                         ` Jonathan Kenyon
@ 2023-02-22  2:30                         ` Po Lu
  2023-02-22  8:04                           ` Angelo Graziosi
  2023-02-22  8:31                           ` Angelo Graziosi
  2023-03-05 22:03                         ` Angelo Graziosi
  2 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-02-22  2:30 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Il 21/02/2023 03:28 Po Lu <luangruo@yahoo.com> ha scritto:
>> 
>>  
>> Angelo Graziosi <angelo.g0@libero.it> writes:
>> 
>> > On GNU/Linux (Mint) I change the size of default (Monospace) font with
>> >
>> > (set-frame-font "Monospace-11" nil t)
>> >
>> > (setq default-frame-alist
>> >       '(
>> >         ;;(width . 120) ; character
>> >         ;;(height . 54) ; lines
>> >         ;;(left . (- 0)); pixel
>> >         ;;(top  . (+ 0)); pixel
>> >         ;;(left . 835); pixel
>> >         ;;(top  .   0); pixel
>> >         (font . "Monospace-11") ; font
>> >         ))
>> >
>> > in the init.el file. How can I do the same with this android Emacs? I cannot establish the name of the font it is using...
>> 
>> As the manual says, ``Droid Sans Mono''.
>
> Thanks.
>
> I tried the last binaries (emacs-30.0.50-21-arm64-v8a.apk) and copied almost the full .emacs.d I have on GNU/Linux (with the elpa/melpa packages etc.). The result almost works but there are the following issues:
>
> - some "random" crash (3-4 in few hours)
>
> - when in the init file I have:
>
>    (global-auto-revert-mode 1)
>
>   the device vibrates and in the minibuffer shows up: "Error while reading file system events: try again". So I commented that out
>
> - when i click on the Options menu the minibuffer shows: "Wrong type argument: stringp, nil" and the menu does not open. The other menu (File, Edit etc open regularly)
>
> - last but not least, the DELETE key on the keyboard does not work.
>
> It seem you have don big step forward!

Please show backtraces for all of those crashes.  The options menu works
here, so please show a backtrace from that too (`toggle-debug-on-error'.)

And, what keyboard are you using?



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

* Re: Android port
  2023-02-21 17:51                         ` Jonathan Kenyon
  2023-02-21 18:24                           ` Jonathan Kenyon
@ 2023-02-22  2:31                           ` Po Lu
  1 sibling, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-02-22  2:31 UTC (permalink / raw)
  To: Jonathan Kenyon; +Cc: Angelo Graziosi, emacs-devel@gnu.org

Jonathan Kenyon <J.Kenyon@ordinarygizmos.com> writes:

> If I could chime in here. One other issue I see is some keybinds throw
> a "C-x <text-conversion> is undefined". Is this something other people
> are seeing? Specifically C-x h and C-x o

What keyboard are you using?  Text conversion should not happen when the
keyboard is sending ordinary prefix key events.



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

* Re: Android port
  2023-02-21 18:48                             ` Simon Pugnet
@ 2023-02-22  2:33                               ` Po Lu
  2023-02-22  3:21                                 ` Jonathan Kenyon
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-22  2:33 UTC (permalink / raw)
  To: Simon Pugnet; +Cc: Jonathan Kenyon, Angelo Graziosi, emacs-devel

Simon Pugnet <simon@polaris64.net> writes:

> I was seeing this problem too and I managed to fix it by using: -
>
> (add-hook 'after-change-major-mode-hook (lambda () (set-text-conversion-style nil)))
>
> There's a new section in the manual describing what "text conversions"
> are and I used the information there to find out how to disable it. The
> above hook is just a quick way to disable it in every buffer but I'm
> sure it's just a workaround and that there's a better fix.

If you do this, your input method will no longer work properly.
It would be better to fix the individual keyboards to not perform text
conversion after a modifier key is pressed.



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

* Re: Android port
  2023-02-22  2:33                               ` Po Lu
@ 2023-02-22  3:21                                 ` Jonathan Kenyon
  2023-02-22  3:35                                   ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Jonathan Kenyon @ 2023-02-22  3:21 UTC (permalink / raw)
  To: Po Lu; +Cc: Simon Pugnet, Angelo Graziosi, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 968 bytes --]

> What keyboard are you using?

It happened with both Hacker's Keyboard and AnySoftKeyboard. I can't seem
to coerce it into entering the debugger since it's not truly an error.

I'll see about getting a trace.

On Tue, Feb 21, 2023, 8:35 PM Po Lu <luangruo@yahoo.com> wrote:

> Simon Pugnet <simon@polaris64.net> writes:
>
> > I was seeing this problem too and I managed to fix it by using: -
> >
> > (add-hook 'after-change-major-mode-hook (lambda ()
> (set-text-conversion-style nil)))
> >
> > There's a new section in the manual describing what "text conversions"
> > are and I used the information there to find out how to disable it. The
> > above hook is just a quick way to disable it in every buffer but I'm
> > sure it's just a workaround and that there's a better fix.
>
> If you do this, your input method will no longer work properly.
> It would be better to fix the individual keyboards to not perform text
> conversion after a modifier key is pressed.
>

[-- Attachment #2: Type: text/html, Size: 1704 bytes --]

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

* Re: Android port
  2023-02-22  3:21                                 ` Jonathan Kenyon
@ 2023-02-22  3:35                                   ` Po Lu
  2023-02-22 14:11                                     ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-22  3:35 UTC (permalink / raw)
  To: Jonathan Kenyon; +Cc: Simon Pugnet, Angelo Graziosi, emacs-devel

Jonathan Kenyon <J.Kenyon@ordinarygizmos.com> writes:

>> What keyboard are you using?
>
> It happened with both Hacker's Keyboard and AnySoftKeyboard. I can't seem to coerce it into entering the debugger since it's not truly an
> error.
>
> I'll see about getting a trace.

No need, I will just disable text conversion while reading key
sequences.



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

* Re: Android port
  2023-02-22  2:30                         ` Po Lu
@ 2023-02-22  8:04                           ` Angelo Graziosi
  2023-02-22  8:31                           ` Angelo Graziosi
  1 sibling, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-22  8:04 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 22/02/2023 03:30 Po Lu ha scritto:
> 
> Please show backtraces for all of those crashes.  The options menu works
> here, so please show a backtrace from that too (`toggle-debug-on-error'.)

When I click on Options it prints in backtrace buffer:

Debugger entered... : (void-variable scroll-bar-mode)
(eq scroll-bar-mode nil)

Just this.. Why it happens only with this menu item and not with the others.. Notice that File menu item and some other have a scroll-bar and they works...

When it crashes it closes I don't see anything.

> And, what keyboard are you using?

Moko-atic Keyboard



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

* Re: Android port
  2023-02-22  2:30                         ` Po Lu
  2023-02-22  8:04                           ` Angelo Graziosi
@ 2023-02-22  8:31                           ` Angelo Graziosi
  1 sibling, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-22  8:31 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 22/02/2023 03:30 Po Lu ha scritto:
> 
> And, what keyboard are you using?

This: https://preview.redd.it/na8vbzzq29i81.jpg?width=640&crop=smart&auto=webp&s=683a57d3fba12f4ba505e291ab6cdca965ea807c



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

* Re: Android port
  2023-02-22  3:35                                   ` Po Lu
@ 2023-02-22 14:11                                     ` Po Lu
  2023-02-22 15:16                                       ` Simon Pugnet
                                                         ` (2 more replies)
  0 siblings, 3 replies; 205+ messages in thread
From: Po Lu @ 2023-02-22 14:11 UTC (permalink / raw)
  To: Jonathan Kenyon; +Cc: Simon Pugnet, Angelo Graziosi, emacs-devel

Po Lu <luangruo@yahoo.com> writes:

> Jonathan Kenyon <J.Kenyon@ordinarygizmos.com> writes:
>
>>> What keyboard are you using?
>>
>> It happened with both Hacker's Keyboard and AnySoftKeyboard. I can't seem to coerce it into entering the debugger since it's not truly an
>> error.
>>
>> I'll see about getting a trace.
>
> No need, I will just disable text conversion while reading key
> sequences.

Angelo, Simon, Jonathan: the Options menu and text conversion issues
should now be fixed on the branch.  I've uploaded a new prebuilt to
SourceForge as well, at the same URL as the old one.

Thanks for testing.



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

* Re: Android port
  2023-02-22 14:11                                     ` Po Lu
@ 2023-02-22 15:16                                       ` Simon Pugnet
  2023-02-22 16:01                                       ` Angelo Graziosi
  2023-02-23 14:47                                       ` Angelo Graziosi
  2 siblings, 0 replies; 205+ messages in thread
From: Simon Pugnet @ 2023-02-22 15:16 UTC (permalink / raw)
  To: Po Lu; +Cc: Jonathan Kenyon, Angelo Graziosi, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1498 bytes --]

Po Lu <luangruo@yahoo.com> writes:

> Po Lu <luangruo@yahoo.com> writes:
>
>> Jonathan Kenyon <J.Kenyon@ordinarygizmos.com> writes:
>>
>>>> What keyboard are you using?
>>>
>>> It happened with both Hacker's Keyboard and AnySoftKeyboard. I 
>>> can't seem to coerce it into entering the debugger since it's not 
>>> truly an
>>> error.
>>>
>>> I'll see about getting a trace.
>>
>> No need, I will just disable text conversion while reading key
>> sequences.
>
> Angelo, Simon, Jonathan: the Options menu and text conversion issues
> should now be fixed on the branch.  I've uploaded a new prebuilt to
> SourceForge as well, at the same URL as the old one.

Thanks for looking into this issue. I've just rebuilt and tested and I 
can see that the problem is now solved for key sequences such as "C-h 
f".

However I use Evil and I also have trouble with using h,j,k,l to move 
the point in Evil's normal state. For example I would expect "j" to 
move the point down by one line (using `evil-next-visual-line') 
however when I press "j" in the Android version then I can see that it 
instead does the following: -

  <text-conversion> runs the command analyze-text-conversion (found in 
  global map), which is an interactive byte-compiled Lisp function in 
  'simple.el'.

Disabling text conversion with `(set-text-conversion-style nil)' 
allows those keys to function as expected.

> Thanks for testing.

You're welcome, happy to do so!

Kind regards,

-- 
Simon Pugnet
https://www.polaris64.net/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

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

* Re: Android port
  2023-02-22 14:11                                     ` Po Lu
  2023-02-22 15:16                                       ` Simon Pugnet
@ 2023-02-22 16:01                                       ` Angelo Graziosi
  2023-02-23 14:47                                       ` Angelo Graziosi
  2 siblings, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-22 16:01 UTC (permalink / raw)
  To: Po Lu, Jonathan Kenyon; +Cc: Simon Pugnet, emacs-devel


> Il 22/02/2023 15:11 Po Lu ha scritto:
> 

> Angelo, Simon, Jonathan: the Options menu and text conversion issues
> should now be fixed on the branch.  I've uploaded a new prebuilt to
> SourceForge as well, at the same URL as the old one.

Yes, Options is fixed. Thanks.

Just for completeness, now when I press the DELETE key (on keyboard) in the minibuffer shows up this:

<KEYCODE_FOWARD_DEL> is undefined



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

* Re: Android port
  2023-02-22 14:11                                     ` Po Lu
  2023-02-22 15:16                                       ` Simon Pugnet
  2023-02-22 16:01                                       ` Angelo Graziosi
@ 2023-02-23 14:47                                       ` Angelo Graziosi
  2023-02-24  0:56                                         ` Po Lu
  2023-02-24  1:01                                         ` Po Lu
  2 siblings, 2 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-23 14:47 UTC (permalink / raw)
  To: Po Lu, Jonathan Kenyon; +Cc: Simon Pugnet, emacs-devel

> Il 22/02/2023 15:11 Po Lu ha scritto:
> 


> I've uploaded a new prebuilt to
> SourceForge as well, at the same URL as the old one.
> 
> Thanks for testing.

The last today APK does not install here (android 11):

   App not installed

it says..



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

* Re: Android port
  2023-02-23 14:47                                       ` Angelo Graziosi
@ 2023-02-24  0:56                                         ` Po Lu
  2023-02-24  1:01                                         ` Po Lu
  1 sibling, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-02-24  0:56 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Jonathan Kenyon, Simon Pugnet, emacs-devel

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Il 22/02/2023 15:11 Po Lu ha scritto:
>> 
>
>
>> I've uploaded a new prebuilt to
>> SourceForge as well, at the same URL as the old one.
>> 
>> Thanks for testing.
>
> The last today APK does not install here (android 11):
>
>    App not installed
>
> it says..

Right, please try again.  Thanks.



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

* Re: Android port
  2023-02-23 14:47                                       ` Angelo Graziosi
  2023-02-24  0:56                                         ` Po Lu
@ 2023-02-24  1:01                                         ` Po Lu
  2023-02-24 17:49                                           ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-02-24  1:01 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Jonathan Kenyon, Simon Pugnet, emacs-devel

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Il 22/02/2023 15:11 Po Lu ha scritto:
>> 
>
>
>> I've uploaded a new prebuilt to
>> SourceForge as well, at the same URL as the old one.
>> 
>> Thanks for testing.
>
> The last today APK does not install here (android 11):
>
>    App not installed
>
> it says..

Please try again, something happened during the upload.



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

* Re: Android port
  2023-02-24  1:01                                         ` Po Lu
@ 2023-02-24 17:49                                           ` Angelo Graziosi
  0 siblings, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-02-24 17:49 UTC (permalink / raw)
  To: Po Lu; +Cc: Jonathan Kenyon, Simon Pugnet, emacs-devel


> Il 24/02/2023 02:01 Po Lu ha scritto:
> 
> Please try again, something happened during the upload.

Yes, now it works..



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

* Re: Android port
  2023-02-21 17:39                       ` Angelo Graziosi
  2023-02-21 17:51                         ` Jonathan Kenyon
  2023-02-22  2:30                         ` Po Lu
@ 2023-03-05 22:03                         ` Angelo Graziosi
  2023-03-05 23:57                           ` Po Lu
  2 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-03-05 22:03 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 21/02/2023 18:39 Angelo Graziosi ha scritto:
> 
> I tried the last binaries (emacs-30.0.50-21-arm64-v8a.apk) and copied almost the full .emacs.d I have on GNU/Linux (with the elpa/melpa packages etc.). The result almost works but there are the following issues:
> - when in the init file I have:
> 
>    (global-auto-revert-mode 1)
> 
>   the device vibrates and in the minibuffer shows up: "Error while reading file system events: try again". So I commented that out

This still occurs with the last emacs-30.0.50-21-arm64-v8a.apk.. to which "master" it refers?

BTW, in the init.el I have

;; Native buffer tabs setup
(global-tab-line-mode 1)

(setq tab-line-tabs-function 'tab-line-tabs-buffer-groups)
(setq tab-line-close-tab-function 'kill-buffer)

(set-face-attribute 'tab-line nil
                    :height 1.0
                    :inherit 'default)

and when I click tabs to switch/close buffers Emacs crashes (closes) more or less randomly...



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

* Re: Android port
  2023-03-05 22:03                         ` Angelo Graziosi
@ 2023-03-05 23:57                           ` Po Lu
  2023-03-07 15:47                             ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-03-05 23:57 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> This still occurs with the last emacs-30.0.50-21-arm64-v8a.apk.. to which "master" it refers?

That one.  So please show a backtrace, thanks.

> BTW, in the init.el I have
>
> ;; Native buffer tabs setup
> (global-tab-line-mode 1)
>
> (setq tab-line-tabs-function 'tab-line-tabs-buffer-groups)
> (setq tab-line-close-tab-function 'kill-buffer)
>
> (set-face-attribute 'tab-line nil
>                     :height 1.0
>                     :inherit 'default)
>
> and when I click tabs to switch/close buffers Emacs crashes (closes) more or less randomly...

Please show a backtrace from the crash.  If you run ``adb logcat'' and
wait for it to print everything, you can grep for:

  *** *** *** ***

the backtrace will follow the asterisks.



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

* Re: Android port
  2023-03-05 23:57                           ` Po Lu
@ 2023-03-07 15:47                             ` Angelo Graziosi
  2023-03-07 23:58                               ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-03-07 15:47 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 06/03/2023 00:57 Po Lu ha scritto:
> 
> Please show a backtrace from the crash.  If you run ``adb logcat'' and
> wait for it to print everything, you can grep for:
> 
>   *** *** *** ***
> 
> the backtrace will follow the asterisks.

I do not have time to learn this , now.

Just for the record, today update fails systematically at start up...



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

* Re: Android port
  2023-03-07 15:47                             ` Angelo Graziosi
@ 2023-03-07 23:58                               ` Po Lu
  2023-03-08 16:12                                 ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-03-07 23:58 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

You should get a backtrace if you want this to be fixed, because I can't read your mind (and your phone) from all the way over here.

Thanks.


On March 7, 2023 11:47:31 PM GMT+08:00, Angelo Graziosi <angelo.g0@libero.it> wrote:
>
>> Il 06/03/2023 00:57 Po Lu ha scritto:
>> 
>> Please show a backtrace from the crash.  If you run ``adb logcat'' and
>> wait for it to print everything, you can grep for:
>> 
>>   *** *** *** ***
>> 
>> the backtrace will follow the asterisks.
>
>I do not have time to learn this , now.
>
>Just for the record, today update fails systematically at start up...



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

* Re: Android port
  2023-03-07 23:58                               ` Po Lu
@ 2023-03-08 16:12                                 ` Angelo Graziosi
  2023-03-09  1:22                                   ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-03-08 16:12 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 08/03/2023 00:58 Po Lu ha scritto:
> 
>  
> You should get a backtrace if you want this to be fixed, because I can't read your mind (and your phone) from all the way over here.

Maybe when I have more time.

> On March 7 Angelo Graziosi wrote:
> >Just for the record, today update fails systematically at start up...

How do you explain that with yesterday and today APK Emacs crashes at start up IF IT FINDS a desktop file?

I have in the init.el

(setq desktop-base-file-name "~/.emacs.d/desktop")

If I remove it (EShell), Emacs starts; if I quit it and save a desktop file (just when Emacs displays the scratch buffer), then re-launching it crashes, i.e. immediately closes. 

At least the previous APKs worked.. for a while



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

* Re: Android port
  2023-03-08 16:12                                 ` Angelo Graziosi
@ 2023-03-09  1:22                                   ` Po Lu
  2023-03-09 16:38                                     ` Angelo Graziosi
  2023-07-17  8:21                                     ` Angelo Graziosi
  0 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-03-09  1:22 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> How do you explain that with yesterday and today APK Emacs crashes at start up IF IT FINDS a desktop file?
>
> I have in the init.el
>
> (setq desktop-base-file-name "~/.emacs.d/desktop")
>
> If I remove it (EShell), Emacs starts; if I quit it and save a desktop file (just when Emacs displays the scratch buffer), then re-launching it crashes, i.e. immediately closes. 
>
> At least the previous APKs worked.. for a while

I don't know.  But I don't see any crash here.
I will ask some other people to try this.



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

* Re: Android port
  2023-03-09  1:22                                   ` Po Lu
@ 2023-03-09 16:38                                     ` Angelo Graziosi
  2023-07-17  8:21                                     ` Angelo Graziosi
  1 sibling, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-03-09 16:38 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


> Il 09/03/2023 02:22 Po Lu ha scritto:
> 
>  
> Angelo Graziosi  writes:
> 
> > How do you explain that with yesterday and today APK Emacs crashes at start up IF IT FINDS a desktop file?
> >
>
> I don't know.  But I don't see any crash here.
> I will ask some other people to try this.

Just for the record, today upgrade seems to fix this issue!



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

* Re: Android port
  2023-02-17 11:51 ` Po Lu
                     ` (3 preceding siblings ...)
  2023-02-21 13:41   ` Po Lu
@ 2023-03-10 20:07   ` Etienne Prud'homme
  2023-03-10 23:50     ` Po Lu
  4 siblings, 1 reply; 205+ messages in thread
From: Etienne Prud'homme @ 2023-03-10 20:07 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

Sorry for the late reply.

Does this port allow Emacs to access files outside app-specific
storage?  When trying the Sourceforge build, I was unable to access
files outside `/data/data/org.gnu.emacs`.  It looks to me the
application doesn't ask for any storage permissions.

Trying to use it with no a touch keyboard is not really efficient for
me (yet), but I didn't see any functions that would ask Android to
allow file system access.

I was surprised to see so many things working.  Thanks for your work.

Etienne Prud'homme



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

* Re: Android port
  2023-03-10 20:07   ` Etienne Prud'homme
@ 2023-03-10 23:50     ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-03-10 23:50 UTC (permalink / raw)
  To: Etienne Prud'homme; +Cc: emacs-devel

"Etienne Prud'homme" <e.e.f.prudhomme@gmail.com> writes:

> Sorry for the late reply.
>
> Does this port allow Emacs to access files outside app-specific
> storage?  When trying the Sourceforge build, I was unable to access
> files outside `/data/data/org.gnu.emacs`.  It looks to me the
> application doesn't ask for any storage permissions.
>
> I was surprised to see so many things working.  Thanks for your work.
>
> Etienne Prud'homme

Emacs does not ask for any permissions by default.  You must enable
access to storage on Android 10 and earlier, and access to ``All files
and media'' on Android 11 and later.  This is described in the Android
appendix of the Emacs manual, which I suggest you read.

> Trying to use it with no a touch keyboard is not really efficient for
> me (yet), but I didn't see any functions that would ask Android to
> allow file system access.

Why is that?
The on-screen keyboard should be displayed whenever necessary.

Thanks.



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

* Re: Android port
  2023-03-09  1:22                                   ` Po Lu
  2023-03-09 16:38                                     ` Angelo Graziosi
@ 2023-07-17  8:21                                     ` Angelo Graziosi
  2023-07-17  8:30                                       ` Po Lu
  2023-07-17  8:40                                       ` Takesi Ayanokoji
  1 sibling, 2 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-07-17  8:21 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org


>  Po Lu  ha scritto (some month ago)...
> 
> I will ask some other people to try this.


> ... and now
> I've uploaded prebuilts to
>
>  https://sourceforge.net/projects/android-ports-for-gnu-emacs/files/termux
>
> which can access Termux files and program data.  Brief installation
> instructions are also provided in the README.

There it says we have to uninstall the current Android port and Termux. 

Really you mean we have to reinstall Termux from scratch with **ALL* packages we have installed for years? and their configurations and so on?

It is a request very heavy to follow..



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

* Re: Android port
  2023-07-17  8:21                                     ` Angelo Graziosi
@ 2023-07-17  8:30                                       ` Po Lu
  2023-08-31  5:51                                         ` Jean Louis
  2023-07-17  8:40                                       ` Takesi Ayanokoji
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-07-17  8:30 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

> There it says we have to uninstall the current Android port and Termux. 

Android doesn't allow updating packages with a different signature or
shared user ID.

> Really you mean we have to reinstall Termux from scratch with **ALL*
> packages we have installed for years? and their configurations and so
> on?
>
> It is a request very heavy to follow..

If that's a concern, it's trivial to back up both files installed in
Termux:

  $ cd /data/data/com.termux
  $ tar cf /sdcard/termux.tar files

and the data from Emacs:

  $ cd /data/data/org.gnu.emacs
  $ tar cf /sdcard/emacs.tar files

before uninstalling both packages.



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

* Re: Android port
  2023-07-17  8:21                                     ` Angelo Graziosi
  2023-07-17  8:30                                       ` Po Lu
@ 2023-07-17  8:40                                       ` Takesi Ayanokoji
  2023-07-18  7:31                                         ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Takesi Ayanokoji @ 2023-07-17  8:40 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Po Lu, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 937 bytes --]

Hello,

Backing-up and restoring are described Termux-wiki,

https://wiki.termux.com/wiki/Backing_up_Termux

For me, it took an hour for tar and untar about 20GB data on
$PREFIX/{usr|home}.

Thanks,

2023年7月17日(月) 午後5:22 Angelo Graziosi <angelo.g0@libero.it>:

>
> >  Po Lu  ha scritto (some month ago)...
> >
> > I will ask some other people to try this.
>
>
> > ... and now
> > I've uploaded prebuilts to
> >
> >
> https://sourceforge.net/projects/android-ports-for-gnu-emacs/files/termux
> >
> > which can access Termux files and program data.  Brief installation
> > instructions are also provided in the README.
>
> There it says we have to uninstall the current Android port and Termux.
>
> Really you mean we have to reinstall Termux from scratch with **ALL*
> packages we have installed for years? and their configurations and so on?
>
> It is a request very heavy to follow..
>
>

[-- Attachment #2: Type: text/html, Size: 1647 bytes --]

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

* Re: Android port
  2023-07-17  8:40                                       ` Takesi Ayanokoji
@ 2023-07-18  7:31                                         ` Angelo Graziosi
  2023-07-18  7:41                                           ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-07-18  7:31 UTC (permalink / raw)
  To: Takesi Ayanokoji; +Cc: Po Lu, emacs-devel


> Il 17/07/2023 10:40 CEST Takesi Ayanokoji ha scritto:
> 
> 
> Hello,
> 
> Backing-up and restoring are described Termux-wiki,
> 
> https://wiki.termux.com/wiki/Backing_up_Termux

OK, although there, the instructions look a bit different...

May be in Emacs we should have some documentation about this argument.



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

* Re: Android port
  2023-07-18  7:31                                         ` Angelo Graziosi
@ 2023-07-18  7:41                                           ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-07-18  7:41 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Takesi Ayanokoji, emacs-devel

Angelo Graziosi <angelo.g0@libero.it> writes:

> OK, although there, the instructions look a bit different...
>
> May be in Emacs we should have some documentation about this argument.

How to set up system package repositories is outside the scope of Emacs
documentation.



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

* Android port
       [not found] <87pm43a1jp.fsf.ref@yahoo.com>
@ 2023-08-04  4:12 ` Po Lu
  2023-08-04  6:27   ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-04  4:12 UTC (permalink / raw)
  To: emacs-devel

I have _really_ finished writing the Android port, and that includes a
new ``virtual filesystem'' component which enables Emacs to directly
edit (in contrast to merely reading) files and directories inside
document providers, such as network attached storage client programs.

No consensus was built the previous time we debated whether to include
this code or not, but with Emacs 29.1 out the door and master relatively
calm, I would like to revisit this subject.

I've already had gobs of people employ my inbox as a substitute for the
bug tracker, confirming my earlier apprehensions.  Furthermore, several
users have obtained my organizational e-mail by hook or by crook, and
used it for petty banter concerning design and UI decisions made there,
leading to unpleasant inquiries from my management regarding the
adequate use of organizational resources.  As such, I hold no continued
interest in _publishing_ updates to this port, unless it is clearly
presented as part of GNU Emacs instead of a one man show.  Judging by
the abundance of discourse misdirected at me, it seems to interest more
than a negligible portion of the Emacs user populace, some of whom use
the branch for its improved touch-screen support outside of Android.

Also, would someone ascertain if the branch still builds on MS Windows,
after the past few updates from Gnulib?

TIA.



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

* Re: Android port
  2023-08-04  4:12 ` Po Lu
@ 2023-08-04  6:27   ` Eli Zaretskii
  2023-08-04  6:37     ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04  6:27 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Date: Fri, 04 Aug 2023 12:12:26 +0800
> 
> No consensus was built the previous time we debated whether to include
> this code or not, but with Emacs 29.1 out the door and master relatively
> calm, I would like to revisit this subject.

There's no need to revisit, from where I stand.  It is quite clear
this community as a whole thinks that having the port as part of Emacs
is more important than the potential difficulties and issues it could
create.

> Also, would someone ascertain if the branch still builds on MS Windows,
> after the past few updates from Gnulib?

Once Someone™ confirms that the MinGW and NS builds work on that
branch, you can go ahead and land the branch on master.  (But please
be sure to make a proper log message naming all the new files and
changes in existing ones, when you merge.)

And a huge thanks for working on this port.



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

* Re: Android port
  2023-08-04  6:27   ` Eli Zaretskii
@ 2023-08-04  6:37     ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-08-04  6:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Po Lu <luangruo@yahoo.com>
>> Date: Fri, 04 Aug 2023 12:12:26 +0800
>> 
>> No consensus was built the previous time we debated whether to include
>> this code or not, but with Emacs 29.1 out the door and master relatively
>> calm, I would like to revisit this subject.
>
> There's no need to revisit, from where I stand.  It is quite clear
> this community as a whole thinks that having the port as part of Emacs
> is more important than the potential difficulties and issues it could
> create.
>
>> Also, would someone ascertain if the branch still builds on MS Windows,
>> after the past few updates from Gnulib?
>
> Once Someone™ confirms that the MinGW and NS builds work on that
> branch, you can go ahead and land the branch on master.  (But please
> be sure to make a proper log message naming all the new files and
> changes in existing ones, when you merge.)
>
> And a huge thanks for working on this port.

Thanks everyone for your support as well.  And please, direct comments
and questions to the Emacs development lists, and _not_ my inbox.



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

* Re: Android port
@ 2023-08-04  7:42 Angelo Graziosi
  2023-08-04  7:54 ` Eli Zaretskii
  2023-08-04  9:44 ` Po Lu
  0 siblings, 2 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-04  7:42 UTC (permalink / raw)
  To: emacs-devel@gnu.org

> Also, would someone ascertain if the branch still builds on MS Windows, after the past few updates from Gnulib?

No, on MSYS2/MINGW64 it fails:

============================
[...]
 ===> Building ...

make actual-all || make advice-on-failure make-target=all exit-status=$?
make[1]: ingresso nella directory «/tmp/emacs-master»
make -C lib all
make -C doc/lispref info
make -C doc/lispintro info
make -C doc/emacs info
make[2]: ingresso nella directory «/tmp/emacs-master/doc/lispintro»
/usr/bin/mkdir -p ../../info
make[2]: ingresso nella directory «/tmp/emacs-master/doc/lispref»
/usr/bin/mkdir -p ../../info
  GEN      info/dir
  GEN      ../../info/eintr.info
make[2]: ingresso nella directory «/tmp/emacs-master/doc/emacs»
  GEN      ../../info/emacs.info
  GEN      ../../info/elisp.info
make[2]: ingresso nella directory «/tmp/emacs-master/lib»
  GEN      alloca.h
  GEN      byteswap.h
  GEN      errno.h
  GEN      execinfo.h
  GEN      getopt.h
  GEN      getopt-cdefs.h
  GEN      malloc/dynarray.gl.h
  GEN      malloc/dynarray-skeleton.gl.h
  GEN      ieee754.h
  GEN      limits.h
  GEN      stdckdint.h
  GEN      stddef.h
  GEN      stdint.h
  GEN      string.h
  GEN      sys/random.h
  GEN      time.h
  CC       fingerprint.o
  CC       acl_entries.o
  CC       asnprintf.o
  CC       asprintf.o
  CC       frexp.o
  CC       memmem.o
  CC       mktime.o
  CC       printf.o
asprintf.c:30:1: error: redefinition of 'asprintf'
   30 | asprintf (char **resultp, const char *format, ...)
      | ^~~~~~~~
In file included from C:/msys64/tmp/emacs-master/nt/inc/ms-w32.h:389,
                 from ../src/conf_post.h:38,
                 from ../src/config.h:3511,
                 from asprintf.c:18:
C:/msys64/mingw64/include/stdio.h:276:5: note: previous definition of 'asprintf' with type 'int(char **, const char *, ...)'
  276 | int asprintf(char **__ret, const char *__format, ...)
      |     ^~~~~~~~
make[2]: *** [Makefile:102: asprintf.o] Error 1
make[2]: *** Attesa per i processi non terminati....
make[2]: uscita dalla directory «/tmp/emacs-master/lib»
make[1]: *** [Makefile:537: lib] Error 2
make[1]: *** Attesa per i processi non terminati....
make[2]: uscita dalla directory «/tmp/emacs-master/doc/lispintro»
make[2]: uscita dalla directory «/tmp/emacs-master/doc/emacs»
make[2]: uscita dalla directory «/tmp/emacs-master/doc/lispref»
make[1]: uscita dalla directory «/tmp/emacs-master»
make[1]: ingresso nella directory «/tmp/emacs-master»
***
*** "make all" failed with exit status 2.
***
*** You could try to:
*** - run "make bootstrap", which might fix the problem
*** - run "make V=1", which displays the full commands invoked by make,
***   to further investigate the problem
***
make[1]: *** [Makefile:418: advice-on-failure] Error 2
make[1]: uscita dalla directory «/tmp/emacs-master»
make: *** [Makefile:374: all] Error 2
Error: Failure running MAKE
============================



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

* Re: Android port
  2023-08-04  7:42 Angelo Graziosi
@ 2023-08-04  7:54 ` Eli Zaretskii
  2023-08-04  9:45   ` Po Lu
  2023-08-04  9:44 ` Po Lu
  1 sibling, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04  7:54 UTC (permalink / raw)
  To: Angelo Graziosi, Po Lu; +Cc: emacs-devel

> Date: Fri, 4 Aug 2023 09:42:44 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> 
> > Also, would someone ascertain if the branch still builds on MS Windows, after the past few updates from Gnulib?
> 
> No, on MSYS2/MINGW64 it fails:
> 
> ============================
> [...]
>  ===> Building ...
> [...]
> asprintf.c:30:1: error: redefinition of 'asprintf'
>    30 | asprintf (char **resultp, const char *format, ...)
>       | ^~~~~~~~
> In file included from C:/msys64/tmp/emacs-master/nt/inc/ms-w32.h:389,
>                  from ../src/conf_post.h:38,
>                  from ../src/config.h:3511,
>                  from asprintf.c:18:
> C:/msys64/mingw64/include/stdio.h:276:5: note: previous definition of 'asprintf' with type 'int(char **, const char *, ...)'
>   276 | int asprintf(char **__ret, const char *__format, ...)
>       |     ^~~~~~~~

Is asprintf used in any code that needs to be run in the MS-Windows
build of Emacs?  If not, then the easiest solution is to disable
building Gnulib's asprintf via nt/gnulib-cfg.mk.



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

* Re: Android port
  2023-08-04  7:42 Angelo Graziosi
  2023-08-04  7:54 ` Eli Zaretskii
@ 2023-08-04  9:44 ` Po Lu
  2023-08-04 10:34   ` Eli Zaretskii
  2023-08-04 10:53   ` Angelo Graziosi
  1 sibling, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-08-04  9:44 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: emacs-devel@gnu.org

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Also, would someone ascertain if the branch still builds on MS Windows, after the past few updates from Gnulib?
>
> No, on MSYS2/MINGW64 it fails:
>
> ============================
> [...]
>  ===> Building ...
>
> make actual-all || make advice-on-failure make-target=all exit-status=$?
> make[1]: ingresso nella directory «/tmp/emacs-master»
> make -C lib all
> make -C doc/lispref info
> make -C doc/lispintro info
> make -C doc/emacs info
> make[2]: ingresso nella directory «/tmp/emacs-master/doc/lispintro»
> /usr/bin/mkdir -p ../../info
> make[2]: ingresso nella directory «/tmp/emacs-master/doc/lispref»
> /usr/bin/mkdir -p ../../info
>   GEN      info/dir
>   GEN      ../../info/eintr.info
> make[2]: ingresso nella directory «/tmp/emacs-master/doc/emacs»
>   GEN      ../../info/emacs.info
>   GEN      ../../info/elisp.info
> make[2]: ingresso nella directory «/tmp/emacs-master/lib»
>   GEN      alloca.h
>   GEN      byteswap.h
>   GEN      errno.h
>   GEN      execinfo.h
>   GEN      getopt.h
>   GEN      getopt-cdefs.h
>   GEN      malloc/dynarray.gl.h
>   GEN      malloc/dynarray-skeleton.gl.h
>   GEN      ieee754.h
>   GEN      limits.h
>   GEN      stdckdint.h
>   GEN      stddef.h
>   GEN      stdint.h
>   GEN      string.h
>   GEN      sys/random.h
>   GEN      time.h
>   CC       fingerprint.o
>   CC       acl_entries.o
>   CC       asnprintf.o
>   CC       asprintf.o
>   CC       frexp.o
>   CC       memmem.o
>   CC       mktime.o
>   CC       printf.o
> asprintf.c:30:1: error: redefinition of 'asprintf'
>    30 | asprintf (char **resultp, const char *format, ...)
>       | ^~~~~~~~
> In file included from C:/msys64/tmp/emacs-master/nt/inc/ms-w32.h:389,
>                  from ../src/conf_post.h:38,
>                  from ../src/config.h:3511,
>                  from asprintf.c:18:
> C:/msys64/mingw64/include/stdio.h:276:5: note: previous definition of 'asprintf' with type 'int(char **, const char *, ...)'
>   276 | int asprintf(char **__ret, const char *__format, ...)
>       |     ^~~~~~~~

Thanks.  What about after applying the following change and rerunning
configure?

diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index e8b4711f548..68e264fde4c 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -178,9 +178,11 @@ gl_cv_func_printf_sizes_c99=yes
 gl_cv_func_printf_long_double=yes
 gl_cv_func_printf_infinite_long_double=yes
 gl_cv_func_printf_directive_a=yes
+gl_cv_func_printf_directive_b=yes
 gl_cv_func_printf_directive_f=yes
 gl_cv_func_printf_directive_n=yes
 gl_cv_func_printf_directive_ls=yes
+gl_cv_func_printf_directive_lc=yes
 gl_cv_func_printf_positions=yes
 gl_cv_func_printf_flag_grouping=yes
 gl_cv_func_printf_flag_leftadjust=yes



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

* Re: Android port
  2023-08-04  7:54 ` Eli Zaretskii
@ 2023-08-04  9:45   ` Po Lu
  2023-08-04 10:40     ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-04  9:45 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Angelo Graziosi, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Is asprintf used in any code that needs to be run in the MS-Windows
> build of Emacs?  If not, then the easiest solution is to disable
> building Gnulib's asprintf via nt/gnulib-cfg.mk.

No, the Gnulib folks added two new checks to vasnprintf.m4 reflecting
new C2X features, that weren't present the last time I fixed the Windows
build.



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

* Re: Android port
  2023-08-04  9:44 ` Po Lu
@ 2023-08-04 10:34   ` Eli Zaretskii
  2023-08-04 12:02     ` Po Lu
  2023-08-04 10:53   ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04 10:34 UTC (permalink / raw)
  To: Po Lu; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: "emacs-devel@gnu.org" <emacs-devel@gnu.org>
> Date: Fri, 04 Aug 2023 17:44:11 +0800
> 
> Thanks.  What about after applying the following change and rerunning
> configure?
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index e8b4711f548..68e264fde4c 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -178,9 +178,11 @@ gl_cv_func_printf_sizes_c99=yes
>  gl_cv_func_printf_long_double=yes
>  gl_cv_func_printf_infinite_long_double=yes
>  gl_cv_func_printf_directive_a=yes
> +gl_cv_func_printf_directive_b=yes
>  gl_cv_func_printf_directive_f=yes
>  gl_cv_func_printf_directive_n=yes
>  gl_cv_func_printf_directive_ls=yes
> +gl_cv_func_printf_directive_lc=yes
>  gl_cv_func_printf_positions=yes
>  gl_cv_func_printf_flag_grouping=yes
>  gl_cv_func_printf_flag_leftadjust=yes

If MinGW doesn't support those directives, the above is not TRT, it
might cause future maintenance headaches.

I don't think MSVCRT.DLL's implementation of printf supports those, at
least not on all versions of Windows.



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

* Re: Android port
  2023-08-04  9:45   ` Po Lu
@ 2023-08-04 10:40     ` Eli Zaretskii
  2023-08-04 12:12       ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04 10:40 UTC (permalink / raw)
  To: Po Lu; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Angelo Graziosi <angelo.g0@libero.it>,  emacs-devel@gnu.org
> Date: Fri, 04 Aug 2023 17:45:20 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Is asprintf used in any code that needs to be run in the MS-Windows
> > build of Emacs?  If not, then the easiest solution is to disable
> > building Gnulib's asprintf via nt/gnulib-cfg.mk.
> 
> No, the Gnulib folks added two new checks to vasnprintf.m4 reflecting
> new C2X features, that weren't present the last time I fixed the Windows
> build.

That doesn't answer my question, AFAICT.  In the current master we
have no uses of asprintf and vasnprintf, so I asked whether it is
needed on the branch, and if so, whether the MS-Windows build uses the
code where these two functions are called.

The way to override Gnulib tests that conclude that some libc function
should be replaced is not to override the feature test (unless that
feature is supported, but Gnulib doesn't know about it -- which can
only happen if we implement the library function inside Emacs).  The
way to override those is to exclude the relevant Gnulib modules from
the Windows build via nt/gnulib-cfg.mk.  If that is not appropriate,
i.e. if the Gnulib module _is_ actually required in the MS-Windows
build, then this is a Gnulib bug that should be reported to them and
fixed by them (but in that case you cannot merge the branch until the
Gnulib folks provide the fix).



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

* Re: Android port
  2023-08-04  9:44 ` Po Lu
  2023-08-04 10:34   ` Eli Zaretskii
@ 2023-08-04 10:53   ` Angelo Graziosi
  1 sibling, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-04 10:53 UTC (permalink / raw)
  To: Po Lu; +Cc: emacs-devel@gnu.org

No, same failure...
> Il 04/08/2023 11:44 CEST Po Lu ha scritto:
> 
>  
> Angelo Graziosi writes:
> 
> >> Also, would someone ascertain if the branch still builds on MS Windows, after the past few updates from Gnulib?
> >
> > No, on MSYS2/MINGW64 it fails:
> >
> > ============================
> > [...]
> >  ===> Building ...
> >
> > make actual-all || make advice-on-failure make-target=all exit-status=$?
> > make[1]: ingresso nella directory «/tmp/emacs-master»
> > make -C lib all
> > make -C doc/lispref info
> > make -C doc/lispintro info
> > make -C doc/emacs info
> > make[2]: ingresso nella directory «/tmp/emacs-master/doc/lispintro»
> > /usr/bin/mkdir -p ../../info
> > make[2]: ingresso nella directory «/tmp/emacs-master/doc/lispref»
> > /usr/bin/mkdir -p ../../info
> >   GEN      info/dir
> >   GEN      ../../info/eintr.info
> > make[2]: ingresso nella directory «/tmp/emacs-master/doc/emacs»
> >   GEN      ../../info/emacs.info
> >   GEN      ../../info/elisp.info
> > make[2]: ingresso nella directory «/tmp/emacs-master/lib»
> >   GEN      alloca.h
> >   GEN      byteswap.h
> >   GEN      errno.h
> >   GEN      execinfo.h
> >   GEN      getopt.h
> >   GEN      getopt-cdefs.h
> >   GEN      malloc/dynarray.gl.h
> >   GEN      malloc/dynarray-skeleton.gl.h
> >   GEN      ieee754.h
> >   GEN      limits.h
> >   GEN      stdckdint.h
> >   GEN      stddef.h
> >   GEN      stdint.h
> >   GEN      string.h
> >   GEN      sys/random.h
> >   GEN      time.h
> >   CC       fingerprint.o
> >   CC       acl_entries.o
> >   CC       asnprintf.o
> >   CC       asprintf.o
> >   CC       frexp.o
> >   CC       memmem.o
> >   CC       mktime.o
> >   CC       printf.o
> > asprintf.c:30:1: error: redefinition of 'asprintf'
> >    30 | asprintf (char **resultp, const char *format, ...)
> >       | ^~~~~~~~
> > In file included from C:/msys64/tmp/emacs-master/nt/inc/ms-w32.h:389,
> >                  from ../src/conf_post.h:38,
> >                  from ../src/config.h:3511,
> >                  from asprintf.c:18:
> > C:/msys64/mingw64/include/stdio.h:276:5: note: previous definition of 'asprintf' with type 'int(char **, const char *, ...)'
> >   276 | int asprintf(char **__ret, const char *__format, ...)
> >       |     ^~~~~~~~
> 
> Thanks.  What about after applying the following change and rerunning
> configure?
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index e8b4711f548..68e264fde4c 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -178,9 +178,11 @@ gl_cv_func_printf_sizes_c99=yes
>  gl_cv_func_printf_long_double=yes
>  gl_cv_func_printf_infinite_long_double=yes
>  gl_cv_func_printf_directive_a=yes
> +gl_cv_func_printf_directive_b=yes
>  gl_cv_func_printf_directive_f=yes
>  gl_cv_func_printf_directive_n=yes
>  gl_cv_func_printf_directive_ls=yes
> +gl_cv_func_printf_directive_lc=yes
>  gl_cv_func_printf_positions=yes
>  gl_cv_func_printf_flag_grouping=yes
>  gl_cv_func_printf_flag_leftadjust=yes



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

* Re: Android port
  2023-08-04 10:34   ` Eli Zaretskii
@ 2023-08-04 12:02     ` Po Lu
  2023-08-04 12:58       ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-04 12:02 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Po Lu <luangruo@yahoo.com>
>> Cc: "emacs-devel@gnu.org" <emacs-devel@gnu.org>
>> Date: Fri, 04 Aug 2023 17:44:11 +0800
>> 
>> Thanks.  What about after applying the following change and rerunning
>> configure?
>> 
>> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
>> index e8b4711f548..68e264fde4c 100644
>> --- a/nt/mingw-cfg.site
>> +++ b/nt/mingw-cfg.site
>> @@ -178,9 +178,11 @@ gl_cv_func_printf_sizes_c99=yes
>>  gl_cv_func_printf_long_double=yes
>>  gl_cv_func_printf_infinite_long_double=yes
>>  gl_cv_func_printf_directive_a=yes
>> +gl_cv_func_printf_directive_b=yes
>>  gl_cv_func_printf_directive_f=yes
>>  gl_cv_func_printf_directive_n=yes
>>  gl_cv_func_printf_directive_ls=yes
>> +gl_cv_func_printf_directive_lc=yes
>>  gl_cv_func_printf_positions=yes
>>  gl_cv_func_printf_flag_grouping=yes
>>  gl_cv_func_printf_flag_leftadjust=yes
>
> If MinGW doesn't support those directives, the above is not TRT, it
> might cause future maintenance headaches.
>
> I don't think MSVCRT.DLL's implementation of printf supports those, at
> least not on all versions of Windows.

Those flags are how Gnulib users are meant to disable the printf-posix
module, though.  Angelo, would you please provide your config.log?  It
would assist me in determining which printf features Gnulib is still
striving to replace.



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

* Re: Android port
  2023-08-04 10:40     ` Eli Zaretskii
@ 2023-08-04 12:12       ` Po Lu
  2023-08-04 12:59         ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-04 12:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> That doesn't answer my question, AFAICT.  In the current master we
> have no uses of asprintf and vasnprintf, so I asked whether it is
> needed on the branch, and if so, whether the MS-Windows build uses the
> code where these two functions are called.

It doesn't, but vfprintf-posix actually replaces all the printf
functions, not just (vasn)printf.  The replacement functions are not
necessary on Windows, however.

> The way to override Gnulib tests that conclude that some libc function
> should be replaced is not to override the feature test (unless that
> feature is supported, but Gnulib doesn't know about it -- which can
> only happen if we implement the library function inside Emacs).  The
> way to override those is to exclude the relevant Gnulib modules from
> the Windows build via nt/gnulib-cfg.mk.

There is already:

OMIT_GNULIB_MODULE_vasnprintf = true
OMIT_GNULIB_MODULE_vasprintf = true
OMIT_GNULIB_MODULE_vfprintf-posix = true

within gnulib-cfg.mk, but fudging with the feature tests is also
necessary to generate the Gnulib stdio.h header correctly; absent that,
it tries to provide definitions for its printf replacements, which does
not work.

IIRC manipulating the feature tests in such a fashion was proposed by
one of the Gnulib developers when the W32 build was last tested in
March, but my memory of that is indistinct and I might've read this
elsewhere.



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

* Re: Android port
  2023-08-04 12:02     ` Po Lu
@ 2023-08-04 12:58       ` Angelo Graziosi
  2023-08-04 13:17         ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-04 12:58 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 214 bytes --]

> Il 04/08/2023 14:02 CEST Po Lu ha scritto:
> 

> 
> Angelo, would you please provide your config.log?  It
> would assist me in determining which printf features Gnulib is still
> striving to replace.

Attached...

[-- Attachment #2: config_log.tar.gz --]
[-- Type: application/gzip, Size: 95605 bytes --]

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

* Re: Android port
  2023-08-04 12:12       ` Po Lu
@ 2023-08-04 12:59         ` Eli Zaretskii
  2023-08-04 13:23           ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04 12:59 UTC (permalink / raw)
  To: Po Lu; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Fri, 04 Aug 2023 20:12:24 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > That doesn't answer my question, AFAICT.  In the current master we
> > have no uses of asprintf and vasnprintf, so I asked whether it is
> > needed on the branch, and if so, whether the MS-Windows build uses the
> > code where these two functions are called.
> 
> It doesn't, but vfprintf-posix actually replaces all the printf
> functions, not just (vasn)printf.  The replacement functions are not
> necessary on Windows, however.

Then TRT is to disable the build of vfprintf-posix module on Windows.

> > The way to override Gnulib tests that conclude that some libc function
> > should be replaced is not to override the feature test (unless that
> > feature is supported, but Gnulib doesn't know about it -- which can
> > only happen if we implement the library function inside Emacs).  The
> > way to override those is to exclude the relevant Gnulib modules from
> > the Windows build via nt/gnulib-cfg.mk.
> 
> There is already:
> 
> OMIT_GNULIB_MODULE_vasnprintf = true
> OMIT_GNULIB_MODULE_vasprintf = true
> OMIT_GNULIB_MODULE_vfprintf-posix = true
> 
> within gnulib-cfg.mk, but fudging with the feature tests is also
> necessary to generate the Gnulib stdio.h header correctly; absent that,
> it tries to provide definitions for its printf replacements, which does
> not work.

OK, then I guess there's something else at work here.  In any case,
the information posted by Angelo clearly shows that asprintf.c is
being compiled, and that is strange if vfprintf-posix module is
disabled.  Maybe we also need

  OMIT_GNULIB_MODULE_asprintf = true

?



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

* Re: Android port
  2023-08-04 12:58       ` Angelo Graziosi
@ 2023-08-04 13:17         ` Po Lu
  2023-08-04 13:37           ` Corwin Brust
                             ` (2 more replies)
  0 siblings, 3 replies; 205+ messages in thread
From: Po Lu @ 2023-08-04 13:17 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Eli Zaretskii, emacs-devel

Angelo Graziosi <angelo.g0@libero.it> writes:

>> Il 04/08/2023 14:02 CEST Po Lu ha scritto:
>> 
>
>> 
>> Angelo, would you please provide your config.log?  It
>> would assist me in determining which printf features Gnulib is still
>> striving to replace.
>
> Attached...

Thanks, what if you apply this patch on top of the previous one?
Like last time, please re-run configure.

diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index 68e264fde4c..f78ee525bf1 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -175,6 +175,7 @@ gl_cv_func_nanosleep=yes
 enable_xattr=no
 # Don't build gnulib printf either.
 gl_cv_func_printf_sizes_c99=yes
+gl_cv_func_printf_sizes_c23=yes
 gl_cv_func_printf_long_double=yes
 gl_cv_func_printf_infinite_long_double=yes
 gl_cv_func_printf_directive_a=yes



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

* Re: Android port
  2023-08-04 12:59         ` Eli Zaretskii
@ 2023-08-04 13:23           ` Po Lu
  2023-08-04 14:00             ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-04 13:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Po Lu <luangruo@yahoo.com>
>> Cc: angelo.g0@libero.it,  emacs-devel@gnu.org
>> Date: Fri, 04 Aug 2023 20:12:24 +0800
>> 
>> Eli Zaretskii <eliz@gnu.org> writes:
>> 
>> > That doesn't answer my question, AFAICT.  In the current master we
>> > have no uses of asprintf and vasnprintf, so I asked whether it is
>> > needed on the branch, and if so, whether the MS-Windows build uses the
>> > code where these two functions are called.
>> 
>> It doesn't, but vfprintf-posix actually replaces all the printf
>> functions, not just (vasn)printf.  The replacement functions are not
>> necessary on Windows, however.
>
> Then TRT is to disable the build of vfprintf-posix module on Windows.
>
>> > The way to override Gnulib tests that conclude that some libc function
>> > should be replaced is not to override the feature test (unless that
>> > feature is supported, but Gnulib doesn't know about it -- which can
>> > only happen if we implement the library function inside Emacs).  The
>> > way to override those is to exclude the relevant Gnulib modules from
>> > the Windows build via nt/gnulib-cfg.mk.
>> 
>> There is already:
>> 
>> OMIT_GNULIB_MODULE_vasnprintf = true
>> OMIT_GNULIB_MODULE_vasprintf = true
>> OMIT_GNULIB_MODULE_vfprintf-posix = true
>> 
>> within gnulib-cfg.mk, but fudging with the feature tests is also
>> necessary to generate the Gnulib stdio.h header correctly; absent that,
>> it tries to provide definitions for its printf replacements, which does
>> not work.
>
> OK, then I guess there's something else at work here.  In any case,
> the information posted by Angelo clearly shows that asprintf.c is
> being compiled, and that is strange if vfprintf-posix module is
> disabled.  Maybe we also need
>
>   OMIT_GNULIB_MODULE_asprintf = true
>
> ?

There's no module by that name; asprintf is a constituent of vasnprintf,
and that's already mentioned in gnulib-cfg.mk...



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

* Re: Android port
  2023-08-04 13:17         ` Po Lu
@ 2023-08-04 13:37           ` Corwin Brust
  2023-08-05  3:24             ` Corwin Brust
  2023-08-04 13:48           ` Angelo Graziosi
  2023-08-04 14:09           ` Eli Zaretskii
  2 siblings, 1 reply; 205+ messages in thread
From: Corwin Brust @ 2023-08-04 13:37 UTC (permalink / raw)
  To: Po Lu; +Cc: Angelo Graziosi, Eli Zaretskii, emacs-devel

On Fri, Aug 4, 2023 at 8:17 AM Po Lu <luangruo@yahoo.com> wrote:
>
> Angelo Graziosi <angelo.g0@libero.it> writes:
>
> Thanks, what if you apply this patch on top of the previous one?
> Like last time, please re-run configure.
>

With both patches applied I'm able to build feature/android under
MSYS2/MinGW64.  I am trying a 32 bit build now.



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

* Re: Android port
  2023-08-04 13:17         ` Po Lu
  2023-08-04 13:37           ` Corwin Brust
@ 2023-08-04 13:48           ` Angelo Graziosi
  2023-08-04 14:09           ` Eli Zaretskii
  2 siblings, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-04 13:48 UTC (permalink / raw)
  To: Po Lu; +Cc: Eli Zaretskii, emacs-devel

> Il 04/08/2023 15:17 CEST Po Lu ha scritto:
> 
> Thanks, what if you apply this patch on top of the previous one?
> Like last time, please re-run configure.
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index 68e264fde4c..f78ee525bf1 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -175,6 +175,7 @@ gl_cv_func_nanosleep=yes
>  enable_xattr=no
>  # Don't build gnulib printf either.
>  gl_cv_func_printf_sizes_c99=yes
> +gl_cv_func_printf_sizes_c23=yes
>  gl_cv_func_printf_long_double=yes
>  gl_cv_func_printf_infinite_long_double=yes
>  gl_cv_func_printf_directive_a=yes

Now it builds.. I am using it..



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

* Re: Android port
  2023-08-04 13:23           ` Po Lu
@ 2023-08-04 14:00             ` Eli Zaretskii
  2023-08-05  0:48               ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04 14:00 UTC (permalink / raw)
  To: Po Lu; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Fri, 04 Aug 2023 21:23:04 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > OK, then I guess there's something else at work here.  In any case,
> > the information posted by Angelo clearly shows that asprintf.c is
> > being compiled, and that is strange if vfprintf-posix module is
> > disabled.  Maybe we also need
> >
> >   OMIT_GNULIB_MODULE_asprintf = true
> >
> > ?
> 
> There's no module by that name; asprintf is a constituent of vasnprintf,
> and that's already mentioned in gnulib-cfg.mk...

When why is asprintf.c being compiled, if its module is disabled?
Disabling a module should disable the lib/Makefile rules that compile
the module.



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

* Re: Android port
  2023-08-04 13:17         ` Po Lu
  2023-08-04 13:37           ` Corwin Brust
  2023-08-04 13:48           ` Angelo Graziosi
@ 2023-08-04 14:09           ` Eli Zaretskii
  2023-08-05  1:04             ` Po Lu
  2 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-04 14:09 UTC (permalink / raw)
  To: Po Lu; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> Date: Fri, 04 Aug 2023 21:17:47 +0800
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index 68e264fde4c..f78ee525bf1 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -175,6 +175,7 @@ gl_cv_func_nanosleep=yes
>  enable_xattr=no
>  # Don't build gnulib printf either.
>  gl_cv_func_printf_sizes_c99=yes
> +gl_cv_func_printf_sizes_c23=yes
>  gl_cv_func_printf_long_double=yes
>  gl_cv_func_printf_infinite_long_double=yes
>  gl_cv_func_printf_directive_a=yes

What feature does the gl_cv_func_printf_sizes_c23 variable test?  Does
MinGW printf indeed support that feature?  If not, we are lying to the
configure script, and that is not TRT.



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

* Re: Android port
  2023-08-04 14:00             ` Eli Zaretskii
@ 2023-08-05  0:48               ` Po Lu
  2023-08-05  6:39                 ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05  0:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> When why is asprintf.c being compiled, if its module is disabled?

Because the Gnulib configury includes it within LIBOBJ:

AC_DEFUN([gl_REPLACE_VASPRINTF],
[
  AC_LIBOBJ([vasprintf])
  AC_LIBOBJ([asprintf])
  AC_REQUIRE([gl_STDIO_H_DEFAULTS])

whenever it detects that asprintf isn't present on the host system.

> Disabling a module should disable the lib/Makefile rules that compile
> the module.

Gnulib doesn't support disabling these modules through Makefile options.



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

* Re: Android port
  2023-08-04 14:09           ` Eli Zaretskii
@ 2023-08-05  1:04             ` Po Lu
  2023-08-05  6:41               ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05  1:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Po Lu <luangruo@yahoo.com>
>> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
>> Date: Fri, 04 Aug 2023 21:17:47 +0800
>> 
>> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
>> index 68e264fde4c..f78ee525bf1 100644
>> --- a/nt/mingw-cfg.site
>> +++ b/nt/mingw-cfg.site
>> @@ -175,6 +175,7 @@ gl_cv_func_nanosleep=yes
>>  enable_xattr=no
>>  # Don't build gnulib printf either.
>>  gl_cv_func_printf_sizes_c99=yes
>> +gl_cv_func_printf_sizes_c23=yes
>>  gl_cv_func_printf_long_double=yes
>>  gl_cv_func_printf_infinite_long_double=yes
>>  gl_cv_func_printf_directive_a=yes
>
> What feature does the gl_cv_func_printf_sizes_c23 variable test?  Does
> MinGW printf indeed support that feature?  If not, we are lying to the
> configure script, and that is not TRT.

We are deceiving the configure script, but that's the only ``supported''
way to disable the printf* modules, as they aren't subject to the normal
Make-based controls in gnulib.mk.



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

* Re: Android port
  2023-08-04 13:37           ` Corwin Brust
@ 2023-08-05  3:24             ` Corwin Brust
  2023-08-05  6:46               ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Corwin Brust @ 2023-08-05  3:24 UTC (permalink / raw)
  To: Po Lu; +Cc: Angelo Graziosi, Eli Zaretskii, emacs-devel

On Fri, Aug 4, 2023 at 8:37 AM Corwin Brust <corwin@bru.st> wrote:
>
> With both patches applied I'm able to build feature/android under
> MSYS2/MinGW64.  I am trying a 32 bit build now.

That build also succeeded; I can run the resulting runemacs.exe from
MinGW32; it "works".



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

* Re: Android port
  2023-08-05  0:48               ` Po Lu
@ 2023-08-05  6:39                 ` Eli Zaretskii
  2023-08-05  7:00                   ` Po Lu
  2023-08-05 10:04                   ` Bruno Haible
  0 siblings, 2 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05  6:39 UTC (permalink / raw)
  To: Po Lu, Paul Eggert, Bruno Haible; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 08:48:33 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > When why is asprintf.c being compiled, if its module is disabled?
> 
> Because the Gnulib configury includes it within LIBOBJ:
> 
> AC_DEFUN([gl_REPLACE_VASPRINTF],
> [
>   AC_LIBOBJ([vasprintf])
>   AC_LIBOBJ([asprintf])
>   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
> 
> whenever it detects that asprintf isn't present on the host system.

What is gl_REPLACE_VASPRINTF, and why is it set for MinGW?  Can that
be disabled somehow (without setting configure variables that test
specific features)?

> > Disabling a module should disable the lib/Makefile rules that compile
> > the module.
> 
> Gnulib doesn't support disabling these modules through Makefile options.

Then we should ask them to add that, or help us solve this in another
proper way.

Paul and Bruno, can you please advise how to resolve this issue?  We
need to disable the compilation of these *printf modules on
MS-Windows, since the Windows build doesn't need them, and compiling
them causes compile-time errors.  The usual method of omitting a
module, like we do in nt/gnulib-cfg.mk, seems not to work in the above
case for some reason.

Another possible way forward is for Gnulib to modify asprintf.c so
that it does compile with MinGW (and then it will be left unused on
Windows in libgnu.a).

TIA



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

* Re: Android port
  2023-08-05  1:04             ` Po Lu
@ 2023-08-05  6:41               ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05  6:41 UTC (permalink / raw)
  To: Po Lu; +Cc: angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 09:04:54 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Po Lu <luangruo@yahoo.com>
> >> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> >> Date: Fri, 04 Aug 2023 21:17:47 +0800
> >> 
> >> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> >> index 68e264fde4c..f78ee525bf1 100644
> >> --- a/nt/mingw-cfg.site
> >> +++ b/nt/mingw-cfg.site
> >> @@ -175,6 +175,7 @@ gl_cv_func_nanosleep=yes
> >>  enable_xattr=no
> >>  # Don't build gnulib printf either.
> >>  gl_cv_func_printf_sizes_c99=yes
> >> +gl_cv_func_printf_sizes_c23=yes
> >>  gl_cv_func_printf_long_double=yes
> >>  gl_cv_func_printf_infinite_long_double=yes
> >>  gl_cv_func_printf_directive_a=yes
> >
> > What feature does the gl_cv_func_printf_sizes_c23 variable test?  Does
> > MinGW printf indeed support that feature?  If not, we are lying to the
> > configure script, and that is not TRT.
> 
> We are deceiving the configure script, but that's the only ``supported''
> way to disable the printf* modules, as they aren't subject to the normal
> Make-based controls in gnulib.mk.

I'm sorry, but such a solution is not acceptable, as it will be a
maintenance headache, if and when we actually need these features in
Emacs.  We must find a cleaner solution.

Let's wait for the Gnulib folks to chime in and suggest better ways of
solving this.



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

* Re: Android port
  2023-08-05  3:24             ` Corwin Brust
@ 2023-08-05  6:46               ` Eli Zaretskii
  2023-08-05  7:11                 ` Corwin Brust
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05  6:46 UTC (permalink / raw)
  To: Corwin Brust; +Cc: luangruo, angelo.g0, emacs-devel

> From: Corwin Brust <corwin@bru.st>
> Date: Fri, 4 Aug 2023 22:24:09 -0500
> Cc: Angelo Graziosi <angelo.g0@libero.it>, Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> 
> On Fri, Aug 4, 2023 at 8:37 AM Corwin Brust <corwin@bru.st> wrote:
> >
> > With both patches applied I'm able to build feature/android under
> > MSYS2/MinGW64.  I am trying a 32 bit build now.
> 
> That build also succeeded; I can run the resulting runemacs.exe from
> MinGW32; it "works".

On which version of MS-Windows did you test the 32-bit build?

And thanks for yours and Angelo's efforts in validating this branch.



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

* Re: Android port
  2023-08-05  6:39                 ` Eli Zaretskii
@ 2023-08-05  7:00                   ` Po Lu
  2023-08-05  8:39                     ` Angelo Graziosi
  2023-08-05 10:04                   ` Bruno Haible
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05  7:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Paul Eggert, Bruno Haible, angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> What is gl_REPLACE_VASPRINTF, and why is it set for MinGW?  Can that
> be disabled somehow (without setting configure variables that test
> specific features)?

gl_REPLACE_VASPRINTF is a macro that is expanded into configure.ac by
gnulib-comp.m4, and acts upon the results of the aformentioned printf
tests.

> Then we should ask them to add that, or help us solve this in another
> proper way.

AFAIK, lying to configure _is_ the proper way for this specific
module...

> Paul and Bruno, can you please advise how to resolve this issue?  We
> need to disable the compilation of these *printf modules on
> MS-Windows, since the Windows build doesn't need them, and compiling
> them causes compile-time errors.  The usual method of omitting a
> module, like we do in nt/gnulib-cfg.mk, seems not to work in the above
> case for some reason.

Yes, please.  Thanks in advance.



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

* Re: Android port
  2023-08-05  6:46               ` Eli Zaretskii
@ 2023-08-05  7:11                 ` Corwin Brust
  0 siblings, 0 replies; 205+ messages in thread
From: Corwin Brust @ 2023-08-05  7:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, angelo.g0, emacs-devel

On Sat, Aug 5, 2023 at 1:46 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Corwin Brust <corwin@bru.st>
> > Date: Fri, 4 Aug 2023 22:24:09 -0500
> > Cc: Angelo Graziosi <angelo.g0@libero.it>, Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> >
> > On Fri, Aug 4, 2023 at 8:37 AM Corwin Brust <corwin@bru.st> wrote:
> > >
> > > With both patches applied I'm able to build feature/android under
> > > MSYS2/MinGW64.  I am trying a 32 bit build now.
> >
> > That build also succeeded; I can run the resulting runemacs.exe from
> > MinGW32; it "works".
>
> On which version of MS-Windows did you test the 32-bit build?

I have Windows 10 Home (22H2) OS Build:19045.3271
On the off chance it helps, I have Windows Feature Experience Pack
1000.19041.1000.0

I launched Emacs (in my x64 bit environment) from:

MINGW32_NT-10.0-19045 Avalon 3.3.4-341.x86_64 2022-02-15 17:24 UTC x86_64 Msys

>
> And thanks for yours and Angelo's efforts in validating this branch.
>

Very much a pleasure.



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

* Re: Android port
  2023-08-05  7:00                   ` Po Lu
@ 2023-08-05  8:39                     ` Angelo Graziosi
  2023-08-05  9:15                       ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-05  8:39 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: Paul Eggert, Bruno Haible, emacs-devel

The last android branch builds on NS (macOS 10.13.6 HS).

Anyway I discovered an issue with this branch, both on Windows (yesterday build) and NS (today build), when upgrading packages.

 M-x list-packages
 U
 x

it fails: in the minibuffer I get

[y-or-n-p:] Symbol’s function definition is void: set-text-conversion-style


With current master it works as expected...



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

* Re: Android port
  2023-08-05  8:39                     ` Angelo Graziosi
@ 2023-08-05  9:15                       ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-08-05  9:15 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Eli Zaretskii, Paul Eggert, Bruno Haible, emacs-devel

Angelo Graziosi <angelo.g0@libero.it> writes:

> The last android branch builds on NS (macOS 10.13.6 HS).
>
> Anyway I discovered an issue with this branch, both on Windows
> (yesterday build) and NS (today build), when upgrading packages.
>
>  M-x list-packages
>  U
>  x
>
> it fails: in the minibuffer I get
>
> [y-or-n-p:] Symbol’s function definition is void: set-text-conversion-style
>
>
> With current master it works as expected...

Thanks.  This will be fixed shortly.



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

* Re: Android port
  2023-08-05  6:39                 ` Eli Zaretskii
  2023-08-05  7:00                   ` Po Lu
@ 2023-08-05 10:04                   ` Bruno Haible
  2023-08-05 11:05                     ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-05 10:04 UTC (permalink / raw)
  To: angelo.g0; +Cc: Po Lu, Paul Eggert, Eli Zaretskii, emacs-devel

Eli Zaretskii wrote:
> Then we should ask them to add that, or help us solve this in another
> proper way.
> 
> Paul and Bruno, can you please advise how to resolve this issue?  We
> need to disable the compilation of these *printf modules on
> MS-Windows, since the Windows build doesn't need them, and compiling
> them causes compile-time errors.  The usual method of omitting a
> module, like we do in nt/gnulib-cfg.mk, seems not to work in the above
> case for some reason.
> 
> Another possible way forward is for Gnulib to modify asprintf.c so
> that it does compile with MinGW (and then it will be left unused on
> Windows in libgnu.a).

Before thinking about how to disable things, the first thought should
be how to fix the compilation error — since that's generally easier
and also may help other packages than Emacs.

This asprintf() declaration in mingw's <stdio.h> is guarded by
__USE_MINGW_ANSI_STDIO. I've checked the Emacs source code, and it
appears to set __USE_MINGW_ANSI_STDIO to 1, just like Gnulib does.

Therefore I need more info from the reporter (Angelo [1]), for analysis:

1) Please do "make -k V=1" twice and attach the log of the second run.
   (Logs without V=1 often hide important details. Also, I'd like to
   know whether the same error also occurs with vasprintf.c.)

2) Please attach the file config.status. I need to the see value of
   REPLACE_ASPRINTF and related variables.

3) Also, if you still have the output of 'configure' (the many
   "checking for ..." lines), it would be good if you could attach
   that as well.

4) Finally, please attach the C:/msys64/mingw64/include/stdio.h — because
   there are so many versions of mingw.

Thanks.

Bruno

[1] https://lists.gnu.org/archive/html/emacs-devel/2023-08/msg00044.html






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

* Re: Android port
  2023-08-05 10:04                   ` Bruno Haible
@ 2023-08-05 11:05                     ` Angelo Graziosi
  2023-08-05 11:20                       ` Bruno Haible
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-05 11:05 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Po Lu, Paul Eggert, Eli Zaretskii, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1425 bytes --]


> Il 05/08/2023 12:04 CEST Bruno Haible ha scritto:
> [...]
> Therefore I need more info from the reporter (Angelo [1]), for analysis:
> 
> 1) Please do "make -k V=1" twice and attach the log of the second run.
>    (Logs without V=1 often hide important details. Also, I'd like to
>    know whether the same error also occurs with vasprintf.c.)
> 
> 2) Please attach the file config.status. I need to the see value of
>    REPLACE_ASPRINTF and related variables.
> 
> 3) Also, if you still have the output of 'configure' (the many
>    "checking for ..." lines), it would be good if you could attach
>    that as well.
> 
> 4) Finally, please attach the C:/msys64/mingw64/include/stdio.h — because
>    there are so many versions of mingw.
> 
> Thanks.
> 
> Bruno
> 
> [1] https://lists.gnu.org/archive/html/emacs-devel/2023-08/msg00044.html

I had lost that source but 

wget https://git.savannah.gnu.org/cgit/emacs.git/snapshot/emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz

seems the same source. It has the same failure.

The attached tarball contains:

- autogen_configure_output.log, which is the output of
  
    ./autogen
    ./configure

- make-k_V.eq.1-first_output.log, which is the output of the first `make -k V=1`
- make-k_V.eq.1-second_output.log, which is the output of the first `make -k V=1`
- config.status
- stdio.h (/mingw64/include/stdio.h)

Angelo

[-- Attachment #2: emacs_build_logs.tar.gz --]
[-- Type: application/gzip, Size: 48713 bytes --]

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

* Re: Android port
  2023-08-05 11:05                     ` Angelo Graziosi
@ 2023-08-05 11:20                       ` Bruno Haible
  2023-08-05 12:06                         ` Angelo Graziosi
  2023-08-05 12:12                         ` Eli Zaretskii
  0 siblings, 2 replies; 205+ messages in thread
From: Bruno Haible @ 2023-08-05 11:20 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Po Lu, Paul Eggert, Eli Zaretskii, emacs-devel

Angelo Graziosi wrote:
> I had lost that source but 
> 
> wget https://git.savannah.gnu.org/cgit/emacs.git/snapshot/emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz
> 
> seems the same source. It has the same failure.
> 
> The attached tarball contains:
> 
> - autogen_configure_output.log, which is the output of
>   
>     ./autogen
>     ./configure
> 
> - make-k_V.eq.1-first_output.log, which is the output of the first `make -k V=1`
> - make-k_V.eq.1-second_output.log, which is the output of the first `make -k V=1`
> - config.status
> - stdio.h (/mingw64/include/stdio.h)

Thanks. The REPLACE_*PRINTF values appear to be correct.

But from this error log:

In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
                 from ../src/conf_post.h:38,
                 from ../src/config.h:3511,
                 from printf.c:18:
C:/msys64/mingw64/include/stdio.h:379:5: note: previous definition of 'printf' with type 'int(const char *, ...)'

it seems that nt/inc/ms-w32.h directly includes <stdio.h> from mingw, without
the interposed lib/stdio.h.

Do you have a lib/stdio.h in your build tree?

Bruno






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

* Re: Android port
  2023-08-05 11:20                       ` Bruno Haible
@ 2023-08-05 12:06                         ` Angelo Graziosi
  2023-08-05 12:12                         ` Eli Zaretskii
  1 sibling, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-05 12:06 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Po Lu, Paul Eggert, Eli Zaretskii, emacs-devel


> Il 05/08/2023 13:20 CEST Bruno Haible ha scritto:
> 
>  
> Angelo Graziosi wrote:
> > I had lost that source but 
> > 
> > wget https://git.savannah.gnu.org/cgit/emacs.git/snapshot/emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz
> > 
> > seems the same source. It has the same failure.
> > 
> > The attached tarball contains:
> > 
> > - autogen_configure_output.log, which is the output of
> >   
> >     ./autogen
> >     ./configure
> > 
> > - make-k_V.eq.1-first_output.log, which is the output of the first `make -k V=1`
> > - make-k_V.eq.1-second_output.log, which is the output of the first `make -k V=1`
> > - config.status
> > - stdio.h (/mingw64/include/stdio.h)
> 
> Thanks. The REPLACE_*PRINTF values appear to be correct.
> 
> But from this error log:
> 
> In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
>                  from ../src/conf_post.h:38,
>                  from ../src/config.h:3511,
>                  from printf.c:18:
> C:/msys64/mingw64/include/stdio.h:379:5: note: previous definition of 'printf' with type 'int(const char *, ...)'
> 
> it seems that nt/inc/ms-w32.h directly includes <stdio.h> from mingw, without
> the interposed lib/stdio.h.
> 
> Do you have a lib/stdio.h in your build tree?

It seems no, just something similar:

$ ls  emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/std*
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdalign.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdckdint.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdckdint.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stddef.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stddef.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdint.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdint.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdio.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdio-impl.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdlib.in.h


and

$ find emacs-bfbdf4eb892935536fc665d6cc986fd669364263/ -iname "*stdio*"
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/cross/lib/stdio-impl.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/cross/lib/stdio.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdio-impl.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib/stdio.in.h
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/m4/stdio_h.m4
emacs-bfbdf4eb892935536fc665d6cc986fd669364263/src/sysstdio.h



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

* Re: Android port
  2023-08-05 11:20                       ` Bruno Haible
  2023-08-05 12:06                         ` Angelo Graziosi
@ 2023-08-05 12:12                         ` Eli Zaretskii
  2023-08-05 12:16                           ` Po Lu
  2023-08-05 12:25                           ` Bruno Haible
  1 sibling, 2 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05 12:12 UTC (permalink / raw)
  To: Bruno Haible; +Cc: angelo.g0, luangruo, eggert, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: Po Lu <luangruo@yahoo.com>, Paul Eggert <eggert@cs.ucla.edu>, Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 13:20:31 +0200
> 
> But from this error log:
> 
> In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
>                  from ../src/conf_post.h:38,
>                  from ../src/config.h:3511,
>                  from printf.c:18:
> C:/msys64/mingw64/include/stdio.h:379:5: note: previous definition of 'printf' with type 'int(const char *, ...)'
> 
> it seems that nt/inc/ms-w32.h directly includes <stdio.h> from mingw, without
> the interposed lib/stdio.h.
> 
> Do you have a lib/stdio.h in your build tree?

The MinGW build omits building the Gnulib's stdio module.  We did that
since 2017.  The exact reasons are probably lost in time, but I can
assure you they were real, and I wouldn't want to reintroduce them for
this particular reason.

Since the *printf family doesn't need to be replaced in the Emacs
build on MS-Windows, I'd rather we understood why the above causes
compilation errors.  Aren't Gnulib replacements for *printf functions
supposed to have prototypes compatible to the MinGW headers?



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

* Re: Android port
  2023-08-05 12:12                         ` Eli Zaretskii
@ 2023-08-05 12:16                           ` Po Lu
  2023-08-05 12:31                             ` Eli Zaretskii
  2023-08-05 12:25                           ` Bruno Haible
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05 12:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Bruno Haible, angelo.g0, eggert, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Bruno Haible <bruno@clisp.org>
>> Cc: Po Lu <luangruo@yahoo.com>, Paul Eggert <eggert@cs.ucla.edu>, Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
>> Date: Sat, 05 Aug 2023 13:20:31 +0200
>> 
>> But from this error log:
>> 
>> In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
>>                  from ../src/conf_post.h:38,
>>                  from ../src/config.h:3511,
>>                  from printf.c:18:
>> C:/msys64/mingw64/include/stdio.h:379:5: note: previous definition of 'printf' with type 'int(const char *, ...)'
>> 
>> it seems that nt/inc/ms-w32.h directly includes <stdio.h> from mingw, without
>> the interposed lib/stdio.h.
>> 
>> Do you have a lib/stdio.h in your build tree?
>
> The MinGW build omits building the Gnulib's stdio module.  We did that
> since 2017.  The exact reasons are probably lost in time, but I can
> assure you they were real, and I wouldn't want to reintroduce them for
> this particular reason.
>
> Since the *printf family doesn't need to be replaced in the Emacs
> build on MS-Windows, I'd rather we understood why the above causes
> compilation errors.  Aren't Gnulib replacements for *printf functions
> supposed to have prototypes compatible to the MinGW headers?

Judging from the headers Angelo provided, the issue lies in MinGW's
headers defining (not merely declaring) asprintf:

#ifdef _GNU_SOURCE
__mingw_ovr
__attribute__ ((__format__ (gnu_printf, 2, 3))) __attribute__((nonnull (1,2)))
int asprintf(char **__ret, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vasprintf( __ret, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}

IMHO, the least risky solution remains disabling the vasprintf module
entirely.  We can revisit this problem when and if Emacs begins to rely
on ISO C2X and C99 features supplied by Gnulib.



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

* Re: Android port
  2023-08-05 12:12                         ` Eli Zaretskii
  2023-08-05 12:16                           ` Po Lu
@ 2023-08-05 12:25                           ` Bruno Haible
  2023-08-05 12:42                             ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-05 12:25 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, luangruo, eggert, emacs-devel

Eli Zaretskii wrote:
> > But from this error log:
> > 
> > In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
> >                  from ../src/conf_post.h:38,
> >                  from ../src/config.h:3511,
> >                  from printf.c:18:
> > C:/msys64/mingw64/include/stdio.h:379:5: note: previous definition of 'printf' with type 'int(const char *, ...)'
> > 
> > it seems that nt/inc/ms-w32.h directly includes <stdio.h> from mingw, without
> > the interposed lib/stdio.h.
> > 
> > Do you have a lib/stdio.h in your build tree?

Angelo replied "It seems no".

And that is the problem. The generated stdio.h, on this platform, is
supposed to contain macro definitions:
  #define asprintf rpl_asprintf
  #define printf __printf__
  #define vasprintf rpl_vasprintf
  #define vfprintf rpl_vfprintf

By omitting these macro definitions, there is a conflict between the
inline definition in mingw's <stdio.h> and the Gnulib replacement code.

> The MinGW build omits building the Gnulib's stdio module.  We did that
> since 2017.  The exact reasons are probably lost in time, but I can
> assure you they were real, and I wouldn't want to reintroduce them for
> this particular reason.

It'd be worth a try nevertheless. Gnulib has changed a lot since 2017.

> Since the *printf family doesn't need to be replaced in the Emacs
> build on MS-Windows, I'd rather we understood why the above causes
> compilation errors.

See above.

> Aren't Gnulib replacements for *printf functions
> supposed to have prototypes compatible to the MinGW headers?

No, Gnulib replacements always have different function names than
the system function (except for the 'free' function). The reason
is that there is so much variation in the prototypes of a function
(with or without 'restrict', with or without 'throw()' in C++,
with or without 'static' / 'inline'), that it would be extremely
fragile to attempt to get the exact same prototype as the system.

So, if you decided not to have a generated stdio.h, the simplest
solution seems to be:
  1) in the conf_post.h or nt/inc/ms-w32.h, include <stdio.h>
     (this is the one from the system),
  2) after this #include, add
     #define asprintf rpl_asprintf
     #define printf __printf__
     #define vasprintf rpl_vasprintf
     #define vfprintf rpl_vfprintf
     and add prototypes for these 4 functions.

Bruno






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

* Re: Android port
  2023-08-05 12:16                           ` Po Lu
@ 2023-08-05 12:31                             ` Eli Zaretskii
  2023-08-05 12:35                               ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05 12:31 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, angelo.g0, eggert, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Bruno Haible <bruno@clisp.org>,  angelo.g0@libero.it,
>   eggert@cs.ucla.edu,  emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 20:16:32 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Since the *printf family doesn't need to be replaced in the Emacs
> > build on MS-Windows, I'd rather we understood why the above causes
> > compilation errors.  Aren't Gnulib replacements for *printf functions
> > supposed to have prototypes compatible to the MinGW headers?
> 
> Judging from the headers Angelo provided, the issue lies in MinGW's
> headers defining (not merely declaring) asprintf:
> 
> #ifdef _GNU_SOURCE
> __mingw_ovr
> __attribute__ ((__format__ (gnu_printf, 2, 3))) __attribute__((nonnull (1,2)))
> int asprintf(char **__ret, const char *__format, ...)
> {
>   int __retval;
>   __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
>   __retval = __mingw_vasprintf( __ret, __format, __local_argv );
>   __builtin_va_end( __local_argv );
>   return __retval;
> }
> 
> IMHO, the least risky solution remains disabling the vasprintf module
> entirely.

I agree.  We wanted to do that from the get-go, but you said it was
somehow impossible, or didn't work?

> We can revisit this problem when and if Emacs begins to rely on ISO
> C2X and C99 features supplied by Gnulib.

Right.



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

* Re: Android port
  2023-08-05 12:31                             ` Eli Zaretskii
@ 2023-08-05 12:35                               ` Po Lu
  2023-08-05 12:42                                 ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05 12:35 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bruno, angelo.g0, eggert, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> I agree.  We wanted to do that from the get-go, but you said it was
> somehow impossible, or didn't work?

That's the subject I'm trying to bring up with Bruno: presently, it's
still impossible to disable printf-related using the
`OMIT_GNULIB_MODULE_' Makefile options, only through manipulating test
results in mingw-cfg.site.



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

* Re: Android port
  2023-08-05 12:35                               ` Po Lu
@ 2023-08-05 12:42                                 ` Po Lu
  0 siblings, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-08-05 12:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bruno, angelo.g0, eggert, emacs-devel

Po Lu <luangruo@yahoo.com> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> I agree.  We wanted to do that from the get-go, but you said it was
>> somehow impossible, or didn't work?
>
> That's the subject I'm trying to bring up with Bruno: presently, it's
> still impossible to disable printf-related using the
                             ^ the          ^ modules

Sorry about the omissions.



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

* Re: Android port
  2023-08-05 12:25                           ` Bruno Haible
@ 2023-08-05 12:42                             ` Eli Zaretskii
  2023-08-05 12:47                               ` Bruno Haible
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05 12:42 UTC (permalink / raw)
  To: Bruno Haible; +Cc: angelo.g0, luangruo, eggert, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: angelo.g0@libero.it, luangruo@yahoo.com, eggert@cs.ucla.edu, emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 14:25:59 +0200
> 
> Eli Zaretskii wrote:
> > The MinGW build omits building the Gnulib's stdio module.  We did that
> > since 2017.  The exact reasons are probably lost in time, but I can
> > assure you they were real, and I wouldn't want to reintroduce them for
> > this particular reason.
> 
> It'd be worth a try nevertheless. Gnulib has changed a lot since 2017.

If someone wants to try that and report back, I won't mind.  But I
personally don't have time (nor the motivation, TBH).  There be
dragons: for example, Emacs on MS-Windows provides its own
implementation of fopen, because we want to support UTF-8 encoded file
names even when the system codepage is not (or cannot be) UTF-8.
Likewise with any other Gnulib replacement that accepts file names:
Emacs must be able to pass UTF-8 encoded file names on Windows,
because it supports non-ASCII file names without restrictions imposed
by the current system codepage.

> So, if you decided not to have a generated stdio.h, the simplest
> solution seems to be:
>   1) in the conf_post.h or nt/inc/ms-w32.h, include <stdio.h>
>      (this is the one from the system),
>   2) after this #include, add
>      #define asprintf rpl_asprintf
>      #define printf __printf__
>      #define vasprintf rpl_vasprintf
>      #define vfprintf rpl_vfprintf
>      and add prototypes for these 4 functions.

I'd prefer to use the simpler machinery of OMIT_GNULIB_MODULE to
prevent the Emacs build from compiling asprintf.c and similar
replacements on MS-Windows.  Is that possible?  We do that with
several other Gnulib modules, see the file nt/gnulib-cfg.mk in the
Emacs repository.

Thanks.



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

* Re: Android port
  2023-08-05 12:42                             ` Eli Zaretskii
@ 2023-08-05 12:47                               ` Bruno Haible
  2023-08-05 13:00                                 ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-05 12:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: angelo.g0, luangruo, eggert, emacs-devel

Eli Zaretskii wrote:
> >   2) after this #include, add
> >      #define asprintf rpl_asprintf
> >      #define printf __printf__
> >      #define vasprintf rpl_vasprintf
> >      #define vfprintf rpl_vfprintf
> >      and add prototypes for these 4 functions.
> 
> I'd prefer to use the simpler machinery of OMIT_GNULIB_MODULE to
> prevent the Emacs build from compiling asprintf.c and similar
> replacements on MS-Windows.  Is that possible?

Only Paul can answer this. The OMIT_GNULIB_MODULE mechanism is an Emacs
invention.

Gnulib's mechanism for avoiding modules is the --avoid=<modulename>
option to gnulib-tool. But that omits the module on *all* platforms.
Gnulib's preferred mechanism for tweaking the behaviour on a platform-
by-platform basis is to preset some gl_cv_* variables, so as to
shortcut specific configure tests.

Bruno






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

* Re: Android port
  2023-08-05 12:47                               ` Bruno Haible
@ 2023-08-05 13:00                                 ` Eli Zaretskii
  2023-08-05 13:13                                   ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05 13:00 UTC (permalink / raw)
  To: Bruno Haible; +Cc: angelo.g0, luangruo, eggert, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: angelo.g0@libero.it, luangruo@yahoo.com, eggert@cs.ucla.edu, emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 14:47:59 +0200
> 
> Eli Zaretskii wrote:
> > >   2) after this #include, add
> > >      #define asprintf rpl_asprintf
> > >      #define printf __printf__
> > >      #define vasprintf rpl_vasprintf
> > >      #define vfprintf rpl_vfprintf
> > >      and add prototypes for these 4 functions.
> > 
> > I'd prefer to use the simpler machinery of OMIT_GNULIB_MODULE to
> > prevent the Emacs build from compiling asprintf.c and similar
> > replacements on MS-Windows.  Is that possible?
> 
> Only Paul can answer this. The OMIT_GNULIB_MODULE mechanism is an Emacs
> invention.

Then I hope Paul chimes in soon.

> Gnulib's mechanism for avoiding modules is the --avoid=<modulename>
> option to gnulib-tool. But that omits the module on *all* platforms.
> Gnulib's preferred mechanism for tweaking the behaviour on a platform-
> by-platform basis is to preset some gl_cv_* variables, so as to
> shortcut specific configure tests.

I prefer not to preset gl_cv_* variables in this case, since they are
general enough tests of specific printf features, and if those
features will ever be really needed in Emacs, we want to be alerted to
that.  We only preset such variables when the corresponding features
are implemented in Emacs's own code (about which the configure script
cannot know), or when it is clear that the features will never be
useful in Emacs on Windows.



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

* Re: Android port
  2023-08-05 13:00                                 ` Eli Zaretskii
@ 2023-08-05 13:13                                   ` Po Lu
  2023-08-05 15:26                                     ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05 13:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Bruno Haible, angelo.g0, eggert, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> I prefer not to preset gl_cv_* variables in this case, since they are
> general enough tests of specific printf features, and if those
> features will ever be really needed in Emacs, we want to be alerted to
> that.

I don't follow this: even if these tests are left intact, how will they
serve to warn us of new dependencies introduced in Emacs?  The results
of the configure tests are irrespective of Emacs source code.



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

* Re: Android port
  2023-08-05 13:13                                   ` Po Lu
@ 2023-08-05 15:26                                     ` Eli Zaretskii
  2023-08-05 15:35                                       ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05 15:26 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, angelo.g0, eggert, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Bruno Haible <bruno@clisp.org>,  angelo.g0@libero.it,
>   eggert@cs.ucla.edu,  emacs-devel@gnu.org
> Date: Sat, 05 Aug 2023 21:13:25 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > I prefer not to preset gl_cv_* variables in this case, since they are
> > general enough tests of specific printf features, and if those
> > features will ever be really needed in Emacs, we want to be alerted to
> > that.
> 
> I don't follow this: even if these tests are left intact, how will they
> serve to warn us of new dependencies introduced in Emacs?  The results
> of the configure tests are irrespective of Emacs source code.

The results of those tests are logged in config.log.  When we preset
the variables, the tests are not performed and the results are not
recorded anywhere; you just see something like "(cached) yes".



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

* Re: Android port
  2023-08-05 15:26                                     ` Eli Zaretskii
@ 2023-08-05 15:35                                       ` Eli Zaretskii
  2023-08-05 23:37                                         ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-05 15:35 UTC (permalink / raw)
  To: luangruo; +Cc: bruno, angelo.g0, eggert, emacs-devel

> Date: Sat, 05 Aug 2023 18:26:22 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: bruno@clisp.org, angelo.g0@libero.it, eggert@cs.ucla.edu,
>  emacs-devel@gnu.org
> 
> > I don't follow this: even if these tests are left intact, how will they
> > serve to warn us of new dependencies introduced in Emacs?  The results
> > of the configure tests are irrespective of Emacs source code.
> 
> The results of those tests are logged in config.log.  When we preset
> the variables, the tests are not performed and the results are not
> recorded anywhere; you just see something like "(cached) yes".

And in addition, other tests for other Gnulib modules might depend on
the results of these tests.



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

* Re: Android port
  2023-08-05 15:35                                       ` Eli Zaretskii
@ 2023-08-05 23:37                                         ` Po Lu
  2023-08-06  5:00                                           ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-05 23:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bruno, angelo.g0, eggert, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> And in addition, other tests for other Gnulib modules might depend on
> the results of these tests.

If so, those Gnulib modules will also depend on the *-printf modules, by
all likelihood.  Our attention will be brought to the problem regardless
of how we chose to disable those modules.



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

* Re: Android port
  2023-08-05 23:37                                         ` Po Lu
@ 2023-08-06  5:00                                           ` Eli Zaretskii
  2023-08-06  5:07                                             ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06  5:00 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, angelo.g0, eggert, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: bruno@clisp.org,  angelo.g0@libero.it,  eggert@cs.ucla.edu,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 07:37:40 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > And in addition, other tests for other Gnulib modules might depend on
> > the results of these tests.
> 
> If so, those Gnulib modules will also depend on the *-printf modules, by
> all likelihood.  Our attention will be brought to the problem regardless
> of how we chose to disable those modules.

It will be harder to figure out, at least.

Look, I'm the only person around here who had ever seriously worked
with these facilities, so please believe me when I say that some ways
are better than others, okay?



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

* Re: Android port
  2023-08-06  5:00                                           ` Eli Zaretskii
@ 2023-08-06  5:07                                             ` Po Lu
  2023-08-06  5:24                                               ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06  5:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bruno, angelo.g0, eggert, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Look, I'm the only person around here who had ever seriously worked
> with these facilities, so please believe me when I say that some ways
> are better than others, okay?

OK, but the Gnulib developers aren't inclined to introduce any changes
for us here.  So we've got to work with what we have, following practice
that already exists within mingw-cfg.site:

# We don't need fdopendir
ac_cv_func_fdopendir="not-needed"
gl_cv_func_fdopendir_works="no-but-not-needed-so-yes"

# Avoid gnulib replacement
gl_threads_api=posix
gl_cv_func_pthread_sigmask_return_works=yes
gl_cv_func_pthread_sigmask_unblock_works="not relevant"
gl_cv_func_pthread_sigmask_macro=no



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

* Re: Android port
  2023-08-06  5:07                                             ` Po Lu
@ 2023-08-06  5:24                                               ` Eli Zaretskii
  2023-08-06  8:48                                                 ` Paul Eggert
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06  5:24 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, angelo.g0, eggert, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: bruno@clisp.org,  angelo.g0@libero.it,  eggert@cs.ucla.edu,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 13:07:19 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Look, I'm the only person around here who had ever seriously worked
> > with these facilities, so please believe me when I say that some ways
> > are better than others, okay?
> 
> OK, but the Gnulib developers aren't inclined to introduce any changes
> for us here.

Paul didn't chime in yet, so I'd like to wait for him to comment on
this.  I see no reason why we would be unable to omit these modules
like we do with others.

> So we've got to work with what we have, following practice
> that already exists within mingw-cfg.site:
> 
> # We don't need fdopendir
> ac_cv_func_fdopendir="not-needed"
> gl_cv_func_fdopendir_works="no-but-not-needed-so-yes"
> 
> # Avoid gnulib replacement
> gl_threads_api=posix
> gl_cv_func_pthread_sigmask_return_works=yes
> gl_cv_func_pthread_sigmask_unblock_works="not relevant"
> gl_cv_func_pthread_sigmask_macro=no

There are good reasons for those (and others like them).  fdopendir is
not a feature, it's an API that cannot work on Windows.  And the
pthreads stuff causes Emacs to depend on the pthreads DLL (which is
bad for distributing the binaries), and also replaces some
time-related structure definitions ('struct timespec', I think) with
pthread ones -- and these cannot be undone by omitting some Gnulib
modules.

Like I said: this stuff is done for very good reasons, and only after
careful consideration of the alternatives.  It worked for the last 10
years with almost no changes.



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

* Re: Android port
  2023-08-06  5:24                                               ` Eli Zaretskii
@ 2023-08-06  8:48                                                 ` Paul Eggert
  2023-08-06  8:58                                                   ` Eli Zaretskii
                                                                     ` (2 more replies)
  0 siblings, 3 replies; 205+ messages in thread
From: Paul Eggert @ 2023-08-06  8:48 UTC (permalink / raw)
  To: Eli Zaretskii, Po Lu; +Cc: bruno, angelo.g0, emacs-devel

On 2023-08-05 22:24, Eli Zaretskii wrote:
> Paul didn't chime in yet, so I'd like to wait for him to comment on
> this.  I see no reason why we would be unable to omit these modules
> like we do with others.

I don't either, but I hope we don't have to worry about it.

As I understand it the Android port uses Gnulib printf-posix and 
vasprintf-posix modules only because Android printf lacks support for 
"%td", "%jd" and "%ju". If this understanding is correct, how about if 
we go through the printf formats in the Emacs C source code, and replace 
all uses of "%jd" and "%ju" with "%"PRIdMAX and "%"PRIuMAX, and all uses 
of "%td" with "%"pT"d" where pT is an Emacs invention defined like this:

  #ifdef __ANDROID__
  # define pT "z"
  #else
  # define pT "t"
  #endif

That way, the Android branch wouldn't need to use the printf-posix and 
vasprintf-posix modules, and we wouldn't have to worry about the hassle 
of porting them into the Emacs world.

Admittedly this hack is not the Gnulib Way, but Emacs departs so far 
from the Gnulib Way that this one extra little thing shouldn't be that 
big of a deal.



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

* Re: Android port
  2023-08-06  8:48                                                 ` Paul Eggert
@ 2023-08-06  8:58                                                   ` Eli Zaretskii
  2023-08-06  9:24                                                   ` Po Lu
  2023-08-06 10:33                                                   ` Bruno Haible
  2 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06  8:58 UTC (permalink / raw)
  To: Paul Eggert; +Cc: luangruo, bruno, angelo.g0, emacs-devel

> Date: Sun, 6 Aug 2023 01:48:40 -0700
> Cc: bruno@clisp.org, angelo.g0@libero.it, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> 
> As I understand it the Android port uses Gnulib printf-posix and 
> vasprintf-posix modules only because Android printf lacks support for 
> "%td", "%jd" and "%ju". If this understanding is correct, how about if 
> we go through the printf formats in the Emacs C source code, and replace 
> all uses of "%jd" and "%ju" with "%"PRIdMAX and "%"PRIuMAX, and all uses 
> of "%td" with "%"pT"d" where pT is an Emacs invention defined like this:
> 
>   #ifdef __ANDROID__
>   # define pT "z"
>   #else
>   # define pT "t"
>   #endif

Fine by me, if this keeps the Android port happy.



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

* Re: Android port
  2023-08-06  8:48                                                 ` Paul Eggert
  2023-08-06  8:58                                                   ` Eli Zaretskii
@ 2023-08-06  9:24                                                   ` Po Lu
  2023-08-06  9:35                                                     ` Eli Zaretskii
  2023-08-06  9:39                                                     ` Arsen Arsenović
  2023-08-06 10:33                                                   ` Bruno Haible
  2 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-08-06  9:24 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Eli Zaretskii, bruno, angelo.g0, emacs-devel

Paul Eggert <eggert@cs.ucla.edu> writes:

> On 2023-08-05 22:24, Eli Zaretskii wrote:
>> Paul didn't chime in yet, so I'd like to wait for him to comment on
>> this.  I see no reason why we would be unable to omit these modules
>> like we do with others.
>
> I don't either, but I hope we don't have to worry about it.
>
> As I understand it the Android port uses Gnulib printf-posix and
> vasprintf-posix modules only because Android printf lacks support for
> "%td", "%jd" and "%ju". If this understanding is correct, how about if
> we go through the printf formats in the Emacs C source code, and
> replace all uses of "%jd" and "%ju" with "%"PRIdMAX and "%"PRIuMAX,
> and all uses of "%td" with "%"pT"d" where pT is an Emacs invention
> defined like this:

And also %n (used in the rest of Emacs), which aborts on Android for
``security'' reasons...



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

* Re: Android port
  2023-08-06  9:24                                                   ` Po Lu
@ 2023-08-06  9:35                                                     ` Eli Zaretskii
  2023-08-06  9:41                                                       ` Po Lu
  2023-08-06 10:41                                                       ` Bruno Haible
  2023-08-06  9:39                                                     ` Arsen Arsenović
  1 sibling, 2 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06  9:35 UTC (permalink / raw)
  To: Po Lu; +Cc: eggert, bruno, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  bruno@clisp.org,  angelo.g0@libero.it,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 17:24:47 +0800
> 
> And also %n (used in the rest of Emacs), which aborts on Android for
> ``security'' reasons...

Most of those are not relevant for Android, right?

The only one which is relevant (in emacs.c) can be rewritten not to
use %n.



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

* Re: Android port
  2023-08-06  9:24                                                   ` Po Lu
  2023-08-06  9:35                                                     ` Eli Zaretskii
@ 2023-08-06  9:39                                                     ` Arsen Arsenović
  2023-08-06  9:43                                                       ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Arsen Arsenović @ 2023-08-06  9:39 UTC (permalink / raw)
  To: Po Lu; +Cc: Paul Eggert, Eli Zaretskii, bruno, angelo.g0, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 479 bytes --]


Po Lu <luangruo@yahoo.com> writes:

> And also %n (used in the rest of Emacs), which aborts on Android for
> ``security'' reasons...

No need for the air-quotes, it is quite justified (and could probably be
backed up more empirically if someone went over something like the
Debian code-search).

In my many years of writing and reading C on all levels, I've seen %n
used outside of arbitrary memory write exploits at most a handful of
times.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

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

* Re: Android port
  2023-08-06  9:35                                                     ` Eli Zaretskii
@ 2023-08-06  9:41                                                       ` Po Lu
  2023-08-06  9:44                                                         ` Eli Zaretskii
  2023-08-06 10:41                                                       ` Bruno Haible
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06  9:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, bruno, angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Most of those are not relevant for Android, right?

We only have one use of %n, in emacs.c AFAICT.

> The only one which is relevant (in emacs.c) can be rewritten not to
> use %n.

Indeed, but the Proper Way is to use Gnulib.  I'd prefer we tried to
make it work.



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

* Re: Android port
  2023-08-06  9:39                                                     ` Arsen Arsenović
@ 2023-08-06  9:43                                                       ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06  9:43 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: luangruo, eggert, bruno, angelo.g0, emacs-devel

> From: Arsen Arsenović <arsen@aarsen.me>
> Cc: Paul Eggert <eggert@cs.ucla.edu>, Eli Zaretskii <eliz@gnu.org>,
>  bruno@clisp.org, angelo.g0@libero.it, emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 11:39:16 +0200
> 
> Po Lu <luangruo@yahoo.com> writes:
> 
> > And also %n (used in the rest of Emacs), which aborts on Android for
> > ``security'' reasons...
> 
> No need for the air-quotes, it is quite justified (and could probably be
> backed up more empirically if someone went over something like the
> Debian code-search).
> 
> In my many years of writing and reading C on all levels, I've seen %n
> used outside of arbitrary memory write exploits at most a handful of
> times.

Thank you for your input, but please keep irrelevant tangents out of
this discussion.  We want to merge the Android branch as soon as
possible, and converting this into yet another futile dispute about
security will get in the way of finding the best solutions.



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

* Re: Android port
  2023-08-06  9:41                                                       ` Po Lu
@ 2023-08-06  9:44                                                         ` Eli Zaretskii
  2023-08-06  9:54                                                           ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06  9:44 UTC (permalink / raw)
  To: Po Lu; +Cc: eggert, bruno, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: eggert@cs.ucla.edu,  bruno@clisp.org,  angelo.g0@libero.it,
>  emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 17:41:10 +0800
> 
> > The only one which is relevant (in emacs.c) can be rewritten not to
> > use %n.
> 
> Indeed, but the Proper Way is to use Gnulib.  I'd prefer we tried to
> make it work.

If you can figure out why omitting those modules doesn't work, maybe
we could go that way as well.



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

* Re: Android port
  2023-08-06  9:44                                                         ` Eli Zaretskii
@ 2023-08-06  9:54                                                           ` Po Lu
  2023-08-06 10:00                                                             ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06  9:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, bruno, angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Po Lu <luangruo@yahoo.com>
>> Cc: eggert@cs.ucla.edu,  bruno@clisp.org,  angelo.g0@libero.it,
>>  emacs-devel@gnu.org
>> Date: Sun, 06 Aug 2023 17:41:10 +0800
>> 
>> > The only one which is relevant (in emacs.c) can be rewritten not to
>> > use %n.
>> 
>> Indeed, but the Proper Way is to use Gnulib.  I'd prefer we tried to
>> make it work.
>
> If you can figure out why omitting those modules doesn't work, maybe
> we could go that way as well.

I thought I did.  Paul, the issue lies in how AC_LIBOBJ is used to
include the files comprising the *printf modules.  The
OMIT_GNULIB_MODULE_xxx stuff cannot function unless gnulib.mk does so
instead.



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

* Re: Android port
  2023-08-06  9:54                                                           ` Po Lu
@ 2023-08-06 10:00                                                             ` Eli Zaretskii
  2023-08-06 10:10                                                               ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 10:00 UTC (permalink / raw)
  To: Po Lu; +Cc: eggert, bruno, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: eggert@cs.ucla.edu,  bruno@clisp.org,  angelo.g0@libero.it,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 17:54:50 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > If you can figure out why omitting those modules doesn't work, maybe
> > we could go that way as well.
> 
> I thought I did.

You said that those files are included in the list of object files to
build if Gnulib configury detects that asprintf is missing, right?

Then I don't think I understand this, since (a) MinGW64 which Angelo
uses does have asprintf, and (b) we could use the configure variable
that records the existence of asprintf to override that, like we do
with other ac_cv_func_* variables.  But for some reason you didn't use
that variable (or any similar one) in your proposed patch, why?

So to me this issue is still not clear enough.



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

* Re: Android port
  2023-08-06 10:00                                                             ` Eli Zaretskii
@ 2023-08-06 10:10                                                               ` Po Lu
  2023-08-06 10:40                                                                 ` Eli Zaretskii
  2023-08-06 13:05                                                                 ` Eli Zaretskii
  0 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-08-06 10:10 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: eggert, bruno, angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Then I don't think I understand this, since (a) MinGW64 which Angelo
> uses does have asprintf, and (b) we could use the configure variable
> that records the existence of asprintf to override that, like we do
> with other ac_cv_func_* variables.  But for some reason you didn't use
> that variable (or any similar one) in your proposed patch, why?

That's because my patch was an addendum to changes installed on the
feature/android branch months ago.  The diff between mingw-cfg.site on
the branch and on master is more illustrative:

diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index 425eaace30d..f78ee525bf1 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -173,3 +173,21 @@ gl_cv_func_nanosleep=yes
 # Suppress configure-time diagnostic from unnecessary libxattr check,
 # as xattr will not be supported here.
 enable_xattr=no
+# Don't build gnulib printf either.
+gl_cv_func_printf_sizes_c99=yes
+gl_cv_func_printf_sizes_c23=yes
+gl_cv_func_printf_long_double=yes
+gl_cv_func_printf_infinite_long_double=yes
+gl_cv_func_printf_directive_a=yes
+gl_cv_func_printf_directive_b=yes
+gl_cv_func_printf_directive_f=yes
+gl_cv_func_printf_directive_n=yes
+gl_cv_func_printf_directive_ls=yes
+gl_cv_func_printf_directive_lc=yes
+gl_cv_func_printf_positions=yes
+gl_cv_func_printf_flag_grouping=yes
+gl_cv_func_printf_flag_leftadjust=yes
+gl_cv_func_printf_flag_zero=yes
+gl_cv_func_printf_precision=yes
+gl_cv_func_printf_enomem=yes
+ac_cv_func_vasprintf=yes

Both the check for vasprintf (Gnulib eschews testing for asprintf, since
asprintf is never present where vasprintf is not) and the checks for
printf features are overridden, because Gnulib also tries to replace
vasprintf if it discovers that the conventional printf functions will
need to be replaced.



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

* Re: Android port
  2023-08-06  8:48                                                 ` Paul Eggert
  2023-08-06  8:58                                                   ` Eli Zaretskii
  2023-08-06  9:24                                                   ` Po Lu
@ 2023-08-06 10:33                                                   ` Bruno Haible
  2023-08-06 12:20                                                     ` Po Lu
  2 siblings, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 10:33 UTC (permalink / raw)
  To: Eli Zaretskii, Po Lu, Paul Eggert; +Cc: angelo.g0, emacs-devel

Paul Eggert wrote:
> As I understand it the Android port uses Gnulib printf-posix and 
> vasprintf-posix modules only because Android printf lacks support for 
> "%td", "%jd" and "%ju".

No, that's not the case. Android *printf supports the 't', 'j', 'z' already
since 2009-03-04 (ca. Android 1.6).

I don't know what's the minimum supported Android version targetted by Po Lu
is, but for Android 4.3 you find the deficiencies listed in gnulib/m4/printf.m4:

dnl . = yes, # = no.
dnl
dnl                                  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
dnl   Android 4.3                    .  #  .  #  #  #  #  #  #  #  #  ?  .  #  .  #  .  #  .  .  .  #  .  .

Legend:
dnl 2 = checking whether printf supports size specifiers as in C23...
dnl 4 = checking whether printf supports infinite 'double' arguments...
dnl 5 = checking whether printf supports infinite 'long double' arguments...
dnl 6 = checking whether printf supports the 'a' and 'A' directives...
dnl 7 = checking whether printf supports the 'b' directive...
dnl 8 = checking whether printf supports the 'B' directive...
dnl 9 = checking whether printf supports the 'F' directive...
dnl 10 = checking whether printf supports the 'n' directive...
dnl 11 = checking whether printf supports the 'ls' directive...
dnl 12 = checking whether printf supports the 'lc' directive correctly...
dnl 14 = checking whether printf supports the grouping flag...
dnl 16 = checking whether printf supports the zero flag correctly...
dnl 18 = checking whether printf survives out-of-memory conditions...
dnl 22 = checking whether snprintf fully supports the 'n' directive...

> If this understanding is correct, how about if 
> we go through the printf formats in the Emacs C source code, and replace 
> all uses of "%jd" and "%ju" with "%"PRIdMAX and "%"PRIuMAX, and all uses 
> of "%td" with "%"pT"d" where pT is an Emacs invention defined like this:
> 
>   #ifdef __ANDROID__
>   # define pT "z"
>   #else
>   # define pT "t"
>   #endif

This workaround is not needed, since the problem is not there, not for
Android and not for other platforms either: Gnulib's documentation lists
the platforms

  @item
  This function does not support size specifiers as in C99 (@code{hh}, @code{ll},
  @code{j}, @code{t}, @code{z}) on some platforms:
  AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 9, Cygwin 1.5.24, mingw, MSVC 14.

AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 9, Cygwin 1.5.24 are long obsolete,
mingw is dealt with by Emacs differently, and MSVC is not supported by
Emacs (AFAIU).

Bruno






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

* Re: Android port
  2023-08-06 10:10                                                               ` Po Lu
@ 2023-08-06 10:40                                                                 ` Eli Zaretskii
  2023-08-06 11:02                                                                   ` Bruno Haible
  2023-08-06 13:05                                                                 ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 10:40 UTC (permalink / raw)
  To: Po Lu; +Cc: eggert, bruno, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: eggert@cs.ucla.edu,  bruno@clisp.org,  angelo.g0@libero.it,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 18:10:32 +0800
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Then I don't think I understand this, since (a) MinGW64 which Angelo
> > uses does have asprintf, and (b) we could use the configure variable
> > that records the existence of asprintf to override that, like we do
> > with other ac_cv_func_* variables.  But for some reason you didn't use
> > that variable (or any similar one) in your proposed patch, why?
> 
> That's because my patch was an addendum to changes installed on the
> feature/android branch months ago.  The diff between mingw-cfg.site on
> the branch and on master is more illustrative:
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index 425eaace30d..f78ee525bf1 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -173,3 +173,21 @@ gl_cv_func_nanosleep=yes
>  # Suppress configure-time diagnostic from unnecessary libxattr check,
>  # as xattr will not be supported here.
>  enable_xattr=no
> +# Don't build gnulib printf either.
> +gl_cv_func_printf_sizes_c99=yes
> +gl_cv_func_printf_sizes_c23=yes
> +gl_cv_func_printf_long_double=yes
> +gl_cv_func_printf_infinite_long_double=yes
> +gl_cv_func_printf_directive_a=yes
> +gl_cv_func_printf_directive_b=yes
> +gl_cv_func_printf_directive_f=yes
> +gl_cv_func_printf_directive_n=yes
> +gl_cv_func_printf_directive_ls=yes
> +gl_cv_func_printf_directive_lc=yes
> +gl_cv_func_printf_positions=yes
> +gl_cv_func_printf_flag_grouping=yes
> +gl_cv_func_printf_flag_leftadjust=yes
> +gl_cv_func_printf_flag_zero=yes
> +gl_cv_func_printf_precision=yes
> +gl_cv_func_printf_enomem=yes
> +ac_cv_func_vasprintf=yes

Isn't there some "summary" variable for printf, like
gl_cv_func_printf_works or some such, which is set if all of the above
variables are set?  I'd prefer to override summary if it exists,
rather than each one of the above function-testing variables
individually.

> Both the check for vasprintf (Gnulib eschews testing for asprintf, since
> asprintf is never present where vasprintf is not) and the checks for
> printf features are overridden, because Gnulib also tries to replace
> vasprintf if it discovers that the conventional printf functions will
> need to be replaced.

Perhaps we should ask Gnulib to allow disabling these in a more
convenient manner.



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

* Re: Android port
  2023-08-06  9:35                                                     ` Eli Zaretskii
  2023-08-06  9:41                                                       ` Po Lu
@ 2023-08-06 10:41                                                       ` Bruno Haible
  2023-08-06 11:07                                                         ` Manuel Giraud via Emacs development discussions.
  2023-08-06 12:16                                                         ` Po Lu
  1 sibling, 2 replies; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 10:41 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: eggert, angelo.g0, emacs-devel

Eli Zaretskii wrote:
> > And also %n (used in the rest of Emacs), which aborts on Android for
> > ``security'' reasons...
> 
> Most of those are not relevant for Android, right?
> 
> The only one which is relevant (in emacs.c) can be rewritten not to
> use %n.

Then I would suggest to rewrite this instance without %n.

Rationale: I cannot guarantee that Gnulib will be able to support %n
in the long run. The "security-aware community" are filing CVEs here and
there; %n is among their targets (it has already been disabled from libc
on Ubuntu, macOS, and MSVC); and I don't know when they will discover
that Gnulib still enables it.

Bruno






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

* Re: Android port
  2023-08-06 10:40                                                                 ` Eli Zaretskii
@ 2023-08-06 11:02                                                                   ` Bruno Haible
  2023-08-06 11:56                                                                     ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 11:02 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: eggert, angelo.g0, emacs-devel

Eli Zaretskii wrote:
> Isn't there some "summary" variable for printf, like
> gl_cv_func_printf_works or some such, which is set if all of the above
> variables are set?  I'd prefer to override summary if it exists

No, there is no such "summary" variable. And it would be overkill to
introduce one, because
  - Emacs is the only package that needs a certain Gnulib module on
    most platforms but wants to deactivate it on one particular platform.
    Other packages don't work this way.
  - The approach to set the variables individually in mingw-cfg.site
    is good enough. It occasionally needs updates, every N years or so,
    when some variable is added. But that's not a good enough justification
    for adding complexity to Gnulib.

Also, a "summary" variable would not fulfil the goal that you set out
yourself yesterday:
  "I prefer not to preset gl_cv_* variables in this case, since they are
   general enough tests of specific printf features, and if those
   features will ever be really needed in Emacs, we want to be alerted to
   that."

I perfectly understand this argument, that you want to be aware if the
mingw-cfg.site file for example pretends that Emacs does not need %b support,
in order to check the format strings to see whether that's indeed the case.
The individual gl_cv_* variables are the right instrument to achieve this
process.

Bruno






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

* Re: Android port
  2023-08-06 10:41                                                       ` Bruno Haible
@ 2023-08-06 11:07                                                         ` Manuel Giraud via Emacs development discussions.
  2023-08-06 11:39                                                           ` Eli Zaretskii
  2023-08-06 12:47                                                           ` Po Lu
  2023-08-06 12:16                                                         ` Po Lu
  1 sibling, 2 replies; 205+ messages in thread
From: Manuel Giraud via Emacs development discussions. @ 2023-08-06 11:07 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Po Lu, Eli Zaretskii, eggert, angelo.g0, emacs-devel

Bruno Haible <bruno@clisp.org> writes:

> Eli Zaretskii wrote:
>> > And also %n (used in the rest of Emacs), which aborts on Android for
>> > ``security'' reasons...
>> 
>> Most of those are not relevant for Android, right?
>> 
>> The only one which is relevant (in emacs.c) can be rewritten not to
>> use %n.
>
> Then I would suggest to rewrite this instance without %n.

There is a patch for this already in the OpenBSD ports tree:
https://cvsweb.openbsd.org/ports/editors/emacs/patches/patch-src_emacs_c?rev=1.5&content-type=text/x-cvsweb-markup
-- 
Manuel Giraud



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

* Re: Android port
  2023-08-06 11:07                                                         ` Manuel Giraud via Emacs development discussions.
@ 2023-08-06 11:39                                                           ` Eli Zaretskii
  2023-08-06 12:47                                                           ` Po Lu
  1 sibling, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 11:39 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: bruno, luangruo, eggert, angelo.g0, emacs-devel

> From: Manuel Giraud <manuel@ledu-giraud.fr>
> Cc: Po Lu <luangruo@yahoo.com>,  Eli Zaretskii <eliz@gnu.org>,
>   eggert@cs.ucla.edu,  angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 13:07:11 +0200
> 
> Bruno Haible <bruno@clisp.org> writes:
> 
> > Eli Zaretskii wrote:
> >> > And also %n (used in the rest of Emacs), which aborts on Android for
> >> > ``security'' reasons...
> >> 
> >> Most of those are not relevant for Android, right?
> >> 
> >> The only one which is relevant (in emacs.c) can be rewritten not to
> >> use %n.
> >
> > Then I would suggest to rewrite this instance without %n.
> 
> There is a patch for this already in the OpenBSD ports tree:
> https://cvsweb.openbsd.org/ports/editors/emacs/patches/patch-src_emacs_c?rev=1.5&content-type=text/x-cvsweb-markup

Thanks, but unless they contribute the code to us, pointing to that
code here is actually discouraged: it makes harder for people to write
an independent implementation that cannot be possibly taken as a copy
of theirs.

Rewriting this without %n is basically trivial.



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

* Re: Android port
  2023-08-06 11:02                                                                   ` Bruno Haible
@ 2023-08-06 11:56                                                                     ` Eli Zaretskii
  2023-08-06 12:30                                                                       ` Po Lu
  2023-08-06 14:40                                                                       ` Bruno Haible
  0 siblings, 2 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 11:56 UTC (permalink / raw)
  To: Bruno Haible; +Cc: luangruo, eggert, angelo.g0, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 13:02:45 +0200
> 
> Eli Zaretskii wrote:
> > Isn't there some "summary" variable for printf, like
> > gl_cv_func_printf_works or some such, which is set if all of the above
> > variables are set?  I'd prefer to override summary if it exists
> 
> No, there is no such "summary" variable. And it would be overkill to
> introduce one, because
>   - Emacs is the only package that needs a certain Gnulib module on
>     most platforms but wants to deactivate it on one particular platform.
>     Other packages don't work this way.
>   - The approach to set the variables individually in mingw-cfg.site
>     is good enough. It occasionally needs updates, every N years or so,
>     when some variable is added. But that's not a good enough justification
>     for adding complexity to Gnulib.

The decision whether Emacs's needs justify some additional complexity
in Gnulib is yours, of course (although I'd argue that Emacs is not
just any package), but please don't decide for the Emacs maintainers
whether this or that alternative is "good enough" for Emacs.  If we
reach out to Gnulib developers asking them for help in this matter, we
do that in good faith, and _after_ we considered the alternatives
which don't involve Gnulib changes (which are always preferable, for
obvious reasons).

> Also, a "summary" variable would not fulfil the goal that you set out
> yourself yesterday:
>   "I prefer not to preset gl_cv_* variables in this case, since they are
>    general enough tests of specific printf features, and if those
>    features will ever be really needed in Emacs, we want to be alerted to
>    that."
> 
> I perfectly understand this argument, that you want to be aware if the
> mingw-cfg.site file for example pretends that Emacs does not need %b support,
> in order to check the format strings to see whether that's indeed the case.
> The individual gl_cv_* variables are the right instrument to achieve this
> process.

Unless there's a misunderstanding, your understanding contradicts what
I wanted to convey in the quoited text.  The individual gl_cv_*
variables, if overridden by mingw-cfg.site, will completely shadow the
feature tests and will from that moment on make detecting any new
needs for that and dealing with those new needs our responsibility,
with nothing to aid us.  Which in practice means we could have a
broken port on Windows if some other functionality, which _is_ needed
on Windows, will become dependent on a test that we've overridden via
these variables.

Which is why I prefer to disable a module or a function replacement
without overriding the individual functionality tests which led to the
inclusion of the module and/or replacement of a function.  Disabling
the module or a function replacement just says that this
module/function is not needed or is implemented differently, without
saying anything about the respective functionalities.

Disabling functionality tests is only TRT when they are implemented in
Emacs's own code (and thus the configure script cannot possibly know
about them).  And even then we try to minimize the list of disabled
functionalities by telling the configure script as much as we can;
that is the reason why the configure script does this:

      *-mingw* )
                opsys=mingw32
                # MinGW overrides and adds some system headers in nt/inc.
                GCC_TEST_OPTIONS="-I $srcdir/nt/inc"



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

* Re: Android port
  2023-08-06 10:41                                                       ` Bruno Haible
  2023-08-06 11:07                                                         ` Manuel Giraud via Emacs development discussions.
@ 2023-08-06 12:16                                                         ` Po Lu
  2023-08-06 12:23                                                           ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06 12:16 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Eli Zaretskii, eggert, angelo.g0, emacs-devel

Bruno Haible <bruno@clisp.org> writes:

> Rationale: I cannot guarantee that Gnulib will be able to support %n
> in the long run. The "security-aware community" are filing CVEs here and
> there; %n is among their targets (it has already been disabled from libc
> on Ubuntu, macOS, and MSVC); and I don't know when they will discover
> that Gnulib still enables it.

Then Gnulib should disregard their whims and move on.  If a program
employs %n incorrectly, and that exposes a security vulnerability as a
result, the fault lies with the authors of said program rather than
Gnulib.



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

* Re: Android port
  2023-08-06 10:33                                                   ` Bruno Haible
@ 2023-08-06 12:20                                                     ` Po Lu
  2023-08-06 12:26                                                       ` Eli Zaretskii
  2023-08-06 17:44                                                       ` Paul Eggert
  0 siblings, 2 replies; 205+ messages in thread
From: Po Lu @ 2023-08-06 12:20 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Eli Zaretskii, Paul Eggert, angelo.g0, emacs-devel

Bruno Haible <bruno@clisp.org> writes:

> Paul Eggert wrote:
>> As I understand it the Android port uses Gnulib printf-posix and 
>> vasprintf-posix modules only because Android printf lacks support for 
>> "%td", "%jd" and "%ju".
>
> No, that's not the case. Android *printf supports the 't', 'j', 'z' already
> since 2009-03-04 (ca. Android 1.6).
>
> I don't know what's the minimum supported Android version targetted by Po Lu

Android 2.2.

That being said, I'm reluctant to remove the printf-posix module at this
stage of the port's development.  Emacs has undergone extensive testing
on all supported versions of Android with the Gnulib printf, and hardly
any at all without.



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

* Re: Android port
  2023-08-06 12:16                                                         ` Po Lu
@ 2023-08-06 12:23                                                           ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 12:23 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, eggert, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  eggert@cs.ucla.edu,  angelo.g0@libero.it,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 20:16:14 +0800
> 
> Bruno Haible <bruno@clisp.org> writes:
> 
> > Rationale: I cannot guarantee that Gnulib will be able to support %n
> > in the long run. The "security-aware community" are filing CVEs here and
> > there; %n is among their targets (it has already been disabled from libc
> > on Ubuntu, macOS, and MSVC); and I don't know when they will discover
> > that Gnulib still enables it.
> 
> Then Gnulib should disregard their whims and move on.

I think what Bruno tells us is that removing %n where it is not
strictly needed is a good way of eliminating the cause for both
problems.  We may not agree with CVEs against %n, but we won't keep %n
just because we disagree, right?



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

* Re: Android port
  2023-08-06 12:20                                                     ` Po Lu
@ 2023-08-06 12:26                                                       ` Eli Zaretskii
  2023-08-06 12:33                                                         ` Po Lu
  2023-08-06 12:43                                                         ` Bruno Haible
  2023-08-06 17:44                                                       ` Paul Eggert
  1 sibling, 2 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 12:26 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, eggert, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  Paul Eggert <eggert@cs.ucla.edu>,
>  angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 20:20:20 +0800
> 
> That being said, I'm reluctant to remove the printf-posix module at this
> stage of the port's development.  Emacs has undergone extensive testing
> on all supported versions of Android with the Gnulib printf, and hardly
> any at all without.

Is there a way of running specific Gnulib tests only on some
platforms (without setting the gl_cv_* variables)?



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

* Re: Android port
  2023-08-06 11:56                                                                     ` Eli Zaretskii
@ 2023-08-06 12:30                                                                       ` Po Lu
  2023-08-06 12:42                                                                         ` Eli Zaretskii
  2023-08-06 14:40                                                                       ` Bruno Haible
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06 12:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Bruno Haible, eggert, angelo.g0, emacs-devel

Everyone,

This conversation is fast on track to becoming unmanageable.  Since the
Gnulib developers believe that the solution presently in place on the
branch is acceptable, and it _does_ work to the best of our knowledge,
how about merging the branch and shelving this conjecture for the time
being?  Personally, I feel that it's unlikely that any other Gnulib
module we import will make use of the test results that are overridden,
as the printf modules are self-contained.  We can always assess the
impact of future changes to Gnulib when they are merged into Emacs.

Thanks.



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

* Re: Android port
  2023-08-06 12:26                                                       ` Eli Zaretskii
@ 2023-08-06 12:33                                                         ` Po Lu
  2023-08-06 12:43                                                         ` Bruno Haible
  1 sibling, 0 replies; 205+ messages in thread
From: Po Lu @ 2023-08-06 12:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bruno, eggert, angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Is there a way of running specific Gnulib tests only on some
> platforms (without setting the gl_cv_* variables)?

I don't think we can with this module.



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

* Re: Android port
  2023-08-06 12:30                                                                       ` Po Lu
@ 2023-08-06 12:42                                                                         ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 12:42 UTC (permalink / raw)
  To: Po Lu; +Cc: bruno, eggert, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Bruno Haible <bruno@clisp.org>,  eggert@cs.ucla.edu,
>   angelo.g0@libero.it,  emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 20:30:51 +0800
> 
> Everyone,
> 
> This conversation is fast on track to becoming unmanageable.  Since the
> Gnulib developers believe that the solution presently in place on the
> branch is acceptable, and it _does_ work to the best of our knowledge,
> how about merging the branch and shelving this conjecture for the time
> being?  Personally, I feel that it's unlikely that any other Gnulib
> module we import will make use of the test results that are overridden,
> as the printf modules are self-contained.  We can always assess the
> impact of future changes to Gnulib when they are merged into Emacs.

I understand your POV, but I would like to give this discussion some
more time before we make the decision.  We do want to merge the
branch, but a day or two more while we discuss alternatives won't
change anything.



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

* Re: Android port
  2023-08-06 12:26                                                       ` Eli Zaretskii
  2023-08-06 12:33                                                         ` Po Lu
@ 2023-08-06 12:43                                                         ` Bruno Haible
  2023-08-06 12:51                                                           ` Po Lu
  2023-08-06 13:07                                                           ` Bruno Haible
  1 sibling, 2 replies; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 12:43 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: eggert, angelo.g0, emacs-devel

Po Lu wrote:
> > That being said, I'm reluctant to remove the printf-posix module at this
> > stage of the port's development.  Emacs has undergone extensive testing
> > on all supported versions of Android with the Gnulib printf, and hardly
> > any at all without.

In other words, you want to use the printf-posix module on Android but
not on mingw.

Eli Zaretskii wrote:
> Is there a way of running specific Gnulib tests only on some
> platforms (without setting the gl_cv_* variables)?

Your question makes me think of a way to use a module on one platform
but not on another platform. Namely, the Emacs' invocation of gnulib-tool
already contains --conditional-dependencies (see emacs/lib/gnulib.mk.in).
Combine this with the feature explained in
https://www.gnu.org/software/gnulib/manual/html_node/Extending-Gnulib.html

1) Add a file emacs/gnulib-local/modules/printf-for-emacs with the following
   contents:

=========================================================================
Description:
POSIX compatible printf() function on selected platforms.

Depends-on:
printf-posix     [case "$host_os" in mingw*) false;; *) true;; esac]
=========================================================================

   What this does is to add a module with a conditional dependency to
   'printf-posix'.

2) In the gnulib-tool invocation, add the option --local-dir=../gnulib-local
   (so that it references the emacs/gnulib-local/ directory), and add
   the module 'printf-for-emacs' to the module list.

I believe this solution will work unchanged for 10 or 20 years.

Bruno






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

* Re: Android port
  2023-08-06 11:07                                                         ` Manuel Giraud via Emacs development discussions.
  2023-08-06 11:39                                                           ` Eli Zaretskii
@ 2023-08-06 12:47                                                           ` Po Lu
  2023-08-06 16:21                                                             ` Paul Eggert
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06 12:47 UTC (permalink / raw)
  To: Manuel Giraud; +Cc: Bruno Haible, Eli Zaretskii, eggert, angelo.g0, emacs-devel

Manuel Giraud <manuel@ledu-giraud.fr> writes:

> Bruno Haible <bruno@clisp.org> writes:
>
>> Eli Zaretskii wrote:
>>> > And also %n (used in the rest of Emacs), which aborts on Android for
>>> > ``security'' reasons...
>>> 
>>> Most of those are not relevant for Android, right?
>>> 
>>> The only one which is relevant (in emacs.c) can be rewritten not to
>>> use %n.
>>
>> Then I would suggest to rewrite this instance without %n.
>
> There is a patch for this already in the OpenBSD ports tree:
> https://cvsweb.openbsd.org/ports/editors/emacs/patches/patch-src_emacs_c?rev=1.5&content-type=text/x-cvsweb-markup

Please don't post these changes here, unless their authors have agreed
(and signed the paperwork) necessary to distribute them with Emacs!

Now that we can be construed to have read them, we must go out of our
way to make our code dissimilar, should we ever want to perform the same
modification.



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

* Re: Android port
  2023-08-06 12:43                                                         ` Bruno Haible
@ 2023-08-06 12:51                                                           ` Po Lu
  2023-08-06 13:13                                                             ` Eli Zaretskii
  2023-08-06 13:07                                                           ` Bruno Haible
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06 12:51 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Eli Zaretskii, eggert, angelo.g0, emacs-devel

Bruno Haible <bruno@clisp.org> writes:

> In other words, you want to use the printf-posix module on Android but
> not on mingw.

Yes.

> Your question makes me think of a way to use a module on one platform
> but not on another platform. Namely, the Emacs' invocation of gnulib-tool
> already contains --conditional-dependencies (see emacs/lib/gnulib.mk.in).
> Combine this with the feature explained in
> https://www.gnu.org/software/gnulib/manual/html_node/Extending-Gnulib.html
>
> 1) Add a file emacs/gnulib-local/modules/printf-for-emacs with the following
>    contents:
>
> =========================================================================
> Description:
> POSIX compatible printf() function on selected platforms.
>
> Depends-on:
> printf-posix     [case "$host_os" in mingw*) false;; *) true;; esac]
> =========================================================================
>
>    What this does is to add a module with a conditional dependency to
>    'printf-posix'.
>
> 2) In the gnulib-tool invocation, add the option --local-dir=../gnulib-local
>    (so that it references the emacs/gnulib-local/ directory), and add
>    the module 'printf-for-emacs' to the module list.
>
> I believe this solution will work unchanged for 10 or 20 years.

Eli, are you OK with this solution?



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

* Re: Android port
  2023-08-06 10:10                                                               ` Po Lu
  2023-08-06 10:40                                                                 ` Eli Zaretskii
@ 2023-08-06 13:05                                                                 ` Eli Zaretskii
  2023-08-06 13:12                                                                   ` Bruno Haible
  1 sibling, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 13:05 UTC (permalink / raw)
  To: Po Lu; +Cc: eggert, bruno, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: eggert@cs.ucla.edu,  bruno@clisp.org,  angelo.g0@libero.it,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 18:10:32 +0800
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index 425eaace30d..f78ee525bf1 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -173,3 +173,21 @@ gl_cv_func_nanosleep=yes
>  # Suppress configure-time diagnostic from unnecessary libxattr check,
>  # as xattr will not be supported here.
>  enable_xattr=no
> +# Don't build gnulib printf either.
> +gl_cv_func_printf_sizes_c99=yes
> +gl_cv_func_printf_sizes_c23=yes
> +gl_cv_func_printf_long_double=yes
> +gl_cv_func_printf_infinite_long_double=yes
> +gl_cv_func_printf_directive_a=yes
> +gl_cv_func_printf_directive_b=yes
> +gl_cv_func_printf_directive_f=yes
> +gl_cv_func_printf_directive_n=yes
> +gl_cv_func_printf_directive_ls=yes
> +gl_cv_func_printf_directive_lc=yes
> +gl_cv_func_printf_positions=yes
> +gl_cv_func_printf_flag_grouping=yes
> +gl_cv_func_printf_flag_leftadjust=yes
> +gl_cv_func_printf_flag_zero=yes
> +gl_cv_func_printf_precision=yes
> +gl_cv_func_printf_enomem=yes
> +ac_cv_func_vasprintf=yes
> 
> Both the check for vasprintf (Gnulib eschews testing for asprintf, since
> asprintf is never present where vasprintf is not) and the checks for
> printf features are overridden, because Gnulib also tries to replace
> vasprintf if it discovers that the conventional printf functions will
> need to be replaced.

According to my reading of vasprintf.m4, if ac_cv_func_vasprintf=yes,
the rest of the tests, including adding asprintf to LIBOBJ, should not
have happened:

  AC_DEFUN([gl_FUNC_VASPRINTF],
  [
    AC_CHECK_FUNCS([vasprintf])
    if test $ac_cv_func_vasprintf = no; then  <<<<<<<<<<<<<<<<<<
      gl_REPLACE_VASPRINTF
    fi
  ])

Or, if we are using vasprintf-posix.m4 (are we?), then
gl_cv_func_vasprintf_posix should have done that:

  AC_DEFUN([gl_FUNC_VASPRINTF_POSIX],
  [
    AC_REQUIRE([gl_FUNC_VASPRINTF_IS_POSIX])
    if test $gl_cv_func_vasprintf_posix = no; then <<<<<<<<<<<<<<<<<<<
      gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
      gl_REPLACE_VASNPRINTF
      gl_REPLACE_VASPRINTF
    fi
  ])

I see that gl_cv_func_vasprintf_posix is not in your patch to
mingw-cfg.site, so maybe adding that is all that's needed to avoid
overriding all the other gl_cv_func_printf_* variables?



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

* Re: Android port
  2023-08-06 12:43                                                         ` Bruno Haible
  2023-08-06 12:51                                                           ` Po Lu
@ 2023-08-06 13:07                                                           ` Bruno Haible
  2023-08-06 18:10                                                             ` Paul Eggert
  1 sibling, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 13:07 UTC (permalink / raw)
  To: eggert; +Cc: Po Lu, Eli Zaretskii, angelo.g0, emacs-devel

I wrote:
> already contains --conditional-dependencies (see emacs/lib/gnulib.mk.in).
> Combine this with the feature explained in
> https://www.gnu.org/software/gnulib/manual/html_node/Extending-Gnulib.html

PS: The differences between this approach and the OMIT_GNULIB_MODULE_*
approach (as far as I understand it) are:

* This approach uses only documented Gnulib features.
  Whereas the OMIT_GNULIB_MODULE_* approach hacks generated files and
  is thus more fragile.

* This approach has an effect on both the set of .m4 code executed by
  configure _and_ the generated Makefiles.
  Whereas the OMIT_GNULIB_MODULE_* approach does not change what happens
  at configure time, it only modifies the generated Makefiles.

Paul, please correct me if that is not correct?

Bruno






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

* Re: Android port
  2023-08-06 13:05                                                                 ` Eli Zaretskii
@ 2023-08-06 13:12                                                                   ` Bruno Haible
  2023-08-06 13:18                                                                     ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 13:12 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: eggert, angelo.g0, emacs-devel

Eli Zaretskii wrote:
> According to my reading of vasprintf.m4, if ac_cv_func_vasprintf=yes,
> the rest of the tests, including adding asprintf to LIBOBJ, should not
> have happened:
> 
>   AC_DEFUN([gl_FUNC_VASPRINTF],
>   [
>     AC_CHECK_FUNCS([vasprintf])
>     if test $ac_cv_func_vasprintf = no; then  <<<<<<<<<<<<<<<<<<
>       gl_REPLACE_VASPRINTF
>     fi
>   ])

There are invocations of gl_REPLACE_VASPRINTF from other places as well.
This is why we couldn't turn the AC_LIBOBJ invocation into a lib_SOURCES
augmentation in the module description. (It would yield duplicate symbols
at link time, in some circumstances.)

Bruno






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

* Re: Android port
  2023-08-06 12:51                                                           ` Po Lu
@ 2023-08-06 13:13                                                             ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 13:13 UTC (permalink / raw)
  To: Po Lu, eggert; +Cc: bruno, angelo.g0, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Eli Zaretskii <eliz@gnu.org>,  eggert@cs.ucla.edu,  angelo.g0@libero.it,
>   emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 20:51:40 +0800
> 
> Bruno Haible <bruno@clisp.org> writes:
> 
> > 1) Add a file emacs/gnulib-local/modules/printf-for-emacs with the following
> >    contents:
> >
> > =========================================================================
> > Description:
> > POSIX compatible printf() function on selected platforms.
> >
> > Depends-on:
> > printf-posix     [case "$host_os" in mingw*) false;; *) true;; esac]
> > =========================================================================
> >
> >    What this does is to add a module with a conditional dependency to
> >    'printf-posix'.
> >
> > 2) In the gnulib-tool invocation, add the option --local-dir=../gnulib-local
> >    (so that it references the emacs/gnulib-local/ directory), and add
> >    the module 'printf-for-emacs' to the module list.
> >
> > I believe this solution will work unchanged for 10 or 20 years.
> 
> Eli, are you OK with this solution?

Yes (assuming it works: that remains to be seen).  But: (a) I'd like
to hear Paul's opinion on this solution, since he is the one who
routinely imports Gnulib into Emacs; and (b) I'd like to see if
setting gl_cv_func_vasprintf_posix=yes in mingw-cfg.site (in addition
to ac_cv_func_vasprintf, if needed) will disable the compilation of
the *printf modules and solve the problem in a way that is simple and
doesn't require introduction of any new infrastructure into Emacs.



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

* Re: Android port
  2023-08-06 13:12                                                                   ` Bruno Haible
@ 2023-08-06 13:18                                                                     ` Eli Zaretskii
  2023-08-06 13:41                                                                       ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 13:18 UTC (permalink / raw)
  To: Bruno Haible; +Cc: luangruo, eggert, angelo.g0, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 15:12:21 +0200
> 
> Eli Zaretskii wrote:
> > According to my reading of vasprintf.m4, if ac_cv_func_vasprintf=yes,
> > the rest of the tests, including adding asprintf to LIBOBJ, should not
> > have happened:
> > 
> >   AC_DEFUN([gl_FUNC_VASPRINTF],
> >   [
> >     AC_CHECK_FUNCS([vasprintf])
> >     if test $ac_cv_func_vasprintf = no; then  <<<<<<<<<<<<<<<<<<
> >       gl_REPLACE_VASPRINTF
> >     fi
> >   ])
> 
> There are invocations of gl_REPLACE_VASPRINTF from other places as well.

Only 2 more, AFAICT, and we only care about those whose modules we
import.



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

* Re: Android port
  2023-08-06 13:18                                                                     ` Eli Zaretskii
@ 2023-08-06 13:41                                                                       ` Po Lu
  2023-08-06 15:09                                                                         ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06 13:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Bruno Haible, eggert, angelo.g0, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Bruno Haible <bruno@clisp.org>
>> Cc: eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org
>> Date: Sun, 06 Aug 2023 15:12:21 +0200
>> 
>> Eli Zaretskii wrote:
>> > According to my reading of vasprintf.m4, if ac_cv_func_vasprintf=yes,
>> > the rest of the tests, including adding asprintf to LIBOBJ, should not
>> > have happened:
>> > 
>> >   AC_DEFUN([gl_FUNC_VASPRINTF],
>> >   [
>> >     AC_CHECK_FUNCS([vasprintf])
>> >     if test $ac_cv_func_vasprintf = no; then  <<<<<<<<<<<<<<<<<<
>> >       gl_REPLACE_VASPRINTF
>> >     fi
>> >   ])
>> 
>> There are invocations of gl_REPLACE_VASPRINTF from other places as well.
>
> Only 2 more, AFAICT, and we only care about those whose modules we
> import.

Hmm, yes.  Angelo, would you give this a spin and ack?

diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index f78ee525bf1..b6c7639362e 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -174,20 +174,5 @@ gl_cv_func_nanosleep=yes
 # as xattr will not be supported here.
 enable_xattr=no
 # Don't build gnulib printf either.
-gl_cv_func_printf_sizes_c99=yes
-gl_cv_func_printf_sizes_c23=yes
-gl_cv_func_printf_long_double=yes
-gl_cv_func_printf_infinite_long_double=yes
-gl_cv_func_printf_directive_a=yes
-gl_cv_func_printf_directive_b=yes
-gl_cv_func_printf_directive_f=yes
-gl_cv_func_printf_directive_n=yes
-gl_cv_func_printf_directive_ls=yes
-gl_cv_func_printf_directive_lc=yes
-gl_cv_func_printf_positions=yes
-gl_cv_func_printf_flag_grouping=yes
-gl_cv_func_printf_flag_leftadjust=yes
-gl_cv_func_printf_flag_zero=yes
-gl_cv_func_printf_precision=yes
-gl_cv_func_printf_enomem=yes
 ac_cv_func_vasprintf=yes
+gl_cv_func_vasprintf_posix=yes



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

* Re: Android port
  2023-08-06 11:56                                                                     ` Eli Zaretskii
  2023-08-06 12:30                                                                       ` Po Lu
@ 2023-08-06 14:40                                                                       ` Bruno Haible
  2023-08-06 15:09                                                                         ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 14:40 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, eggert, angelo.g0, emacs-devel

Eli Zaretskii wrote:
> Unless there's a misunderstanding, your understanding contradicts what
> I wanted to convey in the quoited text.

It's possible that I had misunderstood you. In fact, I don't fully
understand your argument even now:

> The individual gl_cv_*
> variables, if overridden by mingw-cfg.site, will completely shadow the
> feature tests and will from that moment on make detecting any new
> needs for that and dealing with those new needs our responsibility,
> with nothing to aid us.  Which in practice means we could have a
> broken port on Windows if some other functionality, which _is_ needed
> on Windows, will become dependent on a test that we've overridden via
> these variables.
> 
> Which is why I prefer to disable a module or a function replacement
> without overriding the individual functionality tests which led to the
> inclusion of the module and/or replacement of a function.  Disabling
> the module or a function replacement just says that this
> module/function is not needed or is implemented differently, without
> saying anything about the respective functionalities.

I'd like to view this question from the process point-of-view:

If some new functionality test is introduced in gnulib/m4/printf.m4,
be it
  (a) because a bug has been discovered on a non-mingw platform
      (such as recently the %lc bug), or
  (b) because a bug has been discovered on mingw, or
  (c) because a new ISO C or POSIX standard requires new functionalities
      (such as recently the support of %b),
what do you expect to see and do in Emacs?

In all three cases, we update the Gnulib documentation, but don't put
an entry into gnulib/NEWS.

Will you typically want to
  - review all format strings in Emacs, to see whether they are affected?
  - add some note to Emacs-internal coding guidelines, e.g. to the effect
    that %b should not be used?
  - review the mingw-specific *printf override, to see whether it
    needs a workaround (in case b) or an extension (in case c)?
  - or do nothing at all?

Bruno






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

* Re: Android port
  2023-08-06 14:40                                                                       ` Bruno Haible
@ 2023-08-06 15:09                                                                         ` Eli Zaretskii
  2023-08-06 15:46                                                                           ` Bruno Haible
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 15:09 UTC (permalink / raw)
  To: Bruno Haible; +Cc: luangruo, eggert, angelo.g0, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: luangruo@yahoo.com, eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 16:40:10 +0200
> 
> > The individual gl_cv_*
> > variables, if overridden by mingw-cfg.site, will completely shadow the
> > feature tests and will from that moment on make detecting any new
> > needs for that and dealing with those new needs our responsibility,
> > with nothing to aid us.  Which in practice means we could have a
> > broken port on Windows if some other functionality, which _is_ needed
> > on Windows, will become dependent on a test that we've overridden via
> > these variables.
> > 
> > Which is why I prefer to disable a module or a function replacement
> > without overriding the individual functionality tests which led to the
> > inclusion of the module and/or replacement of a function.  Disabling
> > the module or a function replacement just says that this
> > module/function is not needed or is implemented differently, without
> > saying anything about the respective functionalities.

First, the above is only about the MinGW build of Emacs.  We don't
override Gnulib tests and their results on any other platforms
supported by Emacs and by Gnulib.  The reasons for this special
treatment of Gnulib on MinGW are:

 . Emacs supports old versions of Windows while Gnulib dropped their
   support, so we cannot use Gnulib functions which will fail on those
   older Windows versions (e.g., because Gnulib assumes some API to be
   always present which is not available on old Windows versions, or
   needs to be manually loaded from some DLL);
 . Emacs supports UTF-8 encoded file names by converting them to
   UTF-16 and using "wide" APIs to access such file, something Gnulib
   doesn't support AFAIK, except when the system codepage is UTF-8;
 . Emacs sometimes have special needs which require emulation of
   certain APIs in a way that is different from what Gnulib does
   (examples: getloadavg and ACL functions)

With the above in mind:

> I'd like to view this question from the process point-of-view:
> 
> If some new functionality test is introduced in gnulib/m4/printf.m4,
> be it
>   (a) because a bug has been discovered on a non-mingw platform
>       (such as recently the %lc bug), or

Not relevant to this discussion: non-MinGW platforms will get what
Gnulib provides.

>   (b) because a bug has been discovered on mingw, or

Depends whether this bug is relevant to Emacs, and whether the
relevant Gnulib functions are already used in Emacs on Windows.  If
the latter, we will simply use the updated Gnulib function.
Otherwise, it might need changes to Emacs's own code to work around or
fix the bug.

>   (c) because a new ISO C or POSIX standard requires new functionalities
>       (such as recently the support of %b),

If this is needed in Emacs, and in code that is used in the MinGW
build, we'd need to wait until __USE_MINGW_ANSI_STDIO will support the
new functionality, or provide some workaround in Emacs's code, or
declare that the relevant feature doesn't work in the MinGW build.  A
good example of this is the time-related functions in Emacs: we don't
support time-zone specifications of the form "Asia/Seoul" because the
Windows time-zone functionality cannot grok that.

> Will you typically want to
>   - review all format strings in Emacs, to see whether they are affected?
>   - add some note to Emacs-internal coding guidelines, e.g. to the effect
>     that %b should not be used?
>   - review the mingw-specific *printf override, to see whether it
>     needs a workaround (in case b) or an extension (in case c)?
>   - or do nothing at all?

Some mix of the above, depending on the case.  But only for the MinGW
build.

Btw, the problem with printf* is exacerbated because Gnulib pulls in
the entire stdio.h when it needs to replace some printf*
functionality, and stdio is a huge header/module with some functions
that we cannot allow to override in Emacs, due to the aspects I tried
to describe above.  Fortunately, Emacs needs printf* in only a handful
of places, and for very narrow functionality.



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

* Re: Android port
  2023-08-06 13:41                                                                       ` Po Lu
@ 2023-08-06 15:09                                                                         ` Angelo Graziosi
  2023-08-06 15:35                                                                           ` Angelo Graziosi
  2023-08-06 15:39                                                                           ` Eli Zaretskii
  0 siblings, 2 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 15:09 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: Bruno Haible, eggert, emacs-devel

> Il 06/08/2023 15:41 CEST Po Lu ha scritto:
> [...]
> Hmm, yes.  Angelo, would you give this a spin and ack?
> 
> diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> index f78ee525bf1..b6c7639362e 100644
> --- a/nt/mingw-cfg.site
> +++ b/nt/mingw-cfg.site
> @@ -174,20 +174,5 @@ gl_cv_func_nanosleep=yes
>  # as xattr will not be supported here.
>  enable_xattr=no
>  # Don't build gnulib printf either.
> -gl_cv_func_printf_sizes_c99=yes
> -gl_cv_func_printf_sizes_c23=yes
> -gl_cv_func_printf_long_double=yes
> -gl_cv_func_printf_infinite_long_double=yes
> -gl_cv_func_printf_directive_a=yes
> -gl_cv_func_printf_directive_b=yes
> -gl_cv_func_printf_directive_f=yes
> -gl_cv_func_printf_directive_n=yes
> -gl_cv_func_printf_directive_ls=yes
> -gl_cv_func_printf_directive_lc=yes
> -gl_cv_func_printf_positions=yes
> -gl_cv_func_printf_flag_grouping=yes
> -gl_cv_func_printf_flag_leftadjust=yes
> -gl_cv_func_printf_flag_zero=yes
> -gl_cv_func_printf_precision=yes
> -gl_cv_func_printf_enomem=yes
>  ac_cv_func_vasprintf=yes
> +gl_cv_func_vasprintf_posix=yes

On top of previous or from scratch? I tried from scratch and it faile to apply (bfbdf4eb892935536fc665d6cc986fd669364263 is the original source):

wget https://git.savannah.gnu.org/cgit/emacs.git/snapshot/emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz

aunpack emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz

cd emacs-bfbdf4eb892935536fc665d6cc986fd669364263/

patch nt/mingw-cfg.site ../android-03.patch
patching file nt/mingw-cfg.site
Hunk #1 FAILED at 174.
1 out of 1 hunk FAILED -- saving rejects to file nt/mingw-cfg.site.rej

cat nt/mingw-cfg.site.rej
--- mingw-cfg.site
+++ mingw-cfg.site
@@ -174,20 +174,5 @@ gl_cv_func_nanosleep=yes
 # as xattr will not be supported here.
 enable_xattr=no
 # Don't build gnulib printf either.
-gl_cv_func_printf_sizes_c99=yes
-gl_cv_func_printf_sizes_c23=yes
-gl_cv_func_printf_long_double=yes
-gl_cv_func_printf_infinite_long_double=yes
-gl_cv_func_printf_directive_a=yes
-gl_cv_func_printf_directive_b=yes
-gl_cv_func_printf_directive_f=yes
-gl_cv_func_printf_directive_n=yes
-gl_cv_func_printf_directive_ls=yes
-gl_cv_func_printf_directive_lc=yes
-gl_cv_func_printf_positions=yes
-gl_cv_func_printf_flag_grouping=yes
-gl_cv_func_printf_flag_leftadjust=yes
-gl_cv_func_printf_flag_zero=yes
-gl_cv_func_printf_precision=yes
-gl_cv_func_printf_enomem=yes
 ac_cv_func_vasprintf=yes
+gl_cv_func_vasprintf_posix=yes



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

* Re: Android port
  2023-08-06 15:09                                                                         ` Angelo Graziosi
@ 2023-08-06 15:35                                                                           ` Angelo Graziosi
  2023-08-06 15:44                                                                             ` Angelo Graziosi
  2023-08-06 15:39                                                                           ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 15:35 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: Bruno Haible, eggert, emacs-devel

Ah, on top applies! Testing wait..

> Il 06/08/2023 17:09 CEST Angelo Graziosi  ha scritto:

> On top of previous or from scratch?



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

* Re: Android port
  2023-08-06 15:09                                                                         ` Angelo Graziosi
  2023-08-06 15:35                                                                           ` Angelo Graziosi
@ 2023-08-06 15:39                                                                           ` Eli Zaretskii
  2023-08-06 15:48                                                                             ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 15:39 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: luangruo, bruno, eggert, emacs-devel

> Date: Sun, 6 Aug 2023 17:09:54 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> Cc: Bruno Haible <bruno@clisp.org>, eggert@cs.ucla.edu, emacs-devel@gnu.org
> 
> > Il 06/08/2023 15:41 CEST Po Lu ha scritto:
> > [...]
> > Hmm, yes.  Angelo, would you give this a spin and ack?
> > 
> > diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
> > index f78ee525bf1..b6c7639362e 100644
> > --- a/nt/mingw-cfg.site
> > +++ b/nt/mingw-cfg.site
> > @@ -174,20 +174,5 @@ gl_cv_func_nanosleep=yes
> >  # as xattr will not be supported here.
> >  enable_xattr=no
> >  # Don't build gnulib printf either.
> > -gl_cv_func_printf_sizes_c99=yes
> > -gl_cv_func_printf_sizes_c23=yes
> > -gl_cv_func_printf_long_double=yes
> > -gl_cv_func_printf_infinite_long_double=yes
> > -gl_cv_func_printf_directive_a=yes
> > -gl_cv_func_printf_directive_b=yes
> > -gl_cv_func_printf_directive_f=yes
> > -gl_cv_func_printf_directive_n=yes
> > -gl_cv_func_printf_directive_ls=yes
> > -gl_cv_func_printf_directive_lc=yes
> > -gl_cv_func_printf_positions=yes
> > -gl_cv_func_printf_flag_grouping=yes
> > -gl_cv_func_printf_flag_leftadjust=yes
> > -gl_cv_func_printf_flag_zero=yes
> > -gl_cv_func_printf_precision=yes
> > -gl_cv_func_printf_enomem=yes
> >  ac_cv_func_vasprintf=yes
> > +gl_cv_func_vasprintf_posix=yes
> 
> On top of previous or from scratch?

On top of previous, I think.  In any case, you are supposed to be left
with just these two, under the "Don't build gnulib printf either"
comment:

  # Don't build gnulib printf either.
  ac_cv_func_vasprintf=yes
  gl_cv_func_vasprintf_posix=yes

Thanks.



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

* Re: Android port
  2023-08-06 15:35                                                                           ` Angelo Graziosi
@ 2023-08-06 15:44                                                                             ` Angelo Graziosi
  2023-08-06 17:36                                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 15:44 UTC (permalink / raw)
  To: Po Lu, Eli Zaretskii; +Cc: Bruno Haible, eggert, emacs-devel

> Il 06/08/2023 17:35 CEST Angelo Graziosi ha scritto:
> 
>  
> Ah, on top applies! Testing wait..
> 
> > Il 06/08/2023 17:09 CEST Angelo Graziosi  ha scritto:
> 
> > On top of previous or from scratch?

Ok, the three patches (up today) apply cleanly but the build fails in the same manner..

...
  CC       acl_entries.o
  CC       asnprintf.o
  CC       asprintf.o
asprintf.c:30:1: error: redefinition of 'asprintf'
   30 | asprintf (char **resultp, const char *format, ...)
      | ^~~~~~~~
In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
                 from ../src/conf_post.h:38,
                 from ../src/config.h:3511,
                 from asprintf.c:18:
C:/msys64/mingw64/include/stdio.h:276:5: note: previous definition of 'asprintf' with type 'int(char **, const char *, ...)'
  276 | int asprintf(char **__ret, const char *__format, ...)
      |     ^~~~~~~~
make[2]: *** [Makefile:102: asprintf.o] Error 1
make[2]: uscita dalla directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib»
make[1]: *** [Makefile:537: lib] Error 2
make[1]: uscita dalla directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263»
make[1]: ingresso nella directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263»
***
*** "make all" failed with exit status 2.
***
*** You could try to:
*** - run "make bootstrap", which might fix the problem
*** - run "make V=1", which displays the full commands invoked by make,
***   to further investigate the problem
***
make[1]: *** [Makefile:418: advice-on-failure] Error 2
make[1]: uscita dalla directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263»
make: *** [Makefile:374: all] Error 2



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

* Re: Android port
  2023-08-06 15:09                                                                         ` Eli Zaretskii
@ 2023-08-06 15:46                                                                           ` Bruno Haible
  2023-08-06 17:44                                                                             ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 15:46 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, eggert, angelo.g0, emacs-devel

Eli Zaretskii wrote:
> > Will you typically want to
> >   - review all format strings in Emacs, to see whether they are affected?
> >   - add some note to Emacs-internal coding guidelines, e.g. to the effect
> >     that %b should not be used?
> >   - review the mingw-specific *printf override, to see whether it
> >     needs a workaround (in case b) or an extension (in case c)?
> >   - or do nothing at all?
> 
> Some mix of the above, depending on the case.  But only for the MinGW
> build.

OK. How do you reliably get notified about the relevant changes?
If you look at gnulib/ChangeLog and search for "mingw" or "Windows"
you will spot some of the relevant changes.

For more reliability, I would save the generated config.cache from a mingw
build somewhere, and compare the config.cache of newer builds with the
saved one. If you see an added gl_cv_* variable or an existing one
whose value has changed, you can raise your eyebrows. So, it makes
sense to override only the mimimum of gl_cv_* variables.

However, this approach would still have its potential gaps:
In case
> >   (b) because a bug has been discovered on mingw

Gnulib might stuff the new configure test into an existing AC_RUN_IFELSE
invocation and thus reuse an existing gl_cv_* variable. (Not for *printf,
but for other modules.) Say, gl_cv_foobar_works meant the absence of
bugs P and Q, and now it means the absence of bugs P, Q, and R. When
the override gl_cv_foobar_works=yes was added, it meant "our nt code
has workarounds for P and Q". Thus, you won't be alerted that you need
to add a workaround for R or remove the override gl_cv_foobar_works=yes.

If you were to build the corresponding gnulib tests as part of the Emacs
build (gnulib-tool option '--with-tests'), then we would have added a unit
test against bug R, and this test would fail, thus alerting you that
you need to do something.

Note: Since the gnulib-tool invocation includes many '--avoid' options,
some test failures are to be expected, until these tests are '--avoid'ed
as well.

Bruno






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

* Re: Android port
  2023-08-06 15:39                                                                           ` Eli Zaretskii
@ 2023-08-06 15:48                                                                             ` Angelo Graziosi
  0 siblings, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 15:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, bruno, eggert, emacs-devel


> Il 06/08/2023 17:39 CEST Eli Zaretskii ha scritto:
> 
>  

> On top of previous, I think.  In any case, you are supposed to be left
> with just these two, under the "Don't build gnulib printf either"
> comment:
> 
>   # Don't build gnulib printf either.
>   ac_cv_func_vasprintf=yes
>   gl_cv_func_vasprintf_posix=yes


Yes on top and nt/mingw-cfg.site has just that but, as I wrote few minutes ago, the build fails..



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

* Re: Android port
  2023-08-06 12:47                                                           ` Po Lu
@ 2023-08-06 16:21                                                             ` Paul Eggert
  0 siblings, 0 replies; 205+ messages in thread
From: Paul Eggert @ 2023-08-06 16:21 UTC (permalink / raw)
  To: Po Lu; +Cc: Bruno Haible, Eli Zaretskii, angelo.g0, emacs-devel,
	Manuel Giraud

[-- Attachment #1: Type: text/plain, Size: 593 bytes --]

On 2023-08-06 05:47, Po Lu wrote:
> Now that we can be construed to have read them, we must go out of our
> way to make our code dissimilar, should we ever want to perform the same
> modification.

I have not read those patches. I wrote the attached patch myself and 
installed it into the master branch, so we don't need to worry about 
printf %n for Android.

Although I don't know whether the attached patch is dissimilar to the 
OpenBSD patches that I haven't read, it's surely dissimilar emough, as 
the attached patch uses sprintf (safely) and the OpenBSD folks are 
allergic to sprintf.

[-- Attachment #2: 0001-Stop-using-printf-n.patch --]
[-- Type: text/x-patch, Size: 2210 bytes --]

From 1cc20535f8730f49cd5d012313c1eaf0627d7216 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sun, 6 Aug 2023 09:08:56 -0700
Subject: [PATCH] Stop using printf %n
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* src/emacs.c (shut_down_emacs): Don’t use printf’s "%n" format.
Android, MS-Windows, and OpenBSD don’t support it, and it’s easy
enough to do its equivalent by hand.
---
 src/emacs.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/emacs.c b/src/emacs.c
index 80a013b68df..5a036554a87 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2959,24 +2959,31 @@ shut_down_emacs (int sig, Lisp_Object stuff)
       reset_all_sys_modes ();
       if (sig && sig != SIGTERM)
 	{
-	  static char const fmt[] = "Fatal error %d: %n%s\n";
 #ifdef HAVE_HAIKU
 	  if (haiku_debug_on_fatal_error)
 	    debugger ("Fatal error in Emacs");
 #endif
-	  char buf[max ((sizeof fmt - sizeof "%d%n%s\n"
+	  /* Output a "Fatal error NUM: DESC\n" diagnostic with a single write,
+	     but use multiple writes if the diagnosic is absurdly long
+	     and likely couldn't be written atomically anyway.  */
+	  static char const fmt[] = "Fatal error %d: ";
+	  char buf[max ((sizeof fmt - sizeof "%d"
 			 + INT_STRLEN_BOUND (int) + 1),
 			min (PIPE_BUF, MAX_ALLOCA))];
 	  char const *sig_desc = safe_strsignal (sig);
-	  int nlen;
-	  int buflen = snprintf (buf, sizeof buf, fmt, sig, &nlen, sig_desc);
-	  if (0 <= buflen && buflen < sizeof buf)
-	    emacs_write (STDERR_FILENO, buf, buflen);
+	  size_t sig_desclen = strlen (sig_desc);
+	  int nlen = sprintf (buf, fmt, sig);
+	  if (nlen + sig_desclen < sizeof buf - 1)
+	    {
+	      char *p = mempcpy (buf + nlen, sig_desc, sig_desclen);
+	      *p++ = '\n';
+	      emacs_write (STDERR_FILENO, buf, p - buf);
+	    }
 	  else
 	    {
 	      emacs_write (STDERR_FILENO, buf, nlen);
-	      emacs_write (STDERR_FILENO, sig_desc, strlen (sig_desc));
-	      emacs_write (STDERR_FILENO, fmt + sizeof fmt - 2, 1);
+	      emacs_write (STDERR_FILENO, sig_desc, sig_desclen);
+	      emacs_write (STDERR_FILENO, "\n", 1);
 	    }
 	}
     }
-- 
2.39.2


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

* Re: Android port
  2023-08-06 15:44                                                                             ` Angelo Graziosi
@ 2023-08-06 17:36                                                                               ` Eli Zaretskii
  2023-08-06 18:11                                                                                 ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 17:36 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: luangruo, bruno, eggert, emacs-devel

> Date: Sun, 6 Aug 2023 17:44:55 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> Cc: Bruno Haible <bruno@clisp.org>, eggert@cs.ucla.edu, emacs-devel@gnu.org
> 
> > Il 06/08/2023 17:35 CEST Angelo Graziosi ha scritto:
> > 
> >  
> > Ah, on top applies! Testing wait..
> > 
> > > Il 06/08/2023 17:09 CEST Angelo Graziosi  ha scritto:
> > 
> > > On top of previous or from scratch?
> 
> Ok, the three patches (up today) apply cleanly but the build fails in the same manner..

Are you sure you did all the steps starting from autogen.sh and
running the configure script?

If yes, it means something else causes asnprintf.o to be added to
LIBOBJ.  What does the below show in the m4 directories (I think there
are two of them on the Android branch):

  $ grep 'gl_REPLACE_VASN\?PRINTF' *.m4

Thanks.



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

* Re: Android port
  2023-08-06 15:46                                                                           ` Bruno Haible
@ 2023-08-06 17:44                                                                             ` Eli Zaretskii
  2023-08-06 18:54                                                                               ` Bruno Haible
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 17:44 UTC (permalink / raw)
  To: Bruno Haible; +Cc: luangruo, eggert, angelo.g0, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: luangruo@yahoo.com, eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 17:46:27 +0200
> 
> Eli Zaretskii wrote:
> > > Will you typically want to
> > >   - review all format strings in Emacs, to see whether they are affected?
> > >   - add some note to Emacs-internal coding guidelines, e.g. to the effect
> > >     that %b should not be used?
> > >   - review the mingw-specific *printf override, to see whether it
> > >     needs a workaround (in case b) or an extension (in case c)?
> > >   - or do nothing at all?
> > 
> > Some mix of the above, depending on the case.  But only for the MinGW
> > build.
> 
> OK. How do you reliably get notified about the relevant changes?

By watching the Gnulib updates and new Gnulib modules that get
imported and compiled into libgnu.a.

> If you look at gnulib/ChangeLog and search for "mingw" or "Windows"
> you will spot some of the relevant changes.

Thanks for the pointer.

> For more reliability, I would save the generated config.cache from a mingw
> build somewhere, and compare the config.cache of newer builds with the
> saved one.

I do that as well, when I suspect some change could cause a
difference.

> In case
> > >   (b) because a bug has been discovered on mingw
> 
> Gnulib might stuff the new configure test into an existing AC_RUN_IFELSE
> invocation and thus reuse an existing gl_cv_* variable. (Not for *printf,
> but for other modules.) Say, gl_cv_foobar_works meant the absence of
> bugs P and Q, and now it means the absence of bugs P, Q, and R. When
> the override gl_cv_foobar_works=yes was added, it meant "our nt code
> has workarounds for P and Q". Thus, you won't be alerted that you need
> to add a workaround for R or remove the override gl_cv_foobar_works=yes.

The foobar function (or its emulation) needs to do its job on
MS-Windows well enough for us to set gl_cv_foobar_works=yes.  If it
doesn't, and Gnulib discovers that first (unlikely, but possible), we
will have to pick that up in some way, either by watching Gnulib
updates, or via user complaints, or in some other way.

Luckily, this happens very rarely, IME, at least as far as things
related to Emacs on Windows are concerned.

> If you were to build the corresponding gnulib tests as part of the Emacs
> build (gnulib-tool option '--with-tests'), then we would have added a unit
> test against bug R, and this test would fail, thus alerting you that
> you need to do something.

Emacs doesn't (yet) have a facility to run Gnulib tests.



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

* Re: Android port
  2023-08-06 12:20                                                     ` Po Lu
  2023-08-06 12:26                                                       ` Eli Zaretskii
@ 2023-08-06 17:44                                                       ` Paul Eggert
  2023-08-06 17:51                                                         ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Paul Eggert @ 2023-08-06 17:44 UTC (permalink / raw)
  To: Po Lu; +Cc: Eli Zaretskii, angelo.g0, emacs-devel, Bruno Haible

[-- Attachment #1: Type: text/plain, Size: 1470 bytes --]

On 2023-08-06 05:20, Po Lu wrote:
> That being said, I'm reluctant to remove the printf-posix module at this
> stage of the port's development.  Emacs has undergone extensive testing
> on all supported versions of Android with the Gnulib printf, and hardly
> any at all without.

I understand the reluctance from the Android point of view. However, 
printf-posix imports 69 new source files to Emacs, and these files have 
not been tested extensively with Emacs on non-Android platforms. From 
the viewpoint of non-Android Emacs platforms, it's significantly less 
disruptive if merging the Android branch does not add 69 new source 
files that will require testing on these platforms.

And even from the Android viewpoint, no matter what we do to fix the 
problem some testing needs to be done anyway, as the fix is likely to 
affect Emacs in test-relevant ways.

So I propose that we merge the master branch into feature/android (to 
get the recent fix to stop using %n) and then apply the attached 
patches. The first and third patches are the actual idea. The second 
patch (compressed to save space) is automatically generated via 
admin/merge-gnulib, and consists of deleting the 69 source files.

The idea is to get feature/android merged quickly. We can revisit the 
use of Gnulib's printf-posix module later, as needed. With luck 
printf-posix won't be needed, as Emacs historically has avoided use of 
unusual printf features (for obvious portability reasons).

[-- Attachment #2: 0001-Omit-Gnulib-printf-posix-and-vasnprintf-posix.patch --]
[-- Type: text/x-patch, Size: 1159 bytes --]

From 93d3a009f7d6b5b35790c2ac5e68e66999a6e030 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sun, 6 Aug 2023 09:40:33 -0700
Subject: [PATCH 1/3] Omit Gnulib printf-posix and vasnprintf-posix

These Gnulib modules were needed only for the %n format,
and Emacs no longer uses that format.  Also, they were causing
trouble with Emacs's specialized Gnulib importation procedure.
* admin/merge-gnulib (GNULIB_MODULES): Omit printf-posix,
vasnprintf-posix.
---
 admin/merge-gnulib | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index a0dbaae1519..b533f69cceb 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -42,7 +42,7 @@ GNULIB_MODULES=
   manywarnings memmem-simple mempcpy memrchr memset_explicit
   minmax mkostemp mktime
   nanosleep nproc nstrftime
-  pathmax pipe2 printf-posix vasprintf-posix pselect pthread_sigmask
+  pathmax pipe2 pselect pthread_sigmask
   qcopy-acl readlink readlinkat regex
   sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stdckdint stddef stdio
   stpcpy stpncpy strnlen strnlen strtoimax symlink sys_stat sys_time
-- 
2.39.2


[-- Attachment #3: 0002-Regenerate-by-running-admin-merge-gnulib.patch.gz --]
[-- Type: application/gzip, Size: 118024 bytes --]

[-- Attachment #4: 0003-Do-not-define-HAVE_CONFIG_H.patch --]
[-- Type: text/x-patch, Size: 860 bytes --]

From 635234839394ca071a4fbb985233cf1bf1c9735f Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sun, 6 Aug 2023 10:32:54 -0700
Subject: [PATCH 3/3] Do not define HAVE_CONFIG_H

* configure.ac (CFLAGS): No need for -DHAVE_CONFIG_H
since Emacs no longer uses Gnulib's printf modules.
---
 configure.ac | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index c77fab3eefd..493582d42c4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7019,9 +7019,6 @@ AC_DEFUN
   [Short copyright string for this version of Emacs.])
 AC_SUBST([copyright])
 
-# This is needed for gnulib's printf modules.
-CFLAGS="$CFLAGS -DHAVE_CONFIG_H"
-
 ### Specify what sort of things we'll be editing into Makefile and config.h.
 ### Use configuration here uncanonicalized to avoid exceeding size limits.
 AC_SUBST([version])
-- 
2.39.2


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

* Re: Android port
  2023-08-06 17:44                                                       ` Paul Eggert
@ 2023-08-06 17:51                                                         ` Eli Zaretskii
  2023-08-06 23:55                                                           ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 17:51 UTC (permalink / raw)
  To: Paul Eggert; +Cc: luangruo, angelo.g0, emacs-devel, bruno

> Date: Sun, 6 Aug 2023 10:44:09 -0700
> Cc: Eli Zaretskii <eliz@gnu.org>, angelo.g0@libero.it, emacs-devel@gnu.org,
>  Bruno Haible <bruno@clisp.org>
> From: Paul Eggert <eggert@cs.ucla.edu>
> 
> I understand the reluctance from the Android point of view. However, 
> printf-posix imports 69 new source files to Emacs, and these files have 
> not been tested extensively with Emacs on non-Android platforms. From 
> the viewpoint of non-Android Emacs platforms, it's significantly less 
> disruptive if merging the Android branch does not add 69 new source 
> files that will require testing on these platforms.
> 
> And even from the Android viewpoint, no matter what we do to fix the 
> problem some testing needs to be done anyway, as the fix is likely to 
> affect Emacs in test-relevant ways.

I think Paul makes a good point here about those modules not being
tested in Emacs on other platforms.  Avoiding addition of 69 files to
Emacs is also a non-trivial gain.

Since Emacs 30.1 will not be released any time soon, I think we will
have ample time to test it without the *printf modules, and find out
and fix any issues this could create.

So I suggest to give this solution a chance.

> The idea is to get feature/android merged quickly. We can revisit the 
> use of Gnulib's printf-posix module later, as needed. With luck 
> printf-posix won't be needed, as Emacs historically has avoided use of 
> unusual printf features (for obvious portability reasons).

Right.



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

* Re: Android port
  2023-08-06 13:07                                                           ` Bruno Haible
@ 2023-08-06 18:10                                                             ` Paul Eggert
  2023-08-06 18:15                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Paul Eggert @ 2023-08-06 18:10 UTC (permalink / raw)
  To: Bruno Haible; +Cc: Po Lu, Eli Zaretskii, angelo.g0, emacs-devel

On 2023-08-06 06:07, Bruno Haible wrote:
> PS: The differences between this approach and the OMIT_GNULIB_MODULE_*
> approach (as far as I understand it) are:
> 
> * This approach uses only documented Gnulib features.
>    Whereas the OMIT_GNULIB_MODULE_* approach hacks generated files and
>    is thus more fragile.
> 
> * This approach has an effect on both the set of .m4 code executed by
>    configure_and_  the generated Makefiles.
>    Whereas the OMIT_GNULIB_MODULE_* approach does not change what happens
>    at configure time, it only modifies the generated Makefiles.

Thanks, Bruno, this sounds like a promising idea. I'll add it to my list 
of things to do for Emacs. I'm hoping that it isn't needed for merging 
the Android port, though, as it'll require some thinking and testing of 
its own.



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

* Re: Android port
  2023-08-06 17:36                                                                               ` Eli Zaretskii
@ 2023-08-06 18:11                                                                                 ` Angelo Graziosi
  2023-08-06 18:19                                                                                   ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 18:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, bruno, eggert, emacs-devel

> Il 06/08/2023 19:36 CEST Eli Zaretskii ha scritto:
> 
>  
> > Date: Sun, 6 Aug 2023 17:44:55 +0200 (CEST)
> > From: Angelo Graziosi 
> > Cc: Bruno Haible 
> > 
> > > Il 06/08/2023 17:35 CEST Angelo Graziosi ha scritto:
> > > 
> > >  
> > > Ah, on top applies! Testing wait..
> > > 
> > > > Il 06/08/2023 17:09 CEST Angelo Graziosi  ha scritto:
> > > 
> > > > On top of previous or from scratch?
> > 
> > Ok, the three patches (up today) apply cleanly but the build fails in the same manner..
> 
> Are you sure you did all the steps starting from autogen.sh and
> running the configure script?

For sanity check I removed the tree and repeated the steps:

$ aunpack emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz
$ cd emacs-bfbdf4eb892935536fc665d6cc986fd669364263/
$ patch nt/mingw-cfg.site ../android-01.patch
$ patch nt/mingw-cfg.site ../android-02.patch
$ patch nt/mingw-cfg.site ../android-03.patch

$ tail /tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/mingw-cfg.site
gl_cv_func_free_preserves_errno=yes
# Don't build the Gnulib nanosleep module: it requires W2K or later,
# and MinGW does have nanosleep.
gl_cv_func_nanosleep=yes
# Suppress configure-time diagnostic from unnecessary libxattr check,
# as xattr will not be supported here.
enable_xattr=no
# Don't build gnulib printf either.
ac_cv_func_vasprintf=yes
gl_cv_func_vasprintf_posix=yes


$ ./autogen.sh
$ ./configure
$ make
[...]
asprintf.c:30:1: error: redefinition of 'asprintf'
   30 | asprintf (char **resultp, const char *format, ...)
      | ^~~~~~~~
In file included from C:/msys64/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/inc/ms-w32.h:389,
                 from ../src/conf_post.h:38,
                 from ../src/config.h:3511,
                 from asprintf.c:18:
C:/msys64/mingw64/include/stdio.h:276:5: note: previous definition of 'asprintf' with type 'int(char **, const char *, ...)'
  276 | int asprintf(char **__ret, const char *__format, ...)
      |     ^~~~~~~~
make[2]: *** [Makefile:102: asprintf.o] Error 1
make[2]: uscita dalla directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/lib»
make[1]: *** [Makefile:537: lib] Error 2
make[1]: uscita dalla directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263»
make[1]: ingresso nella directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263»
***
*** "make all" failed with exit status 2.
***
*** You could try to:
*** - run "make bootstrap", which might fix the problem
*** - run "make V=1", which displays the full commands invoked by make,
***   to further investigate the problem
***
make[1]: *** [Makefile:418: advice-on-failure] Error 2
make[1]: uscita dalla directory «/tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263»
make: *** [Makefile:374: all] Error 2

> 
> If yes, it means something else causes asnprintf.o to be added to
> LIBOBJ.  What does the below show in the m4 directories (I think there
> are two of them on the Android branch):
> 
>   $ grep 'gl_REPLACE_VASN\?PRINTF' *.m4

$ grep 'gl_REPLACE_VASN\?PRINTF' *.m4
printf-posix.m4:    gl_REPLACE_VASNPRINTF
vasnprintf.m4:    gl_REPLACE_VASNPRINTF
vasnprintf.m4:AC_DEFUN([gl_REPLACE_VASNPRINTF],
vasprintf.m4:    gl_REPLACE_VASPRINTF
vasprintf.m4:AC_DEFUN([gl_REPLACE_VASPRINTF],
vasprintf-posix.m4:    gl_REPLACE_VASNPRINTF
vasprintf-posix.m4:    gl_REPLACE_VASPRINTF
vfprintf-posix.m4:    gl_REPLACE_VASNPRINTF



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

* Re: Android port
  2023-08-06 18:10                                                             ` Paul Eggert
@ 2023-08-06 18:15                                                               ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 18:15 UTC (permalink / raw)
  To: Paul Eggert; +Cc: bruno, luangruo, angelo.g0, emacs-devel

> Date: Sun, 6 Aug 2023 11:10:29 -0700
> Cc: Po Lu <luangruo@yahoo.com>, Eli Zaretskii <eliz@gnu.org>,
>  angelo.g0@libero.it, emacs-devel@gnu.org
> From: Paul Eggert <eggert@cs.ucla.edu>
> 
> On 2023-08-06 06:07, Bruno Haible wrote:
> > PS: The differences between this approach and the OMIT_GNULIB_MODULE_*
> > approach (as far as I understand it) are:
> > 
> > * This approach uses only documented Gnulib features.
> >    Whereas the OMIT_GNULIB_MODULE_* approach hacks generated files and
> >    is thus more fragile.
> > 
> > * This approach has an effect on both the set of .m4 code executed by
> >    configure_and_  the generated Makefiles.
> >    Whereas the OMIT_GNULIB_MODULE_* approach does not change what happens
> >    at configure time, it only modifies the generated Makefiles.
> 
> Thanks, Bruno, this sounds like a promising idea. I'll add it to my list 
> of things to do for Emacs. I'm hoping that it isn't needed for merging 
> the Android port, though, as it'll require some thinking and testing of 
> its own.

I agree: this is certainly something to consider for the future, but
it is better kept separate from the prerequisites for merging the
Android branch.  The main "beneficiary" of migrating to this method is
the MinGW build (and the Gnulib import job), not the Android build.



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

* Re: Android port
  2023-08-06 18:11                                                                                 ` Angelo Graziosi
@ 2023-08-06 18:19                                                                                   ` Eli Zaretskii
  2023-08-06 18:34                                                                                     ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 18:19 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: luangruo, bruno, eggert, emacs-devel

> Date: Sun, 6 Aug 2023 20:11:05 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> Cc: luangruo@yahoo.com, bruno@clisp.org, eggert@cs.ucla.edu,
> 	emacs-devel@gnu.org
> 
> > Are you sure you did all the steps starting from autogen.sh and
> > running the configure script?
> 
> For sanity check I removed the tree and repeated the steps:
> 
> $ aunpack emacs-bfbdf4eb892935536fc665d6cc986fd669364263.tar.gz
> $ cd emacs-bfbdf4eb892935536fc665d6cc986fd669364263/
> $ patch nt/mingw-cfg.site ../android-01.patch
> $ patch nt/mingw-cfg.site ../android-02.patch
> $ patch nt/mingw-cfg.site ../android-03.patch
> 
> $ tail /tmp/emacs-bfbdf4eb892935536fc665d6cc986fd669364263/nt/mingw-cfg.site
> gl_cv_func_free_preserves_errno=yes
> # Don't build the Gnulib nanosleep module: it requires W2K or later,
> # and MinGW does have nanosleep.
> gl_cv_func_nanosleep=yes
> # Suppress configure-time diagnostic from unnecessary libxattr check,
> # as xattr will not be supported here.
> enable_xattr=no
> # Don't build gnulib printf either.
> ac_cv_func_vasprintf=yes
> gl_cv_func_vasprintf_posix=yes
> 
> 
> $ ./autogen.sh
> $ ./configure
> $ make
> [...]
> asprintf.c:30:1: error: redefinition of 'asprintf'
>    30 | asprintf (char **resultp, const char *format, ...)
>       | ^~~~~~~~

OK, thanks.

> >   $ grep 'gl_REPLACE_VASN\?PRINTF' *.m4
> 
> $ grep 'gl_REPLACE_VASN\?PRINTF' *.m4
> printf-posix.m4:    gl_REPLACE_VASNPRINTF
> vasnprintf.m4:    gl_REPLACE_VASNPRINTF
> vasnprintf.m4:AC_DEFUN([gl_REPLACE_VASNPRINTF],
> vasprintf.m4:    gl_REPLACE_VASPRINTF
> vasprintf.m4:AC_DEFUN([gl_REPLACE_VASPRINTF],
> vasprintf-posix.m4:    gl_REPLACE_VASNPRINTF
> vasprintf-posix.m4:    gl_REPLACE_VASPRINTF
> vfprintf-posix.m4:    gl_REPLACE_VASNPRINTF

So I think we need to set 3 more variables:

 gl_cv_func_printf_posix=yes
 gl_cv_func_vfprintf_posix=yes
 gl_cv_vasprintf_posix=yes



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

* Re: Android port
  2023-08-06 18:19                                                                                   ` Eli Zaretskii
@ 2023-08-06 18:34                                                                                     ` Angelo Graziosi
  2023-08-06 18:53                                                                                       ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 18:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, bruno, eggert, emacs-devel


> Il 06/08/2023 20:19 CEST Eli Zaretskii ha scritto:
> 
> So I think we need to set 3 more variables:
> 
>  gl_cv_func_printf_posix=yes
>  gl_cv_func_vfprintf_posix=yes
>  gl_cv_vasprintf_posix=yes

I did a quick try. Added manually the above lines to mingw-cfg.site file, reconfigured and 'make', but it fails as described..



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

* Re: Android port
  2023-08-06 18:34                                                                                     ` Angelo Graziosi
@ 2023-08-06 18:53                                                                                       ` Eli Zaretskii
  2023-08-06 20:26                                                                                         ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 18:53 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: luangruo, bruno, eggert, emacs-devel

> Date: Sun, 6 Aug 2023 20:34:55 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> Cc: luangruo@yahoo.com, bruno@clisp.org, eggert@cs.ucla.edu,
> 	emacs-devel@gnu.org
> 
> 
> > Il 06/08/2023 20:19 CEST Eli Zaretskii ha scritto:
> > 
> > So I think we need to set 3 more variables:
> > 
> >  gl_cv_func_printf_posix=yes
> >  gl_cv_func_vfprintf_posix=yes
> >  gl_cv_vasprintf_posix=yes
> 
> I did a quick try. Added manually the above lines to mingw-cfg.site file, reconfigured and 'make', but it fails as described..

Sorry, one typo and one more variable:

  gl_cv_func_printf_posix=yes
  gl_cv_func_vfprintf_posix=yes
  gl_cv_func_vasprintf_posix=yes
  ac_cv_func_vasnprintf

Thanks.



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

* Re: Android port
  2023-08-06 17:44                                                                             ` Eli Zaretskii
@ 2023-08-06 18:54                                                                               ` Bruno Haible
  2023-08-06 19:14                                                                                 ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Bruno Haible @ 2023-08-06 18:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, eggert, angelo.g0, emacs-devel

Eli Zaretskii wrote:
> > OK. How do you reliably get notified about the relevant changes?
> 
> By watching the Gnulib updates and new Gnulib modules that get
> imported and compiled into libgnu.a.
> ...
> > For more reliability, I would save the generated config.cache from a mingw
> > build somewhere, and compare the config.cache of newer builds with the
> > saved one.
> 
> I do that as well, when I suspect some change could cause a
> difference.
> ...
> Luckily, this happens very rarely, IME, at least as far as things
> related to Emacs on Windows are concerned.

OK, it sounds like this part of the interface between Gnulib and Emacs
development works well enough in practice? If you agree, then I'm glad
nothing needs to be changed on the Gnulib side in that respect.

Bruno






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

* Re: Android port
  2023-08-06 18:54                                                                               ` Bruno Haible
@ 2023-08-06 19:14                                                                                 ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-06 19:14 UTC (permalink / raw)
  To: Bruno Haible; +Cc: luangruo, eggert, angelo.g0, emacs-devel

> From: Bruno Haible <bruno@clisp.org>
> Cc: luangruo@yahoo.com, eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org
> Date: Sun, 06 Aug 2023 20:54:43 +0200
> 
> Eli Zaretskii wrote:
> > > OK. How do you reliably get notified about the relevant changes?
> > 
> > By watching the Gnulib updates and new Gnulib modules that get
> > imported and compiled into libgnu.a.
> > ...
> > > For more reliability, I would save the generated config.cache from a mingw
> > > build somewhere, and compare the config.cache of newer builds with the
> > > saved one.
> > 
> > I do that as well, when I suspect some change could cause a
> > difference.
> > ...
> > Luckily, this happens very rarely, IME, at least as far as things
> > related to Emacs on Windows are concerned.
> 
> OK, it sounds like this part of the interface between Gnulib and Emacs
> development works well enough in practice? If you agree, then I'm glad
> nothing needs to be changed on the Gnulib side in that respect.

It works well enough, yes.  The number of times the build was broken
since we moved to using the Posix configury on Windows 10 years ago is
less than a dozen, I think.  Which is pretty fabulous, IMO.



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

* Re: Android port
  2023-08-06 18:53                                                                                       ` Eli Zaretskii
@ 2023-08-06 20:26                                                                                         ` Angelo Graziosi
  2023-08-07  2:26                                                                                           ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-06 20:26 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, bruno, eggert, emacs-devel


> Il 06/08/2023 20:53 CEST Eli Zaretskii ha scritto:
> 
> Sorry, one typo and one more variable:
> 
>   gl_cv_func_printf_posix=yes
>   gl_cv_func_vfprintf_posix=yes
>   gl_cv_func_vasprintf_posix=yes
>   ac_cv_func_vasnprintf

Now:

$ tail nt/mingw-cfg.site
# Suppress configure-time diagnostic from unnecessary libxattr check,
# as xattr will not be supported here.
enable_xattr=no
# Don't build gnulib printf either.
ac_cv_func_vasprintf=yes
gl_cv_func_vasprintf_posix=yes
gl_cv_func_printf_posix=yes
gl_cv_func_vfprintf_posix=yes
gl_cv_func_vasprintf_posix=yes
ac_cv_func_vasnprintf


but I am afraid, it still fails...



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

* Re: Android port
  2023-08-06 17:51                                                         ` Eli Zaretskii
@ 2023-08-06 23:55                                                           ` Po Lu
  2023-08-07  0:49                                                             ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-06 23:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Paul Eggert, angelo.g0, emacs-devel, bruno

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Sun, 6 Aug 2023 10:44:09 -0700
>> Cc: Eli Zaretskii <eliz@gnu.org>, angelo.g0@libero.it, emacs-devel@gnu.org,
>>  Bruno Haible <bruno@clisp.org>
>> From: Paul Eggert <eggert@cs.ucla.edu>
>> 
>> I understand the reluctance from the Android point of view. However, 
>> printf-posix imports 69 new source files to Emacs, and these files have 
>> not been tested extensively with Emacs on non-Android platforms. From 
>> the viewpoint of non-Android Emacs platforms, it's significantly less 
>> disruptive if merging the Android branch does not add 69 new source 
>> files that will require testing on these platforms.
>> 
>> And even from the Android viewpoint, no matter what we do to fix the 
>> problem some testing needs to be done anyway, as the fix is likely to 
>> affect Emacs in test-relevant ways.
>
> I think Paul makes a good point here about those modules not being
> tested in Emacs on other platforms.  Avoiding addition of 69 files to
> Emacs is also a non-trivial gain.
>
> Since Emacs 30.1 will not be released any time soon, I think we will
> have ample time to test it without the *printf modules, and find out
> and fix any issues this could create.
>
> So I suggest to give this solution a chance.
>
>> The idea is to get feature/android merged quickly. We can revisit the 
>> use of Gnulib's printf-posix module later, as needed. With luck 
>> printf-posix won't be needed, as Emacs historically has avoided use of 
>> unusual printf features (for obvious portability reasons).
>
> Right.

I plan to quickly test this on some old versions of Android and ack.



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

* Re: Android port
  2023-08-06 23:55                                                           ` Po Lu
@ 2023-08-07  0:49                                                             ` Po Lu
  2023-08-07 11:19                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-07  0:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Paul Eggert, angelo.g0, emacs-devel, bruno

Po Lu <luangruo@yahoo.com> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> Date: Sun, 6 Aug 2023 10:44:09 -0700
>>> Cc: Eli Zaretskii <eliz@gnu.org>, angelo.g0@libero.it, emacs-devel@gnu.org,
>>>  Bruno Haible <bruno@clisp.org>
>>> From: Paul Eggert <eggert@cs.ucla.edu>
>>> 
>>> I understand the reluctance from the Android point of view. However, 
>>> printf-posix imports 69 new source files to Emacs, and these files have 
>>> not been tested extensively with Emacs on non-Android platforms. From 
>>> the viewpoint of non-Android Emacs platforms, it's significantly less 
>>> disruptive if merging the Android branch does not add 69 new source 
>>> files that will require testing on these platforms.
>>> 
>>> And even from the Android viewpoint, no matter what we do to fix the 
>>> problem some testing needs to be done anyway, as the fix is likely to 
>>> affect Emacs in test-relevant ways.
>>
>> I think Paul makes a good point here about those modules not being
>> tested in Emacs on other platforms.  Avoiding addition of 69 files to
>> Emacs is also a non-trivial gain.
>>
>> Since Emacs 30.1 will not be released any time soon, I think we will
>> have ample time to test it without the *printf modules, and find out
>> and fix any issues this could create.
>>
>> So I suggest to give this solution a chance.
>>
>>> The idea is to get feature/android merged quickly. We can revisit the 
>>> use of Gnulib's printf-posix module later, as needed. With luck 
>>> printf-posix won't be needed, as Emacs historically has avoided use of 
>>> unusual printf features (for obvious portability reasons).
>>
>> Right.
>
> I plan to quickly test this on some old versions of Android and ack.

Cursory inspection indicates that Emacs functions correctly without the
*printf modules on Android 2.3, 4.0.1 and 4.4, so I've ommitted the
modules and merged the branch to master, after removing the w32-specific
code that disables them.

Thanks for your help.



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

* Re: Android port
  2023-08-06 20:26                                                                                         ` Angelo Graziosi
@ 2023-08-07  2:26                                                                                           ` Eli Zaretskii
  2023-08-07  7:20                                                                                             ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-07  2:26 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: luangruo, bruno, eggert, emacs-devel

> Date: Sun, 6 Aug 2023 22:26:20 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> Cc: luangruo@yahoo.com, bruno@clisp.org, eggert@cs.ucla.edu,
>  emacs-devel@gnu.org
> 
> 
> > Il 06/08/2023 20:53 CEST Eli Zaretskii ha scritto:
> > 
> > Sorry, one typo and one more variable:
> > 
> >   gl_cv_func_printf_posix=yes
> >   gl_cv_func_vfprintf_posix=yes
> >   gl_cv_func_vasprintf_posix=yes
> >   ac_cv_func_vasnprintf
> 
> Now:
> 
> $ tail nt/mingw-cfg.site
> # Suppress configure-time diagnostic from unnecessary libxattr check,
> # as xattr will not be supported here.
> enable_xattr=no
> # Don't build gnulib printf either.
> ac_cv_func_vasprintf=yes
> gl_cv_func_vasprintf_posix=yes
> gl_cv_func_printf_posix=yes
> gl_cv_func_vfprintf_posix=yes
> gl_cv_func_vasprintf_posix=yes
> ac_cv_func_vasnprintf
> 
> 
> but I am afraid, it still fails...

The last one should be

  ac_cv_func_vasnprintf=yes

Anyway, thank you for your efforts.



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

* Re: Android port
  2023-08-07  2:26                                                                                           ` Eli Zaretskii
@ 2023-08-07  7:20                                                                                             ` Angelo Graziosi
  2023-08-07  7:22                                                                                               ` Po Lu
  2023-08-07 11:22                                                                                               ` Eli Zaretskii
  0 siblings, 2 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-07  7:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, bruno, eggert, emacs-devel


> Il 07/08/2023 04:26 CEST Eli Zaretskii ha scritto:
> 
> 
> The last one should be
> 
>   ac_cv_func_vasnprintf=yes
> 
> Anyway, thank you for your efforts.

maybe we have to test master now. Right?



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

* Re: Android port
  2023-08-07  7:20                                                                                             ` Angelo Graziosi
@ 2023-08-07  7:22                                                                                               ` Po Lu
  2023-08-07  8:19                                                                                                 ` Corwin Brust
  2023-08-07 11:22                                                                                               ` Eli Zaretskii
  1 sibling, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-07  7:22 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Eli Zaretskii, bruno, eggert, emacs-devel

Angelo Graziosi <angelo.g0@libero.it> writes:

> maybe we have to test master now. Right?

It works, since the printf module has been removed.



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

* Re: Android port
  2023-08-07  7:22                                                                                               ` Po Lu
@ 2023-08-07  8:19                                                                                                 ` Corwin Brust
  2023-08-07  8:44                                                                                                   ` Po Lu
  0 siblings, 1 reply; 205+ messages in thread
From: Corwin Brust @ 2023-08-07  8:19 UTC (permalink / raw)
  To: Po Lu; +Cc: Angelo Graziosi, Eli Zaretskii, bruno, eggert, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3116 bytes --]

On Mon, Aug 7, 2023 at 2:22 AM Po Lu <luangruo@yahoo.com> wrote:
>
> Angelo Graziosi <angelo.g0@libero.it> writes:
>
> > maybe we have to test master now. Right?
>
> It works, since the printf module has been removed.
>

I'm not able to build the master branch starting from c71a52, here is
the relevant part of the log (attached), which starts with autogen &&
configure prior to the make, which failed:

  GEN      ../../etc/charsets/CP1258.map
  CC       indent.o
  CC       search.o
fileio.c: In function 'internal_delete_file':
fileio.c:2601:36: warning: passing argument 1 of
'internal_condition_case_2' from incompatible pointer type
[-Wincompatible-pointer-types]
 2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
      |                                    ^~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    struct Lisp_X * (*)(struct Lisp_X *)
In file included from fileio.c:49:
lisp.h:4582:47: note: expected 'struct Lisp_X * (*)(struct Lisp_X *,
struct Lisp_X *)' but argument is of type 'struct Lisp_X * (*)(struct
Lisp_X *)'
 4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
(Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object (*) (Lisp_Object));
      |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fileio.c:2602:40: warning: passing argument 4 of
'internal_condition_case_2' from incompatible pointer type
[-Wincompatible-pointer-types]
 2602 |                                    Qt, internal_delete_file_1);
      |                                        ^~~~~~~~~~~~~~~~~~~~~~
      |                                        |
      |                                        struct Lisp_X *
(*)(struct Lisp_X *)
In file included from fileio.c:49:
lisp.h:4582:117: note: expected 'Lisp_Object' {aka 'struct Lisp_X *'}
but argument is of type 'struct Lisp_X * (*)(struct Lisp_X *)'
 4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
(Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object (*) (Lisp_Object));
      |
                                                     ^~~~~~~~~~~
fileio.c:2601:9: error: too few arguments to function
'internal_condition_case_2'
 2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fileio.c:49:
lisp.h:4582:20: note: declared here
 4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
(Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object (*) (Lisp_Object));
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
  GEN      ../../etc/charsets/CP10007.map
  CC       regex-emacs.o
  GEN      ../../etc/charsets/CP720.map
  GEN      ../../etc/charsets/CP858.map
  CC       undo.o
make[1]: *** [Makefile:455: fileio.o] Error 1
make[1]: *** Waiting for unfinished jobs....

Let me know if there's other information/digging I might provide.

Note, I updated my script to add V=1 for make in the future.

[-- Attachment #2: emacs-30-c71a52-make.log --]
[-- Type: application/octet-stream, Size: 62241 bytes --]

Checking whether you have the necessary tools...
(Read INSTALL.REPO for more details on building Emacs)
Checking for autoconf (need at least version 2.65) ... ok
Your system has the required tools.
Building aclocal.m4 ...
Running 'autoreconf -fi -I m4' ...
Running 'autoreconf -fi' in exec ...
You can now run './configure'.
configure: loading site script /etc/config.site
checking for xcrun... no
checking for GNU Make... make
checking build system type... x86_64-w64-mingw32
checking host system type... x86_64-w64-mingw32
checking the compiler's target... x86_64-w64-mingw32
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether the compiler is clang... no
checking for compiler option needed when checking for declarations... none
checking whether gcc and cc understand -c and -o together... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for wchar.h... yes
checking for minix/config.h... no
checking for linux/fs.h... no
checking for malloc.h... yes
checking for sys/systeminfo.h... no
checking for sys/sysinfo.h... no
checking for coff.h... no
checking for pty.h... no
checking for sys/resource.h... yes
checking for sys/utsname.h... no
checking for pwd.h... yes
checking for utmp.h... no
checking for util.h... no
checking for sanitizer/lsan_interface.h... no
checking for sanitizer/asan_interface.h... no
checking for sanitizer/common_interface_defs.h... no
checking for sys/socket.h... yes
checking for sys/param.h... yes
checking for pthread.h... (cached) no
checking for malloc/malloc.h... no
checking for sys/un.h... no
checking for vfork.h... no
checking for dirent.h... yes
checking for execinfo.h... no
checking for linux/xattr.h... no
checking for stdio_ext.h... no
checking for sys/vfs.h... no
checking for sys/fs_types.h... no
checking for getopt.h... (cached) no
checking for sys/cdefs.h... yes
checking for sys/time.h... yes
checking for ieee754.h... no
checking for limits.h... yes
checking for sys/select.h... no
checking for stdbool.h... yes
checking for stdckdint.h... no
checking for sys/random.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether _XOPEN_SOURCE should be defined... no
checking how to run the C preprocessor... gcc -I ./nt/inc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for Minix Amsterdam compiler... no
checking for ar... ar
checking for ranlib... ranlib
checking for gcc -I ./nt/inc option to enable large file support... -D_FILE_OFFSET_BITS=64
checking for gcc -I ./nt/inc option for timestamps after 2038... none needed
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking whether the compiler is clang... no
checking whether C compiler handles -Werror -Wunknown-warning-option... no
checking whether -Wno-missing-field-initializers is needed... no
checking whether -Wuninitialized is supported... yes
checking whether C compiler handles -fstrict-flex-arrays... no
checking whether C compiler handles -Wall... yes
checking whether C compiler handles -Warith-conversion... yes
checking whether C compiler handles -Wdate-time... yes
checking whether C compiler handles -Wdisabled-optimization... yes
checking whether C compiler handles -Wdouble-promotion... yes
checking whether C compiler handles -Wduplicated-cond... yes
checking whether C compiler handles -Wextra... yes
checking whether C compiler handles -Wformat-signedness... yes
checking whether C compiler handles -Winit-self... yes
checking whether C compiler handles -Winvalid-pch... yes
checking whether C compiler handles -Wlogical-op... yes
checking whether C compiler handles -Wmissing-declarations... yes
checking whether C compiler handles -Wmissing-include-dirs... yes
checking whether C compiler handles -Wmissing-prototypes... yes
checking whether C compiler handles -Wnested-externs... yes
checking whether C compiler handles -Wnull-dereference... yes
checking whether C compiler handles -Wold-style-definition... yes
checking whether C compiler handles -Wopenmp-simd... yes
checking whether C compiler handles -Wpacked... yes
checking whether C compiler handles -Wpointer-arith... yes
checking whether C compiler handles -Wstrict-flex-arrays... no
checking whether C compiler handles -Wstrict-prototypes... yes
checking whether C compiler handles -Wsuggest-attribute=noreturn... yes
checking whether C compiler handles -Wsuggest-final-methods... yes
checking whether C compiler handles -Wsuggest-final-types... yes
checking whether C compiler handles -Wtrampolines... yes
checking whether C compiler handles -Wuninitialized... yes
checking whether C compiler handles -Wunknown-pragmas... yes
checking whether C compiler handles -Wunused-macros... yes
checking whether C compiler handles -Wvariadic-macros... yes
checking whether C compiler handles -Wvector-operation-performance... yes
checking whether C compiler handles -Wwrite-strings... yes
checking whether C compiler handles -Warray-bounds=2... yes
checking whether C compiler handles -Wattribute-alias=2... yes
checking whether C compiler handles -Wformat=2... yes
checking whether C compiler handles -Wformat-truncation=2... yes
checking whether C compiler handles -Wimplicit-fallthrough=5... yes
checking whether C compiler handles -Wshift-overflow=2... yes
checking whether C compiler handles -Wuse-after-free=3... no
checking whether C compiler handles -Wvla-larger-than=4031... yes
checking whether C compiler handles -Wredundant-decls... (cached) no
checking whether C compiler handles -Wno-missing-field-initializers... yes
checking whether C compiler handles -Wno-override-init... yes
checking whether C compiler handles -Wno-sign-compare... yes
checking whether C compiler handles -Wno-type-limits... yes
checking whether C compiler handles -Wno-unused-parameter... yes
checking whether C compiler handles -Wno-format-nonliteral... yes
checking whether C compiler handles -Wno-bidi-chars... no
checking whether C compiler handles -Wno-pointer-sign... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking command to symlink files in the same directory... /bin/ln
checking for install-info... /usr/bin/install-info
checking for gzip... /usr/bin/gzip
checking for 'find' args to delete a file... -delete
checking for brew... no
checking for -znocombreloc... not needed
checking whether addresses are sanitized... no
checking for math library... none required
checking for struct passwd.pw_gecos... yes
checking for pkg-config... /mingw64/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for machine/soundcard.h... no
checking for sys/soundcard.h... no
checking for soundcard.h... no
checking for mmsystem.h... yes
checking for _oss_ioctl in -lossaudio... no
checking for alsa >= 1.0.0... no
checking for ADDR_NO_RANDOMIZE... no
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for net/if.h... no
checking for ifaddrs.h... no
checking for net/if_dl.h... no
checking for struct ifreq.ifr_flags... no
checking for struct ifreq.ifr_hwaddr... no
checking for struct ifreq.ifr_netmask... no
checking for struct ifreq.ifr_broadaddr... no
checking for struct ifreq.ifr_addr... no
checking for struct ifreq.ifr_addr.sa_len... no
checking whether gcc understands -MMD -MF... yes
checking for gcc -I ./nt/inc options needed to detect all undeclared functions... none needed
checking for X... no
checking whether Windows API headers are recent enough... yes
checking for windres... windres
checking whether malloc is Doug Lea style... no
checking for sbrk... (cached) yes
checking for getpagesize... yes
checking for __lsan_ignore_object... no
checking for fork... no
checking for vfork... no
checking for fchmod... no
checking for canonicalize_file_name... (cached) yes
checking for realpath... (cached) yes
checking for lstat... (cached) yes
checking for fchmodat... (cached) yes
checking for lchmod... (cached) yes
checking for fcntl... (cached) yes
checking for fdopendir... (cached) not-needed
checking for listxattr... no
checking for fstatat... (cached) yes
checking for fsync... (cached) yes
checking for gettimeofday... yes
checking for memset_explicit... no
checking for memset_s... no
checking for pselect... (cached) yes
checking for pthread_sigmask... (cached) yes
checking for readlink... (cached) yes
checking for isblank... yes
checking for iswctype... yes
checking for strtoimax... yes
checking for symlink... (cached) yes
checking for localtime_r... no
checking for getdtablesize... no
checking for working mmap... no
checking for main in -lXbsd... no
checking for thread support... yes
checking for librsvg-2.0 >= 2.14.0... yes
checking for libwebpdemux >= 0.6.0... yes
checking for WebPGetInfo... yes
checking for sqlite3_open_v2 in -lsqlite3... yes
checking for sqlite3_load_extension in -lsqlite3... yes
checking for getaddrinfo_a in -lanl... no
checking for malloc_trim... no
checking for lgetfilecon in -lselinux... no
checking for gnutls >= 2.12.2... yes
checking for libsystemd >= 222... no
checking for jansson >= 2.7... yes
checking for tree-sitter >= 0.20.2... no
checking for tree-sitter >= 0.6.3... yes
checking for ts_set_allocator... yes
checking for windows.h... yes
checking for harfbuzz >= 1.2.3... yes
checking for hb_font_set_var_named_instance in -lharfbuzz... yes
checking for X11/xpm.h... yes
checking for jpeglib 6b or later... -ljpeg
checking for lcms2... yes
checking for library containing inflateEnd... -lz
checking for dladdr... no
checking for dlfunc... no
checking for gcc_jit_context_acquire in -lgccjit... yes
checking for libgccjit.h... yes
checking for png.h... yes
checking whether png_longjmp is declared... yes
checking for tiffio.h... yes
checking for gif_lib.h... yes
checking for gpm.h... no
checking for libxml-2.0 > 2.6.17... yes
checking for maillock in -lmail... no
checking for maillock in -llockfile... no
checking for liblockfile.so... no
checking for maillock.h... no
checking for linux/seccomp.h... no
checking for linux/filter.h... no
checking for libseccomp >= 2.5.2... no
checking size of long... 4
checking for accept4... no
checking for fchdir... no
checking for gethostname... (cached) yes
checking for getrusage... no
checking for get_current_dir_name... no
checking for lrand48... no
checking for random... (cached) yes
checking for rint... yes
checking for tcdrain... no
checking for trunc... yes
checking for select... (cached) yes
checking for getpagesize... (cached) yes
checking for setlocale... yes
checking for newlocale... no
checking for getrlimit... (cached) yes
checking for setrlimit... (cached) yes
checking for shutdown... (cached) yes
checking for pthread_sigmask... (cached) yes
checking for strsignal... (cached) no
checking for setitimer... (cached) yes
checking for sendto... (cached) yes
checking for recvfrom... (cached) yes
checking for getsockname... (cached) yes
checking for getifaddrs... no
checking for freeifaddrs... no
checking for gai_strerror... (cached) yes
checking for sync... no
checking for getpwent... no
checking for endpwent... no
checking for getgrent... no
checking for endgrent... no
checking for renameat2... no
checking for cfmakeraw... no
checking for cfsetspeed... no
checking for __executable_start... no
checking for log2... yes
checking for pthread_setname_np... yes
checking for pthread_set_name_np... no
checking whether cfmakeraw is inline... no
checking whether cfsetspeed is inline... no
checking whether pthread_setname_np takes a single argument... no
checking whether pthread_setname_np takes three arguments... no
checking for aligned_alloc... no
checking for posix_memalign... no
checking whether aligned_alloc is declared... no
checking for posix_madvise... no
checking for madvise... no
checking for __builtin_frame_address... yes
checking for __builtin_unwind_init... yes
checking for _LARGEFILE_SOURCE value needed for large files... no
checking for grantpt... no
checking for getpt... no
checking for posix_openpt... no
checking for library containing tputs... none required
checking for timerfd interface... no
checking whether signals can be handled on alternate stack... no
checking for valgrind/valgrind.h... no
checking for struct unipair.unicode... no
checking for pid_t... yes
checking for snprintf... yes
checking for spawn.h... no
checking for posix_spawn... no
checking for posix_spawn_file_actions_addchdir... no
checking for posix_spawn_file_actions_addchdir_np... no
checking for posix_spawnattr_setflags... no
checking whether POSIX_SPAWN_SETSID is declared... no
checking whether GLib is linked in... no
checking for nl_langinfo and CODESET... (cached) yes
checking for nl_langinfo and _NL_PAPER_WIDTH... (cached) yes
checking for mbstate_t... yes
checking for _setjmp... no
checking for sigsetjmp... no
checking POSIX termios... no
checking for usable FIONREAD... yes
checking for usable SIGIO... no
checking for usable SIGPOLL... no
checking for struct alignment... yes
checking for C/C++ restrict keyword... __restrict__
checking for typeof syntax and keyword spelling... typeof
checking for statement expressions... yes
checking whether malloc (0) returns nonnull... yes
checking for sys/acl.h... yes
checking for library containing acl_get_file... (cached) none required
checking for acl_get_file... (cached) yes
checking for acl_get_fd... no
checking for acl_set_file... (cached) yes
checking for acl_set_fd... no
checking for acl_free... (cached) yes
checking for acl_from_mode... no
checking for acl_from_text... (cached) yes
checking for acl_delete_def_file... no
checking for acl_extended_file... no
checking for acl_delete_fd_np... no
checking for acl_delete_file_np... no
checking for acl_copy_ext_native... no
checking for acl_create_entry_np... no
checking for acl_to_short_text... no
checking for acl_free_text... no
checking for working acl_get_file... (cached) yes
checking for acl/libacl.h... no
checking for acl_entries... no
checking for ACL_FIRST_ENTRY... no
checking for ACL_TYPE_EXTENDED... no
checking for working alloca.h... no
checking for alloca... yes
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking whether the preprocessor supports include_next... yes
checking whether source code line length is unlimited... yes
checking whether lstat correctly handles trailing slash... (cached) yes
checking whether // is distinct from /... yes
checking whether realpath works... (cached) yes
checking for faccessat... yes
checking whether byte ordering is bigendian... no
checking if environ is properly declared... yes
checking for complete errno.h... no
checking for EMULTIHOP value... no
checking for ENOLINK value... yes
checking for EOVERFLOW value... yes
checking whether ctype.h defines __header_inline... no
checking for mode_t... yes
checking whether strmode is declared... no
checking whether getline is declared... no
checking for gawk... gawk
checking for getopt.h... (cached) no
checking whether timespec_get is declared... no
checking for timespec_get... no
checking for struct timeval... yes
checking for wide-enough struct timeval.tv_sec member... (cached) yes
checking whether limits.h has WORD_BIT, BOOL_WIDTH etc.... no
checking whether the compiler produces multi-arch binaries... no
checking whether stdint.h conforms to C99... yes
checking whether stdint.h works without ISO C predefines... yes
checking whether stdint.h has UINTMAX_WIDTH etc.... no
checking for 64-bit off_t... yes
checking for 64-bit st_size... no
checking whether memmem is declared... no
checking whether memrchr is declared... no
checking whether <limits.h> defines MIN and MAX... no
checking whether <sys/param.h> defines MIN and MAX... no
checking whether time_t is signed... yes
checking whether alarm is declared... (cached) yes
checking for working mktime... (cached) yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... no
checking whether tzname is declared... yes
checking for tzname... yes
checking for struct tm.tm_gmtoff... no
checking whether <sys/select.h> is self-contained... no
checking for inline... inline
checking for sigset_t... no
checking for volatile sig_atomic_t... yes
checking for sighandler_t... no
checking for wchar_t... yes
checking for good max_align_t... yes
checking whether NULL can be used in arbitrary expressions... yes
checking for unreachable... no
checking whether fcloseall is declared... yes
checking whether getw is declared... yes
checking whether putw is declared... yes
checking which flavor of printf attribute matches inttypes macros... gnu
checking whether stpncpy is declared... no
checking whether strnlen is declared... yes
checking whether strtoimax is declared... yes
checking whether stat file-mode macros are broken... no
checking for nlink_t... no
checking for struct timespec in <time.h>... yes
checking for TIME_UTC in <time.h>... no
checking whether execvpe is declared... no
checking whether clearerr_unlocked is declared... no
checking whether feof_unlocked is declared... no
checking whether ferror_unlocked is declared... no
checking whether fflush_unlocked is declared... no
checking whether fgets_unlocked is declared... no
checking whether fputc_unlocked is declared... no
checking whether fputs_unlocked is declared... no
checking whether fread_unlocked is declared... no
checking whether fwrite_unlocked is declared... no
checking whether getc_unlocked is declared... no
checking whether getchar_unlocked is declared... no
checking whether putc_unlocked is declared... no
checking whether putchar_unlocked is declared... no
checking type of array argument to getgroups... int
checking whether getdelim is declared... no
checking whether getdtablesize is declared... no
checking whether malloc is ptrdiff_t safe... yes
checking whether malloc, realloc, calloc set errno on failure... no
checking for O_CLOEXEC... no
checking for promoted mode_t type... int
checking whether the utimes function works... no
checking for C compiler option to allow warnings... -Wno-error
checking for alignas and alignof... yes, <stdalign.h> macros
checking for static_assert... yes, an <assert.h> macro
checking for __builtin_expect... yes
checking for byteswap.h... no
checking for readlinkat... yes
checking for library containing clock_gettime... (cached) none required
checking for clock_getres... yes
checking for clock_gettime... (cached) no
checking for clock_settime... (cached) no
checking for copy_file_range... (cached) yes
checking for d_type member in directory struct... no
checking whether // is distinct from /... (cached) yes
checking whether dup2 works... (cached) yes
checking for faccessat... (cached) yes
checking whether fchmodat works... (cached) not-needed-so-yes
checking whether fcntl handles F_DUPFD correctly... (cached) yes
checking whether fcntl understands F_DUPFD_CLOEXEC... (cached) yes
checking whether fdopendir is declared... no
checking whether fdopendir works... (cached) no-but-not-needed-so-yes
checking for flexible array member... yes
checking for __fpending... no
checking whether free is known to preserve errno... (cached) yes
checking whether fstatat (..., 0) works... (cached) yes
checking for sys/mount.h... no
checking for statvfs function (SVR4)... no
checking for two-argument statfs with statfs.f_frsize member... no
checking for 3-argument statfs function (DEC OSF/1)... no
checking for two-argument statfs with statfs.f_bsize member (AIX, 4.3BSD)... no
checking for four-argument statfs (SVR3)... no
checking for two-argument statfs with statfs.f_fsize member (4.4BSD and NetBSD)... no
checking for futimens... not-needed
checking whether futimens works... (cached) not-needed-so-yes
checking for getline... no
checking for getloadavg... yes
checking for sys/loadavg.h... no
checking whether getloadavg is declared... no
checking for getrandom... no
checking for bcrypt.h... yes
checking whether the bcrypt library is guaranteed to be present... (cached) no
checking for gettimeofday with POSIX signature... yes
checking whether the compiler supports the __inline keyword... yes
checking for gmp.h... yes
checking for library containing __gmpz_roinit_n... -lgmp
checking for memmem... no
checking for mempcpy... yes
checking for memrchr... no
checking for explicit_memset... no
checking for mkostemp... no
checking for library containing nanosleep... none required
checking for working nanosleep... (cached) yes
checking for sys/pstat.h... no
checking for sys/sysmp.h... no
checking for sys/param.h... (cached) yes
checking for sys/sysctl.h... no
checking for sched_getaffinity_np... no
checking for pstat_getdynamic... no
checking for sysmp... no
checking for sysctl... no
checking for sched_getaffinity... no
checking for pipe2... yes
checking whether signature of pselect conforms to POSIX... (cached) yes
checking whether pselect detects invalid fds... (cached) yes
checking whether pthread_sigmask is a macro... (cached) no
checking whether pthread_sigmask works without -lpthread... yes
checking whether pthread_sigmask returns error numbers... (cached) yes
checking whether pthread_sigmask unblocks signals correctly... (cached) not relevant
checking whether readlink signature is correct... yes
checking whether readlink handles trailing slash correctly... (cached) yes
checking whether readlink truncates results correctly... (cached) yes
checking for readlinkat... (cached) yes
checking whether readlinkat signature is correct... yes
checking for working re_compile_pattern... no
checking for libintl.h... yes
checking whether isblank is declared... yes
checking for sig2str... no
checking for sigdescr_np... no
checking for socklen_t... yes
checking for ssize_t... yes
checking for struct stat.st_atim.tv_nsec... no
checking for struct stat.st_atimespec.tv_nsec... no
checking for struct stat.st_atimensec... no
checking for struct stat.st_atim.st__tim.tv_nsec... no
checking for struct stat.st_birthtimespec.tv_nsec... no
checking for struct stat.st_birthtimensec... no
checking for struct stat.st_birthtim.tv_nsec... no
checking for bool, true, false... no
checking for stpcpy... no
checking for stpncpy... no
checking for working strnlen... yes
checking whether strtoimax works... yes
checking whether symlink handles trailing slash correctly... (cached) yes
checking whether localtime_r is declared... no
checking whether localtime_r exists as an inline function... no
checking whether localtime works even near extrema... yes
checking for timezone_t... no
checking for timegm... no
checking whether timer_settime is declared... no
checking for utimensat... yes
checking whether utimensat works... (cached) yes
checking for variable-length arrays... yes
checking for getdelim... no
checking for flockfile... no
checking for funlockfile... no
checking whether getc_unlocked is declared... (cached) no
checking for __mktime_internal... no
checking for timer_getoverrun... no
checking for gcc  option to disable position independent executables... not needed
checking for __ctype_get_mb_cur_max... no
checking whether MB_CUR_MAX is defined to function that won't link... no

Configured for 'x86_64-w64-mingw32'.

  Where should the build process find the source code?    .
  What compiler should emacs be built with?               gcc  -O2 -DHAVE_CONFIG_H
  Should Emacs use the GNU version of malloc?             no
    (The GNU allocators don't work with this system configuration.)
  Should Emacs use a relocating allocator for buffers?    no
  Should Emacs use mmap(2) for buffer allocation?         yes
  What window system should Emacs use?                    w32
  What toolkit should Emacs use?                          none
  Where do we find X Windows header files?                NONE
  Where do we find X Windows libraries?                   NONE
  Does Emacs use -lXaw3d?                                 no
  Is Emacs being built for Android?                       no 
  Does Emacs use the X Double Buffer Extension?           no
  Does Emacs use -lXpm?                                   yes
  Does Emacs use -ljpeg?                                  yes
  Does Emacs use -ltiff?                                  yes
  Does Emacs use a gif library?                           yes 
  Does Emacs use a png library?                           yes 
  Does Emacs use -lrsvg-2?                                yes
  Does Emacs use -lwebp?                                  yes
  Does Emacs use -lsqlite3?                               yes
  Does Emacs use cairo?                                   no
  Does Emacs use -llcms2?                                 yes
  Does Emacs use imagemagick?                             no
  Does Emacs use native APIs for images?                  yes (w32)
  Does Emacs support sound?                               yes
  Does Emacs use -lgpm?                                   no
  Does Emacs use -ldbus?                                  no
  Does Emacs use -lgconf?                                 no
  Does Emacs use GSettings?                               no
  Does Emacs use a file notification library?             yes (w32)
  Does Emacs use access control lists?                    yes
  Does Emacs use -lselinux?                               no
  Does Emacs use -lgnutls?                                yes
  Does Emacs use -lxml2?                                  yes
  Does Emacs use -lfreetype?                              no
  Does Emacs use HarfBuzz?                                yes
  Does Emacs use -lm17n-flt?                              no
  Does Emacs use -lotf?                                   no
  Does Emacs use -lxft?                                   no
  Does Emacs use -lsystemd?                               no
  Does Emacs use -ljansson?                               yes
  Does Emacs use -ltree-sitter?                           yes
  Does Emacs use the GMP library?                         yes
  Does Emacs directly use zlib?                           yes
  Does Emacs have dynamic modules support?                yes
  Does Emacs use toolkit scroll bars?                     yes
  Does Emacs support Xwidgets?                            no
  Does Emacs have threading support in lisp?              yes
  Does Emacs support the portable dumper?                 yes
  Does Emacs support legacy unexec dumping?               no
  Which dumping strategy does Emacs use?                  pdumper
  Does Emacs have native lisp compiler?                   yes
  Does Emacs use version 2 of the X Input Extension?      no
  Does Emacs generate a smaller-size Japanese dictionary? no


configure: creating ./config.status
config.status: creating src/verbose.mk
config.status: creating nt/emacs.rc
config.status: creating nt/emacsclient.rc
config.status: creating src/emacs-module.h
config.status: creating Makefile
config.status: creating lib/gnulib.mk
config.status: creating ./doc/man/emacs.1
config.status: creating lib/Makefile
config.status: creating lib-src/Makefile
config.status: creating oldXMenu/Makefile
config.status: creating src/Makefile
config.status: creating lwlib/Makefile
config.status: creating nextstep/Makefile
config.status: creating nt/Makefile
config.status: creating doc/emacs/Makefile
config.status: creating doc/misc/Makefile
config.status: creating doc/lispintro/Makefile
config.status: creating doc/lispref/Makefile
config.status: creating lisp/Makefile
config.status: creating leim/Makefile
config.status: creating test/Makefile
config.status: creating test/manual/noverlay/Makefile
config.status: creating test/infra/Makefile
config.status: creating admin/charsets/Makefile
config.status: creating admin/unidata/Makefile
config.status: creating admin/grammars/Makefile
config.status: creating java/Makefile
config.status: creating cross/Makefile
config.status: creating java/AndroidManifest.xml
config.status: creating src/config.h
config.status: linking lib/_Noreturn.h to cross/lib/_Noreturn.h
config.status: linking lib/acl-errno-valid.c to cross/lib/acl-errno-valid.c
config.status: linking lib/acl-internal.c to cross/lib/acl-internal.c
config.status: linking lib/acl-internal.h to cross/lib/acl-internal.h
config.status: linking lib/acl.h to cross/lib/acl.h
config.status: linking lib/acl_entries.c to cross/lib/acl_entries.c
config.status: linking lib/alloca.in.h to cross/lib/alloca.in.h
config.status: linking lib/allocator.c to cross/lib/allocator.c
config.status: linking lib/allocator.h to cross/lib/allocator.h
config.status: linking lib/arg-nonnull.h to cross/lib/arg-nonnull.h
config.status: linking lib/assert.in.h to cross/lib/assert.in.h
config.status: linking lib/at-func.c to cross/lib/at-func.c
config.status: linking lib/attribute.h to cross/lib/attribute.h
config.status: linking lib/binary-io.c to cross/lib/binary-io.c
config.status: linking lib/binary-io.h to cross/lib/binary-io.h
config.status: linking lib/byteswap.in.h to cross/lib/byteswap.in.h
config.status: linking lib/c++defs.h to cross/lib/c++defs.h
config.status: linking lib/c-ctype.c to cross/lib/c-ctype.c
config.status: linking lib/c-ctype.h to cross/lib/c-ctype.h
config.status: linking lib/c-strcase.h to cross/lib/c-strcase.h
config.status: linking lib/c-strcasecmp.c to cross/lib/c-strcasecmp.c
config.status: linking lib/c-strncasecmp.c to cross/lib/c-strncasecmp.c
config.status: linking lib/canonicalize-lgpl.c to cross/lib/canonicalize-lgpl.c
config.status: linking lib/careadlinkat.c to cross/lib/careadlinkat.c
config.status: linking lib/careadlinkat.h to cross/lib/careadlinkat.h
config.status: linking lib/cdefs.h to cross/lib/cdefs.h
config.status: linking lib/cloexec.c to cross/lib/cloexec.c
config.status: linking lib/cloexec.h to cross/lib/cloexec.h
config.status: linking lib/close-stream.c to cross/lib/close-stream.c
config.status: linking lib/close-stream.h to cross/lib/close-stream.h
config.status: linking lib/copy-file-range.c to cross/lib/copy-file-range.c
config.status: linking lib/count-leading-zeros.c to cross/lib/count-leading-zeros.c
config.status: linking lib/count-leading-zeros.h to cross/lib/count-leading-zeros.h
config.status: linking lib/count-one-bits.c to cross/lib/count-one-bits.c
config.status: linking lib/count-one-bits.h to cross/lib/count-one-bits.h
config.status: linking lib/count-trailing-zeros.c to cross/lib/count-trailing-zeros.c
config.status: linking lib/count-trailing-zeros.h to cross/lib/count-trailing-zeros.h
config.status: linking lib/diffseq.h to cross/lib/diffseq.h
config.status: linking lib/dirent-private.h to cross/lib/dirent-private.h
config.status: linking lib/dirent.in.h to cross/lib/dirent.in.h
config.status: linking lib/dirfd.c to cross/lib/dirfd.c
config.status: linking lib/dtoastr.c to cross/lib/dtoastr.c
config.status: linking lib/dtotimespec.c to cross/lib/dtotimespec.c
config.status: linking lib/dup2.c to cross/lib/dup2.c
config.status: linking lib/dynarray.h to cross/lib/dynarray.h
config.status: linking lib/eloop-threshold.h to cross/lib/eloop-threshold.h
config.status: linking lib/errno.in.h to cross/lib/errno.in.h
config.status: linking lib/euidaccess.c to cross/lib/euidaccess.c
config.status: linking lib/execinfo.c to cross/lib/execinfo.c
config.status: linking lib/execinfo.in.h to cross/lib/execinfo.in.h
config.status: linking lib/faccessat.c to cross/lib/faccessat.c
config.status: linking lib/fchmodat.c to cross/lib/fchmodat.c
config.status: linking lib/fcntl.c to cross/lib/fcntl.c
config.status: linking lib/fcntl.in.h to cross/lib/fcntl.in.h
config.status: linking lib/fdopendir.c to cross/lib/fdopendir.c
config.status: linking lib/file-has-acl.c to cross/lib/file-has-acl.c
config.status: linking lib/filemode.c to cross/lib/filemode.c
config.status: linking lib/filemode.h to cross/lib/filemode.h
config.status: linking lib/filename.h to cross/lib/filename.h
config.status: linking lib/filevercmp.c to cross/lib/filevercmp.c
config.status: linking lib/filevercmp.h to cross/lib/filevercmp.h
config.status: linking lib/flexmember.h to cross/lib/flexmember.h
config.status: linking lib/fpending.c to cross/lib/fpending.c
config.status: linking lib/fpending.h to cross/lib/fpending.h
config.status: linking lib/free.c to cross/lib/free.c
config.status: linking lib/fstatat.c to cross/lib/fstatat.c
config.status: linking lib/fsusage.c to cross/lib/fsusage.c
config.status: linking lib/fsusage.h to cross/lib/fsusage.h
config.status: linking lib/fsync.c to cross/lib/fsync.c
config.status: linking lib/ftoastr.c to cross/lib/ftoastr.c
config.status: linking lib/ftoastr.h to cross/lib/ftoastr.h
config.status: linking lib/futimens.c to cross/lib/futimens.c
config.status: linking lib/get-permissions.c to cross/lib/get-permissions.c
config.status: linking lib/getdelim.c to cross/lib/getdelim.c
config.status: linking lib/getdtablesize.c to cross/lib/getdtablesize.c
config.status: linking lib/getgroups.c to cross/lib/getgroups.c
config.status: linking lib/getline.c to cross/lib/getline.c
config.status: linking lib/getloadavg.c to cross/lib/getloadavg.c
config.status: linking lib/getopt-cdefs.in.h to cross/lib/getopt-cdefs.in.h
config.status: linking lib/getopt-core.h to cross/lib/getopt-core.h
config.status: linking lib/getopt-ext.h to cross/lib/getopt-ext.h
config.status: linking lib/getopt-pfx-core.h to cross/lib/getopt-pfx-core.h
config.status: linking lib/getopt-pfx-ext.h to cross/lib/getopt-pfx-ext.h
config.status: linking lib/getopt.c to cross/lib/getopt.c
config.status: linking lib/getopt.in.h to cross/lib/getopt.in.h
config.status: linking lib/getopt1.c to cross/lib/getopt1.c
config.status: linking lib/getopt_int.h to cross/lib/getopt_int.h
config.status: linking lib/getrandom.c to cross/lib/getrandom.c
config.status: linking lib/gettext.h to cross/lib/gettext.h
config.status: linking lib/gettime.c to cross/lib/gettime.c
config.status: linking lib/gettimeofday.c to cross/lib/gettimeofday.c
config.status: linking lib/group-member.c to cross/lib/group-member.c
config.status: linking lib/idx.h to cross/lib/idx.h
config.status: linking lib/ieee754.in.h to cross/lib/ieee754.in.h
config.status: linking lib/ignore-value.h to cross/lib/ignore-value.h
config.status: linking lib/intprops-internal.h to cross/lib/intprops-internal.h
config.status: linking lib/intprops.h to cross/lib/intprops.h
config.status: linking lib/inttypes.in.h to cross/lib/inttypes.in.h
config.status: linking lib/lchmod.c to cross/lib/lchmod.c
config.status: linking lib/libc-config.h to cross/lib/libc-config.h
config.status: linking lib/limits.in.h to cross/lib/limits.in.h
config.status: linking lib/lstat.c to cross/lib/lstat.c
config.status: linking lib/malloc.c to cross/lib/malloc.c
config.status: linking lib/malloc/dynarray-skeleton.c to cross/lib/malloc/dynarray-skeleton.c
config.status: linking lib/malloc/dynarray.h to cross/lib/malloc/dynarray.h
config.status: linking lib/malloc/dynarray_at_failure.c to cross/lib/malloc/dynarray_at_failure.c
config.status: linking lib/malloc/dynarray_emplace_enlarge.c to cross/lib/malloc/dynarray_emplace_enlarge.c
config.status: linking lib/malloc/dynarray_finalize.c to cross/lib/malloc/dynarray_finalize.c
config.status: linking lib/malloc/dynarray_resize.c to cross/lib/malloc/dynarray_resize.c
config.status: linking lib/malloc/dynarray_resize_clear.c to cross/lib/malloc/dynarray_resize_clear.c
config.status: linking lib/malloc/scratch_buffer.h to cross/lib/malloc/scratch_buffer.h
config.status: linking lib/malloc/scratch_buffer_grow.c to cross/lib/malloc/scratch_buffer_grow.c
config.status: linking lib/malloc/scratch_buffer_grow_preserve.c to cross/lib/malloc/scratch_buffer_grow_preserve.c
config.status: linking lib/malloc/scratch_buffer_set_array_size.c to cross/lib/malloc/scratch_buffer_set_array_size.c
config.status: linking lib/md5-stream.c to cross/lib/md5-stream.c
config.status: linking lib/md5.c to cross/lib/md5.c
config.status: linking lib/md5.h to cross/lib/md5.h
config.status: linking lib/memmem.c to cross/lib/memmem.c
config.status: linking lib/mempcpy.c to cross/lib/mempcpy.c
config.status: linking lib/memrchr.c to cross/lib/memrchr.c
config.status: linking lib/memset_explicit.c to cross/lib/memset_explicit.c
config.status: linking lib/mini-gmp-gnulib.c to cross/lib/mini-gmp-gnulib.c
config.status: linking lib/mini-gmp.c to cross/lib/mini-gmp.c
config.status: linking lib/mini-gmp.h to cross/lib/mini-gmp.h
config.status: linking lib/minmax.h to cross/lib/minmax.h
config.status: linking lib/mkostemp.c to cross/lib/mkostemp.c
config.status: linking lib/mktime-internal.h to cross/lib/mktime-internal.h
config.status: linking lib/mktime.c to cross/lib/mktime.c
config.status: linking lib/nanosleep.c to cross/lib/nanosleep.c
config.status: linking lib/nproc.c to cross/lib/nproc.c
config.status: linking lib/nproc.h to cross/lib/nproc.h
config.status: linking lib/nstrftime.c to cross/lib/nstrftime.c
config.status: linking lib/open.c to cross/lib/open.c
config.status: linking lib/openat-priv.h to cross/lib/openat-priv.h
config.status: linking lib/openat-proc.c to cross/lib/openat-proc.c
config.status: linking lib/openat.h to cross/lib/openat.h
config.status: linking lib/pathmax.h to cross/lib/pathmax.h
config.status: linking lib/pipe2.c to cross/lib/pipe2.c
config.status: linking lib/pselect.c to cross/lib/pselect.c
config.status: linking lib/pthread_sigmask.c to cross/lib/pthread_sigmask.c
config.status: linking lib/qcopy-acl.c to cross/lib/qcopy-acl.c
config.status: linking lib/rawmemchr.c to cross/lib/rawmemchr.c
config.status: linking lib/readlink.c to cross/lib/readlink.c
config.status: linking lib/readlinkat.c to cross/lib/readlinkat.c
config.status: linking lib/realloc.c to cross/lib/realloc.c
config.status: linking lib/regcomp.c to cross/lib/regcomp.c
config.status: linking lib/regex.c to cross/lib/regex.c
config.status: linking lib/regex.h to cross/lib/regex.h
config.status: linking lib/regex_internal.c to cross/lib/regex_internal.c
config.status: linking lib/regex_internal.h to cross/lib/regex_internal.h
config.status: linking lib/regexec.c to cross/lib/regexec.c
config.status: linking lib/root-uid.h to cross/lib/root-uid.h
config.status: linking lib/scratch_buffer.h to cross/lib/scratch_buffer.h
config.status: linking lib/set-permissions.c to cross/lib/set-permissions.c
config.status: linking lib/sha1.c to cross/lib/sha1.c
config.status: linking lib/sha1.h to cross/lib/sha1.h
config.status: linking lib/sha256.c to cross/lib/sha256.c
config.status: linking lib/sha256.h to cross/lib/sha256.h
config.status: linking lib/sha512.c to cross/lib/sha512.c
config.status: linking lib/sha512.h to cross/lib/sha512.h
config.status: linking lib/sig2str.c to cross/lib/sig2str.c
config.status: linking lib/sig2str.h to cross/lib/sig2str.h
config.status: linking lib/sigdescr_np.c to cross/lib/sigdescr_np.c
config.status: linking lib/signal.in.h to cross/lib/signal.in.h
config.status: linking lib/stat-time.c to cross/lib/stat-time.c
config.status: linking lib/stat-time.h to cross/lib/stat-time.h
config.status: linking lib/stdckdint.in.h to cross/lib/stdckdint.in.h
config.status: linking lib/stddef.in.h to cross/lib/stddef.in.h
config.status: linking lib/stdint.in.h to cross/lib/stdint.in.h
config.status: linking lib/stdio-impl.h to cross/lib/stdio-impl.h
config.status: linking lib/stdio.in.h to cross/lib/stdio.in.h
config.status: linking lib/stdlib.in.h to cross/lib/stdlib.in.h
config.status: linking lib/stpcpy.c to cross/lib/stpcpy.c
config.status: linking lib/stpncpy.c to cross/lib/stpncpy.c
config.status: linking lib/str-two-way.h to cross/lib/str-two-way.h
config.status: linking lib/strftime.h to cross/lib/strftime.h
config.status: linking lib/string.in.h to cross/lib/string.in.h
config.status: linking lib/strnlen.c to cross/lib/strnlen.c
config.status: linking lib/strtoimax.c to cross/lib/strtoimax.c
config.status: linking lib/strtol.c to cross/lib/strtol.c
config.status: linking lib/strtoll.c to cross/lib/strtoll.c
config.status: linking lib/symlink.c to cross/lib/symlink.c
config.status: linking lib/sys_random.in.h to cross/lib/sys_random.in.h
config.status: linking lib/sys_select.in.h to cross/lib/sys_select.in.h
config.status: linking lib/sys_stat.in.h to cross/lib/sys_stat.in.h
config.status: linking lib/sys_time.in.h to cross/lib/sys_time.in.h
config.status: linking lib/sys_types.in.h to cross/lib/sys_types.in.h
config.status: linking lib/tempname.c to cross/lib/tempname.c
config.status: linking lib/tempname.h to cross/lib/tempname.h
config.status: linking lib/time-internal.h to cross/lib/time-internal.h
config.status: linking lib/time.in.h to cross/lib/time.in.h
config.status: linking lib/time_r.c to cross/lib/time_r.c
config.status: linking lib/time_rz.c to cross/lib/time_rz.c
config.status: linking lib/timegm.c to cross/lib/timegm.c
config.status: linking lib/timespec-add.c to cross/lib/timespec-add.c
config.status: linking lib/timespec-sub.c to cross/lib/timespec-sub.c
config.status: linking lib/timespec.c to cross/lib/timespec.c
config.status: linking lib/timespec.h to cross/lib/timespec.h
config.status: linking lib/u64.c to cross/lib/u64.c
config.status: linking lib/u64.h to cross/lib/u64.h
config.status: linking lib/unistd.c to cross/lib/unistd.c
config.status: linking lib/unistd.in.h to cross/lib/unistd.in.h
config.status: linking lib/unlocked-io.h to cross/lib/unlocked-io.h
config.status: linking lib/utimens.c to cross/lib/utimens.c
config.status: linking lib/utimens.h to cross/lib/utimens.h
config.status: linking lib/utimensat.c to cross/lib/utimensat.c
config.status: linking lib/verify.h to cross/lib/verify.h
config.status: linking lib/vla.h to cross/lib/vla.h
config.status: linking lib/warn-on-use.h to cross/lib/warn-on-use.h
config.status: linking lib/xalloc-oversized.h to cross/lib/xalloc-oversized.h
config.status: linking lib/af_alg.h to cross/lib/af_alg.h
config.status: linking lib/save-cwd.h to cross/lib/save-cwd.h
config.status: linking lib/fingerprint.c to cross/lib/fingerprint.c
config.status: linking lib/fingerprint.h to cross/lib/fingerprint.h
config.status: linking lib/save-cwd.c to cross/lib/save-cwd.c
config.status: linking lib/openat-die.c to cross/lib/openat-die.c
config.status: linking lib/save-cwd.c to cross/lib/save-cwd.c
config.status: linking lib/min-max.h to cross/lib/min-max.h
config.status: executing src/epaths.h commands
config.status: executing src/.gdbinit commands
config.status: executing doc/emacs/emacsver.texi commands
config.status: executing etc-refcards-emacsver.tex commands
configure: WARNING: This configuration installs a 'movemail' program
that retrieves POP3 email via only insecure channels.
To omit insecure POP3, you can use './configure --without-pop'.
make -C lib all
make -C doc/lispref info
make -C doc/lispintro info
make -C doc/emacs info
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/doc/lispintro'
/usr/bin/mkdir -p ../../info
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/doc/lispref'
/usr/bin/mkdir -p ../../info
  GEN      info/dir
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/doc/emacs'
/usr/bin/mkdir -p ../../info
  GEN      ../../info/elisp.info
  GEN      ../../info/eintr.info
  GEN      ../../info/emacs.info
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/lib'
  GEN      alloca.h
  GEN      byteswap.h
  GEN      errno.h
  GEN      execinfo.humask 022; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/share/man/man1"

  GEN      getopt.h
umask 022; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/share/applications"
make -C nt install
  GEN      getopt-cdefs.h
thisdir=`pwd -P`; \
cd ./doc/man; \
for page in *.1; do \
  test "$page" = ChangeLog.1 && continue; \
  dest=`echo "${page}" | sed -e 's/\.1$//' -e 's,x,x,'`.1; \
  (cd "${thisdir}"; \
   /usr/bin/install -c -m 644 ./doc/man/${page} "/d/emacs-build/install/emacs-30-c71a52/share/man/man1/${dest}"); \
  [ -n "" ] || continue ; \
  rm -f "/d/emacs-build/install/emacs-30-c71a52/share/man/man1/${dest}.gz"; \
   -9n "/d/emacs-build/install/emacs-30-c71a52/share/man/man1/${dest}" || true; \
done
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/nt'
  RC       emacs.res
  GEN      malloc/dynarray.gl.h
tmp=etc/emacs.tmpdesktop; rm -f ${tmp}; \
sed -e "/^Exec=emacs/ s/emacs/`echo emacs | sed 's,x,x,'`/" \
  -e "/^Icon=emacs/ s/emacs/`echo emacs | sed 's,x,x,'`/" \
  -e "/^StartupNotify=true$/d" \
  ./etc/emacs.desktop > ${tmp}; \
/usr/bin/install -c -m 644 ${tmp} "/d/emacs-build/install/emacs-30-c71a52/share/applications/`echo emacs | sed 's,x,x,'`.desktop"; \
rm -f ${tmp}
  CCLD     addpm.exe
  GEN      malloc/dynarray-skeleton.gl.h
  CCLD     cmdproxy.exe
  GEN      ieee754.h
  CCLD     ddeclient.exe
  GEN      limits.h
  GEN      stdckdint.h
  CCLD     runemacs.exe
  GEN      stddef.h
  GEN      stdint.h
  GEN      string.h
  GEN      sys/random.h
  GEN      time.h
tmp=etc/emacsclient.tmpdesktop; rm -f ${tmp}; \
client_name=`echo emacsclient | sed 's,x,x,'`.exe; \
sed -e "/^Exec=/ s|emacsclient|/d/emacs-build/install/emacs-30-c71a52/bin/${client_name}|" \
  -e "/^Icon=emacs/ s/emacs/`echo emacs | sed 's,x,x,'`/" \
  -e "/^StartupNotify=true$/d" \
  ./etc/emacsclient.desktop > ${tmp}; \
/usr/bin/install -c -m 644 ${tmp} "/d/emacs-build/install/emacs-30-c71a52/share/applications/${client_name}.desktop"; \
rm -f ${tmp}
  CC       fingerprint.o
  CC       acl_entries.o
  CC       memmem.o
  CC       mktime.o
  CC       binary-io.o
  CC       c-ctype.o
  CC       c-strcasecmp.o
  CC       c-strncasecmp.o
  CC       close-stream.o
  CC       count-leading-zeros.o
  CC       count-one-bits.o
  CC       count-trailing-zeros.o
  CC       md5-stream.o
tmp=etc/emacs-mail.tmpdesktop; rm -f ${tmp}; \
sed -e "/^Exec=emacs/ s/emacs/`echo emacs | sed 's,x,x,'`/" \
  -e "/^Icon=emacs/ s/emacs/`echo emacs | sed 's,x,x,'`/" \
  ./etc/emacs-mail.desktop > ${tmp}; \
/usr/bin/install -c -m 644 ${tmp} "/d/emacs-build/install/emacs-30-c71a52/share/applications/`echo emacs | sed 's,x,x,'`-mail.desktop"; \
rm -f ${tmp}
  CC       md5.o
  CC       sha1.o
  CC       sha256.o
  CC       sha512.o
  CC       dtoastr.o
  CC       dtotimespec.o
  CC       execinfo.o
  CC       filemode.o
  CC       filevercmp.o
  CC       fpending.o
  CC       getopt.o
  CC       getopt1.o
  CC       getrandom.o
  CC       gettime.o
  CC       gettimeofday.o
  CC       malloc/dynarray_at_failure.o
  CC       malloc/dynarray_emplace_enlarge.o
  CC       malloc/dynarray_finalize.o
tmp=etc/emacsclient-mail.tmpdesktop; rm -f ${tmp}; \
client_name=`echo emacsclient | sed 's,x,x,'`.exe; \
sed -e "/^Exec=/ s|emacsclient|/d/emacs-build/install/emacs-30-c71a52/bin/${client_name}|" \
  -e "/^Icon=emacs/ s/emacs/`echo emacs | sed 's,x,x,'`/" \
  ./etc/emacsclient-mail.desktop > ${tmp}; \
/usr/bin/install -c -m 644 ${tmp} "/d/emacs-build/install/emacs-30-c71a52/share/applications/${client_name}-mail.desktop"; \
rm -f ${tmp}
  CC       malloc/dynarray_resize.o
  CC       malloc/dynarray_resize_clear.o
  CC       memrchr.o
  CC       memset_explicit.o
  CC       mkostemp.o
  CC       nstrftime.o
  CC       qcopy-acl.o
  CC       regex.o
  CC       sig2str.o
  CC       sigdescr_np.o
  CC       stat-time.o
  CC       stpcpy.o
  CC       tempname.o
  CC       time_r.o
umask 022; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/share/metainfo"
tmp=etc/emacs.tmpmetainfo; rm -f ${tmp}; \
sed -e "s/emacs\.desktop/`echo emacs | sed 's,x,x,'`.desktop/" \
  ./etc/emacs.metainfo.xml > ${tmp}; \
/usr/bin/install -c -m 644 ${tmp} "/d/emacs-build/install/emacs-30-c71a52/share/metainfo/`echo emacs | sed 's,x,x,'`.metainfo.xml"; \
rm -f ${tmp}
  CC       time_rz.o
  CC       timegm.o
  CC       timespec.o
  CC       timespec-add.o
  CC       timespec-sub.o
  CC       u64.o
umask 022; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/lib/systemd/user"
tmp=etc/emacs.tmpservice; rm -f ${tmp}; \
client_name=`echo emacsclient | sed 's,x,x,'`.exe; \
sed -e '/^##/d' \
  -e "/^Documentation/ s/emacs(1)/`echo emacs | sed 's,x,x,'`(1)/" \
  -e "/^ExecStart/ s|emacs|/d/emacs-build/install/emacs-30-c71a52/bin/`echo emacs | sed 's,x,x,'`.exe|" \
  -e "/^ExecStop/ s|emacsclient|/d/emacs-build/install/emacs-30-c71a52/bin/${client_name}|" \
  ./etc/emacs.service > ${tmp}; \
/usr/bin/install -c -m 644 ${tmp} "/d/emacs-build/install/emacs-30-c71a52/lib/systemd/user/`echo emacs | sed 's,x,x,'`.service"; \
rm -f ${tmp}
thisdir=`pwd -P`; \
cd ./etc/images/icons || exit 1; umask 022 ; \
for dir in */*/apps */*/mimetypes; do \
  [ -d ${dir} ] || continue ; \
  ( cd "${thisdir}"; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/share/icons/${dir}" ) ; \
  for icon in ${dir}/emacs[.-]*; do \
    [ -r ${icon} ] || continue ; \
    ext=`echo "${icon}" | sed -e 's|.*\.||'`; \
    dest=`echo "${icon}" | sed -e 's|.*/||' -e "s|\\.${ext}\$||" -e 's/emacs/emacs/' -e 's,x,x,'`.${ext} ; \
    ( cd "${thisdir}"; \
      /usr/bin/install -c -m 644 ./etc/images/icons/${icon} "/d/emacs-build/install/emacs-30-c71a52/share/icons/${dir}/${dest}" ) \
    || exit 1; \
  done ; \
done

Installing utilities run internally by Emacs.
umask 022; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/libexec/emacs/30.0.50/x86_64-w64-mingw32"
exp_archlibdir=`cd "/d/emacs-build/install/emacs-30-c71a52/libexec/emacs/30.0.50/x86_64-w64-mingw32" && pwd -P`; \
if [ "$exp_archlibdir" != "`pwd -P`" ]; then \
  for file in cmdproxy.exe ddeclient.exe; do \
    /usr/bin/install -c  $file "/d/emacs-build/install/emacs-30-c71a52/libexec/emacs/30.0.50/x86_64-w64-mingw32/$file" ; \
  done ; \
        fi

Installing utilities for users to run.
umask 022; /usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/bin"
for file in runemacs.exe addpm.exe ; do \
  /usr/bin/install -c  ${file} "/d/emacs-build/install/emacs-30-c71a52/bin"/`echo ${file} | sed -e 's/.exe$//' -e 's,x,x,'`.exe ; \
done
/usr/bin/mkdir -p "/d/emacs-build/install/emacs-30-c71a52/share/emacs/30.0.50"
/usr/bin/install -c -m 644 ./README.W32 "/d/emacs-build/install/emacs-30-c71a52/share/emacs/30.0.50"
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/nt'
  AR       libgnu.a
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/lib'
make -C nt all
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/nt'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/nt'
make -C lib-src all
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/lib-src'
  CC       ntlib.o
  RC       emacsclient.res
  CC       pop.o
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/doc/lispintro'
  CCLD     etags.exe
  CCLD     ctags.exe
  CCLD     emacsclient.exe
  CCLD     emacsclientw.exe
  CCLD     ebrowse.exe
  CCLD     hexl.exe
  CCLD     movemail.exe
  CCLD     make-docfile.exe
  CCLD     make-fingerprint.exe
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/lib-src'
make -C src BIN_DESTDIR=''/d/emacs-build/install/emacs-30-c71a52/bin/'' \
	 ELN_DESTDIR='/d/emacs-build/install/emacs-30-c71a52/lib/emacs/30.0.50/' all
make[1]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/src'
  GEN      /c/users/corwi/emacs-build/git/emacs-30/src/lisp.mk
  GEN      globals.h
  GEN      buildobj.h
make -C ../nt ../src/emacs.res
make -C ../admin/charsets all
make -C ../admin/unidata charscript.el
make[2]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/nt'
  RC       ../src/emacs.res
make -C ../admin/unidata emoji-zwj.el
make[2]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/admin/unidata'
make[2]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/admin/charsets'
  GEN      ../../etc/charsets/8859-2.map
make[2]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/admin/unidata'
  GEN      ../../etc/charsets/8859-3.map
  GEN      ../../etc/charsets/8859-4.map
make -C ../admin/charsets cp51932.el
  GEN      ../../etc/charsets/8859-5.map
make -C ../admin/charsets eucjp-ms.el
  GEN      ../../etc/charsets/8859-6.map
  GEN      ../../etc/charsets/8859-7.map
make[2]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/admin/charsets'
  GEN      ../../etc/charsets/CP932-2BYTE.map
make[2]: Entering directory '/c/users/corwi/emacs-build/git/emacs-30/admin/charsets'
  GEN      ../../lisp/international/eucjp-ms.el
  GEN      ../../etc/charsets/8859-8.map
  GEN      ../../etc/charsets/8859-9.map
make[2]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/nt'
  GEN      ../../lisp/international/charscript.el
  GEN      ../../lisp/international/emoji-zwj.el
  GEN      ../../etc/charsets/8859-10.map
  GEN      ../../etc/charsets/8859-11.map
  GEN      ../../etc/charsets/8859-13.map
  GEN      ../../etc/charsets/8859-14.map
  GEN      ../../etc/charsets/8859-15.map
make[2]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/admin/unidata'
  GEN      ../../etc/charsets/8859-16.map
make[2]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/admin/unidata'
make[2]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/admin/charsets'
  GEN      ../../etc/charsets/IBM037.map
  GEN      ../../etc/charsets/IBM038.map
  GEN      ../../etc/charsets/IBM256.map
  GEN      ../../etc/charsets/IBM273.map
  GEN      ../../etc/charsets/IBM274.map
  GEN      ../../etc/charsets/IBM275.map
  GEN      ../../lisp/international/cp51932.el
  GEN      ../../etc/charsets/IBM277.map
  GEN      ../../etc/charsets/IBM278.map
  GEN      ../../etc/charsets/IBM280.map
  GEN      ../../etc/charsets/IBM281.map
  GEN      ../../etc/charsets/IBM284.map
  GEN      ../../etc/charsets/IBM285.map
make[2]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/admin/charsets'
  GEN      ../../etc/charsets/IBM290.map
  GEN      ../../etc/charsets/IBM297.map
  GEN      ../../etc/charsets/IBM420.map
  GEN      ../../etc/charsets/IBM423.map
  GEN      ../../etc/charsets/IBM424.map
  GEN      ../../etc/charsets/IBM437.map
  GEN      ../../etc/charsets/IBM500.map
  GEN      ../../etc/charsets/IBM850.map
  GEN      ../../etc/charsets/IBM851.map
  GEN      ../../etc/charsets/IBM852.map
  GEN      ../../etc/charsets/IBM855.map
  GEN      ../../etc/charsets/IBM856.map
  CC       firstfile.o
  GEN      ../../etc/charsets/IBM857.map
  CC       dispnew.o
  GEN      ../../etc/charsets/IBM860.map
  CC       frame.o
  GEN      ../../etc/charsets/IBM861.map
  CC       scroll.o
  GEN      ../../etc/charsets/IBM862.map
  CC       xdisp.o
  GEN      ../../etc/charsets/IBM863.map
  CC       menu.o
  GEN      ../../etc/charsets/IBM864.map  CC       window.o

  GEN      ../../etc/charsets/IBM865.map
  GEN      ../../etc/charsets/IBM866.map
  CC       charset.o
  GEN      ../../etc/charsets/IBM868.map
  CC       coding.o
  GEN      ../../etc/charsets/IBM869.map
  GEN      ../../etc/charsets/IBM870.map
  CC       category.o
  GEN      ../../etc/charsets/IBM871.map
  CC       ccl.o
  CC       character.o
  GEN      ../../etc/charsets/IBM874.map
  CC       chartab.o
  GEN      ../../etc/charsets/IBM875.map
  CC       bidi.o
  CC       term.o
  CC       terminal.o
  GEN      ../../etc/charsets/IBM880.map
  CC       xfaces.o
  CC       emacs.o
  GEN      ../../etc/charsets/IBM891.map
  GEN      ../../etc/charsets/IBM903.map
  GEN      ../../etc/charsets/IBM904.map
  CC       keyboard.o
  CC       macros.o
  GEN      ../../etc/charsets/IBM905.map
  CC       keymap.o
  GEN      ../../etc/charsets/IBM918.map
  CC       sysdep.o
  GEN      ../../etc/charsets/IBM1004.map
  CC       bignum.o
  GEN      ../../etc/charsets/IBM1026.map
  CC       buffer.o
  GEN      ../../etc/charsets/IBM1047.map
  GEN      ../../etc/charsets/CP737.map
  GEN      ../../etc/charsets/CP775.map
  CC       filelock.o
  CC       insdel.o
  GEN      ../../etc/charsets/CP1125.map
  GEN      ../../etc/charsets/CP1250.map
  GEN      ../../etc/charsets/CP1251.map
  CC       marker.o
  GEN      ../../etc/charsets/CP1252.map
  GEN      ../../etc/charsets/CP1253.map
  CC       minibuf.o
  CC       fileio.o
  GEN      ../../etc/charsets/CP1254.map
  CC       dired.o
  GEN      ../../etc/charsets/CP1255.map
  CC       cmds.o
  GEN      ../../etc/charsets/CP1256.map
  CC       casetab.o
  GEN      ../../etc/charsets/CP1257.map
  CC       casefiddle.o
  GEN      ../../etc/charsets/CP1258.map
  CC       indent.o
  CC       search.o
fileio.c: In function 'internal_delete_file':
fileio.c:2601:36: warning: passing argument 1 of 'internal_condition_case_2' from incompatible pointer type [-Wincompatible-pointer-types]
 2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
      |                                    ^~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    struct Lisp_X * (*)(struct Lisp_X *)
In file included from fileio.c:49:
lisp.h:4582:47: note: expected 'struct Lisp_X * (*)(struct Lisp_X *, struct Lisp_X *)' but argument is of type 'struct Lisp_X * (*)(struct Lisp_X *)'
 4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fileio.c:2602:40: warning: passing argument 4 of 'internal_condition_case_2' from incompatible pointer type [-Wincompatible-pointer-types]
 2602 |                                    Qt, internal_delete_file_1);
      |                                        ^~~~~~~~~~~~~~~~~~~~~~
      |                                        |
      |                                        struct Lisp_X * (*)(struct Lisp_X *)
In file included from fileio.c:49:
lisp.h:4582:117: note: expected 'Lisp_Object' {aka 'struct Lisp_X *'} but argument is of type 'struct Lisp_X * (*)(struct Lisp_X *)'
 4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
      |                                                                                                                     ^~~~~~~~~~~
fileio.c:2601:9: error: too few arguments to function 'internal_condition_case_2'
 2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fileio.c:49:
lisp.h:4582:20: note: declared here
 4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object));
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
  GEN      ../../etc/charsets/CP10007.map
  CC       regex-emacs.o
  GEN      ../../etc/charsets/CP720.map
  GEN      ../../etc/charsets/CP858.map
  CC       undo.o
make[1]: *** [Makefile:455: fileio.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  GEN      ../../etc/charsets/GB2312.map
  GEN      ../../etc/charsets/GBK.map
  GEN      ../../etc/charsets/GB180302.map
  GEN      ../../etc/charsets/BIG5.map
  GEN      ../../etc/charsets/BIG5-HKSCS.map
  GEN      ../../etc/charsets/CNS-1.map
  GEN      ../../etc/charsets/CNS-2.map
  GEN      ../../etc/charsets/CNS-3.map
  GEN      ../../etc/charsets/CNS-4.map
  GEN      ../../etc/charsets/CNS-5.map
  GEN      ../../etc/charsets/CNS-6.map
  GEN      ../../etc/charsets/CNS-7.map
  GEN      ../../etc/charsets/CNS-F.map
  GEN      ../../etc/charsets/JISX0201.map
  GEN      ../../etc/charsets/JISX0208.map
  GEN      ../../etc/charsets/JISX0212.map
  GEN      ../../etc/charsets/JISX2132.map
  GEN      ../../etc/charsets/JISC6226.map
  GEN      ../../etc/charsets/JISX213A.map
  GEN      ../../etc/charsets/KSC5601.map
  GEN      ../../etc/charsets/KSC5636.map
  GEN      ../../etc/charsets/JOHAB.map
  GEN      ../../etc/charsets/KOI-8.map
  GEN      ../../etc/charsets/KOI8-R.map
  GEN      ../../etc/charsets/KOI8-U.map
  GEN      ../../etc/charsets/KOI8-T.map
  GEN      ../../etc/charsets/ALTERNATIVNYJ.map
  GEN      ../../etc/charsets/MIK.map
  GEN      ../../etc/charsets/PTCP154.map
  GEN      ../../etc/charsets/TIS-620.map
  GEN      ../../etc/charsets/VISCII.map
  GEN      ../../etc/charsets/VSCII.map
  GEN      ../../etc/charsets/VSCII-2.map
  GEN      ../../etc/charsets/KA-PS.map
  GEN      ../../etc/charsets/KA-ACADEMY.map
  GEN      ../../etc/charsets/HP-ROMAN8.map
  GEN      ../../etc/charsets/NEXTSTEP.map
  GEN      ../../etc/charsets/MACINTOSH.map
  GEN      ../../etc/charsets/EBCDICUK.map
  GEN      ../../etc/charsets/EBCDICUS.map
  GEN      ../../etc/charsets/stdenc.map
  GEN      ../../etc/charsets/symbol.map
  GEN      ../../etc/charsets/CP949-2BYTE.map
  GEN      ../../etc/charsets/BIG5-1.map
  GEN      ../../etc/charsets/BIG5-2.map
  GEN      ../../etc/charsets/MULE-ethiopic.map
  GEN      ../../etc/charsets/MULE-ipa.map
  GEN      ../../etc/charsets/MULE-is13194.map
  GEN      ../../etc/charsets/MULE-sisheng.map
  GEN      ../../etc/charsets/MULE-tibetan.map
  GEN      ../../etc/charsets/MULE-lviscii.map
  GEN      ../../etc/charsets/MULE-uviscii.map
  GEN      ../../etc/charsets/GB180304.map
  GEN      ../../etc/charsets/JISX2131.map
  GEN      charsets.stamp
make[2]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/admin/charsets'
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/doc/emacs'
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/src'
make: *** [Makefile:554: src] Error 2
make: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/c/users/corwi/emacs-build/git/emacs-30/doc/lispref'

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

* Re: Android port
  2023-08-07  8:19                                                                                                 ` Corwin Brust
@ 2023-08-07  8:44                                                                                                   ` Po Lu
  2023-08-07 11:11                                                                                                     ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Po Lu @ 2023-08-07  8:44 UTC (permalink / raw)
  To: Corwin Brust; +Cc: Angelo Graziosi, Eli Zaretskii, bruno, eggert, emacs-devel

Corwin Brust <corwin@bru.st> writes:

> On Mon, Aug 7, 2023 at 2:22 AM Po Lu <luangruo@yahoo.com> wrote:
>>
>> Angelo Graziosi <angelo.g0@libero.it> writes:
>>
>> > maybe we have to test master now. Right?
>>
>> It works, since the printf module has been removed.
>>
>
> I'm not able to build the master branch starting from c71a52, here is
> the relevant part of the log (attached), which starts with autogen &&
> configure prior to the make, which failed:
>
>   GEN      ../../etc/charsets/CP1258.map
>   CC       indent.o
>   CC       search.o
> fileio.c: In function 'internal_delete_file':
> fileio.c:2601:36: warning: passing argument 1 of
> 'internal_condition_case_2' from incompatible pointer type
> [-Wincompatible-pointer-types]
>  2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
>       |                                    ^~~~~~~~~~~~~~~~~~~~~
>       |                                    |
>       |                                    struct Lisp_X * (*)(struct Lisp_X *)
> In file included from fileio.c:49:
> lisp.h:4582:47: note: expected 'struct Lisp_X * (*)(struct Lisp_X *,
> struct Lisp_X *)' but argument is of type 'struct Lisp_X * (*)(struct
> Lisp_X *)'
>  4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
> (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
> Lisp_Object (*) (Lisp_Object));
>       |
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> fileio.c:2602:40: warning: passing argument 4 of
> 'internal_condition_case_2' from incompatible pointer type
> [-Wincompatible-pointer-types]
>  2602 |                                    Qt, internal_delete_file_1);
>       |                                        ^~~~~~~~~~~~~~~~~~~~~~
>       |                                        |
>       |                                        struct Lisp_X *
> (*)(struct Lisp_X *)
> In file included from fileio.c:49:
> lisp.h:4582:117: note: expected 'Lisp_Object' {aka 'struct Lisp_X *'}
> but argument is of type 'struct Lisp_X * (*)(struct Lisp_X *)'
>  4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
> (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
> Lisp_Object (*) (Lisp_Object));
>       |
>                                                      ^~~~~~~~~~~
> fileio.c:2601:9: error: too few arguments to function
> 'internal_condition_case_2'
>  2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
>       |         ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from fileio.c:49:
> lisp.h:4582:20: note: declared here
>  4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
> (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
> Lisp_Object (*) (Lisp_Object));
>       |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
>   GEN      ../../etc/charsets/CP10007.map
>   CC       regex-emacs.o
>   GEN      ../../etc/charsets/CP720.map
>   GEN      ../../etc/charsets/CP858.map
>   CC       undo.o
> make[1]: *** [Makefile:455: fileio.o] Error 1
> make[1]: *** Waiting for unfinished jobs....
>
> Let me know if there's other information/digging I might provide.
>
> Note, I updated my script to add V=1 for make in the future.

I think this is a problem with the fileio stuff Eric installed earlier
instead of the Android port.  Simply one of the many hazards of
indiscriminately translating working C to Elisp...



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

* Re: Android port
  2023-08-07  8:44                                                                                                   ` Po Lu
@ 2023-08-07 11:11                                                                                                     ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-07 11:11 UTC (permalink / raw)
  To: Po Lu; +Cc: corwin, angelo.g0, bruno, eggert, emacs-devel

> From: Po Lu <luangruo@yahoo.com>
> Cc: Angelo Graziosi <angelo.g0@libero.it>,  Eli Zaretskii <eliz@gnu.org>,
>   bruno@clisp.org,  eggert@cs.ucla.edu,  emacs-devel@gnu.org
> Date: Mon, 07 Aug 2023 16:44:46 +0800
> 
> Corwin Brust <corwin@bru.st> writes:
> 
> > On Mon, Aug 7, 2023 at 2:22 AM Po Lu <luangruo@yahoo.com> wrote:
> >>
> >> Angelo Graziosi <angelo.g0@libero.it> writes:
> >>
> >> > maybe we have to test master now. Right?
> >>
> >> It works, since the printf module has been removed.
> >>
> >
> > I'm not able to build the master branch starting from c71a52, here is
> > the relevant part of the log (attached), which starts with autogen &&
> > configure prior to the make, which failed:
> >
> >   GEN      ../../etc/charsets/CP1258.map
> >   CC       indent.o
> >   CC       search.o
> > fileio.c: In function 'internal_delete_file':
> > fileio.c:2601:36: warning: passing argument 1 of
> > 'internal_condition_case_2' from incompatible pointer type
> > [-Wincompatible-pointer-types]
> >  2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
> >       |                                    ^~~~~~~~~~~~~~~~~~~~~
> >       |                                    |
> >       |                                    struct Lisp_X * (*)(struct Lisp_X *)
> > In file included from fileio.c:49:
> > lisp.h:4582:47: note: expected 'struct Lisp_X * (*)(struct Lisp_X *,
> > struct Lisp_X *)' but argument is of type 'struct Lisp_X * (*)(struct
> > Lisp_X *)'
> >  4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
> > (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
> > Lisp_Object (*) (Lisp_Object));
> >       |
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > fileio.c:2602:40: warning: passing argument 4 of
> > 'internal_condition_case_2' from incompatible pointer type
> > [-Wincompatible-pointer-types]
> >  2602 |                                    Qt, internal_delete_file_1);
> >       |                                        ^~~~~~~~~~~~~~~~~~~~~~
> >       |                                        |
> >       |                                        struct Lisp_X *
> > (*)(struct Lisp_X *)
> > In file included from fileio.c:49:
> > lisp.h:4582:117: note: expected 'Lisp_Object' {aka 'struct Lisp_X *'}
> > but argument is of type 'struct Lisp_X * (*)(struct Lisp_X *)'
> >  4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
> > (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
> > Lisp_Object (*) (Lisp_Object));
> >       |
> >                                                      ^~~~~~~~~~~
> > fileio.c:2601:9: error: too few arguments to function
> > 'internal_condition_case_2'
> >  2601 |   tem = internal_condition_case_2 (Fdelete_file_internal, filename,
> >       |         ^~~~~~~~~~~~~~~~~~~~~~~~~
> > In file included from fileio.c:49:
> > lisp.h:4582:20: note: declared here
> >  4582 | extern Lisp_Object internal_condition_case_2 (Lisp_Object (*)
> > (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object,
> > Lisp_Object (*) (Lisp_Object));
> >       |                    ^~~~~~~~~~~~~~~~~~~~~~~~~
> >   GEN      ../../etc/charsets/CP10007.map
> >   CC       regex-emacs.o
> >   GEN      ../../etc/charsets/CP720.map
> >   GEN      ../../etc/charsets/CP858.map
> >   CC       undo.o
> > make[1]: *** [Makefile:455: fileio.o] Error 1
> > make[1]: *** Waiting for unfinished jobs....
> >
> > Let me know if there's other information/digging I might provide.
> >
> > Note, I updated my script to add V=1 for make in the future.
> 
> I think this is a problem with the fileio stuff Eric installed earlier
> instead of the Android port.  Simply one of the many hazards of
> indiscriminately translating working C to Elisp...

Actually, it's partially my fault: I made a mistake in my fix of
Eric's changeset.  I hope it's fixed now on master.



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

* Re: Android port
  2023-08-07  0:49                                                             ` Po Lu
@ 2023-08-07 11:19                                                               ` Eli Zaretskii
  2023-08-07 12:03                                                                 ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-07 11:19 UTC (permalink / raw)
  To: Po Lu; +Cc: eggert, angelo.g0, emacs-devel, bruno

> From: Po Lu <luangruo@yahoo.com>
> Cc: Paul Eggert <eggert@cs.ucla.edu>,  angelo.g0@libero.it,
>   emacs-devel@gnu.org,  bruno@clisp.org
> Date: Mon, 07 Aug 2023 08:49:35 +0800
> 
> Po Lu <luangruo@yahoo.com> writes:
> 
> > Eli Zaretskii <eliz@gnu.org> writes:
> >
> >>> Date: Sun, 6 Aug 2023 10:44:09 -0700
> >>> Cc: Eli Zaretskii <eliz@gnu.org>, angelo.g0@libero.it, emacs-devel@gnu.org,
> >>>  Bruno Haible <bruno@clisp.org>
> >>> From: Paul Eggert <eggert@cs.ucla.edu>
> >>> 
> >>> I understand the reluctance from the Android point of view. However, 
> >>> printf-posix imports 69 new source files to Emacs, and these files have 
> >>> not been tested extensively with Emacs on non-Android platforms. From 
> >>> the viewpoint of non-Android Emacs platforms, it's significantly less 
> >>> disruptive if merging the Android branch does not add 69 new source 
> >>> files that will require testing on these platforms.
> >>> 
> >>> And even from the Android viewpoint, no matter what we do to fix the 
> >>> problem some testing needs to be done anyway, as the fix is likely to 
> >>> affect Emacs in test-relevant ways.
> >>
> >> I think Paul makes a good point here about those modules not being
> >> tested in Emacs on other platforms.  Avoiding addition of 69 files to
> >> Emacs is also a non-trivial gain.
> >>
> >> Since Emacs 30.1 will not be released any time soon, I think we will
> >> have ample time to test it without the *printf modules, and find out
> >> and fix any issues this could create.
> >>
> >> So I suggest to give this solution a chance.
> >>
> >>> The idea is to get feature/android merged quickly. We can revisit the 
> >>> use of Gnulib's printf-posix module later, as needed. With luck 
> >>> printf-posix won't be needed, as Emacs historically has avoided use of 
> >>> unusual printf features (for obvious portability reasons).
> >>
> >> Right.
> >
> > I plan to quickly test this on some old versions of Android and ack.
> 
> Cursory inspection indicates that Emacs functions correctly without the
> *printf modules on Android 2.3, 4.0.1 and 4.4, so I've ommitted the
> modules and merged the branch to master, after removing the w32-specific
> code that disables them.

Thanks.  It looks like nt/gnulib-cfg.mk still names modules that were
eventually removed?  Could you please audit the modules added to
gnulib-cfg.mk and remove the lines that are no longer needed on
master?



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

* Re: Android port
  2023-08-07  7:20                                                                                             ` Angelo Graziosi
  2023-08-07  7:22                                                                                               ` Po Lu
@ 2023-08-07 11:22                                                                                               ` Eli Zaretskii
  2023-08-07 12:03                                                                                                 ` Angelo Graziosi
  1 sibling, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-07 11:22 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: luangruo, bruno, eggert, emacs-devel

> Date: Mon, 7 Aug 2023 09:20:56 +0200 (CEST)
> From: Angelo Graziosi <angelo.g0@libero.it>
> Cc: luangruo@yahoo.com, bruno@clisp.org, eggert@cs.ucla.edu,
> 	emacs-devel@gnu.org
> 
> 
> > Il 07/08/2023 04:26 CEST Eli Zaretskii ha scritto:
> > 
> > 
> > The last one should be
> > 
> >   ac_cv_func_vasnprintf=yes
> > 
> > Anyway, thank you for your efforts.
> 
> maybe we have to test master now. Right?

Right, thanks.



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

* Re: Android port
  2023-08-07 11:19                                                               ` Eli Zaretskii
@ 2023-08-07 12:03                                                                 ` Eli Zaretskii
  2023-08-07 14:47                                                                   ` Eli Zaretskii
  0 siblings, 1 reply; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-07 12:03 UTC (permalink / raw)
  To: luangruo; +Cc: eggert, emacs-devel

> Date: Mon, 07 Aug 2023 14:19:57 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: eggert@cs.ucla.edu, angelo.g0@libero.it, emacs-devel@gnu.org,
>  bruno@clisp.org
> 
> Thanks.  It looks like nt/gnulib-cfg.mk still names modules that were
> eventually removed?  Could you please audit the modules added to
> gnulib-cfg.mk and remove the lines that are no longer needed on
> master?

Also, it looks like neither ENABLE_CHECKING nor GLYPH_DEBUG are being
defined in src/config.h in the non-Android builds, although I passed
the --enable-checking-'yes,glyphs' option to the configure script.
This has something to do with this snippet of configure.ac:

  AS_IF([test "x$XCONFIGURE" = "xandroid" \
	 && test "x$android_enable_checking" = "xyes"],
    [ac_enable_checking=yes])

  # There is little point in enabling checking in the build machine if
  # cross-compiling for Android.
  AS_IF([test -z "$with_android" || test -n "$XCONFIGURE"],[
    if test x$ac_enable_checking != x ; then
      AC_DEFINE([ENABLE_CHECKING], [1],
    [Define to 1 if expensive run-time data type and consistency checks are enabled.])
    fi

It generates the following code in configure:

  # This environment variable is used to signal that checking should be
  # enabled on Android.  When that happens, simply enable checking for
  # the cross-compiled Android binary.

  if test "x$XCONFIGURE" = "xandroid" \
	 && test "x$android_enable_checking" = "xyes"; then :  <<<<<<<<<<<<
    ac_enable_checking=yes
  fi

  # There is little point in enabling checking in the build machine if
  # cross-compiling for Android.
  if test -z "$with_android" || test -n "$XCONFIGURE"; then :  <<<<<<<<<<<<

    if test x$ac_enable_checking != x ; then

  $as_echo "#define ENABLE_CHECKING 1" >>confdefs.h

    fi

and I believe that those colons ':' after 'then' are the culprit.  But
my Autoconf-fu is not strong enough to see what has to be done to fix
this.



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

* Re: Android port
  2023-08-07 11:22                                                                                               ` Eli Zaretskii
@ 2023-08-07 12:03                                                                                                 ` Angelo Graziosi
  2023-08-07 15:48                                                                                                   ` Corwin Brust
  0 siblings, 1 reply; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-07 12:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: luangruo, bruno, eggert, emacs-devel

> Il 07/08/2023 13:22 CEST Eli Zaretskii ha scritto:
> 
>  
> > Date: Mon, 7 Aug 2023 09:20:56 +0200 (CEST)
> > From: Angelo Graziosi <angelo.g0@libero.it>
> > Cc: luangruo@yahoo.com, bruno@clisp.org, eggert@cs.ucla.edu,
> > 	emacs-devel@gnu.org
> > 
> > 
> > > Il 07/08/2023 04:26 CEST Eli Zaretskii ha scritto:
> > > 
> > > 
> > > The last one should be
> > > 
> > >   ac_cv_func_vasnprintf=yes
> > > 
> > > Anyway, thank you for your efforts.
> > 
> > maybe we have to test master now. Right?
> 
> Right, thanks.

I have built master commit-7fb0248a33dc721ae570c294b04f6da94cd96b10 (20230807_130156) without issues..



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

* Re: Android port
  2023-08-07 12:03                                                                 ` Eli Zaretskii
@ 2023-08-07 14:47                                                                   ` Eli Zaretskii
  0 siblings, 0 replies; 205+ messages in thread
From: Eli Zaretskii @ 2023-08-07 14:47 UTC (permalink / raw)
  To: luangruo; +Cc: eggert, emacs-devel

> Date: Mon, 07 Aug 2023 15:03:18 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> CC: eggert@cs.ucla.edu, emacs-devel@gnu.org
> 
> Also, it looks like neither ENABLE_CHECKING nor GLYPH_DEBUG are being
> defined in src/config.h in the non-Android builds, although I passed
> the --enable-checking-'yes,glyphs' option to the configure script.
> This has something to do with this snippet of configure.ac:

No, it was because the Android test was incorrect.  Now fixed.

Btw, I don't think I understand the "test -n" part here:

  # There is little point in enabling checking in the build machine if
  # cross-compiling for Android.
  AS_IF([test "$with_android" = no || test -n "$XCONFIGURE"],[
    if test x$ac_enable_checking != x ; then
      AC_DEFINE([ENABLE_CHECKING], [1],
    [Define to 1 if expensive run-time data type and consistency checks are enabled.])
    fi

It sounds like "test -n" there contradicts the comment: AFAIK non-zero
length of $XCONFIGURE means we _are_ cross-compiling, and the comment
says we don't want ENABLE_CHECKING in that case.

Or maybe I don't understand the comment?



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

* Re: Android port
  2023-08-07 12:03                                                                                                 ` Angelo Graziosi
@ 2023-08-07 15:48                                                                                                   ` Corwin Brust
  0 siblings, 0 replies; 205+ messages in thread
From: Corwin Brust @ 2023-08-07 15:48 UTC (permalink / raw)
  To: Angelo Graziosi; +Cc: Eli Zaretskii, luangruo, bruno, eggert, emacs-devel

On Mon, Aug 7, 2023 at 7:03 AM Angelo Graziosi <angelo.g0@libero.it> wrote:
>
> I have built master commit-7fb0248a33dc721ae570c294b04f6da94cd96b10 (20230807_130156) without issues..
>

Me too (actually, I built the slightly newer a95253). Here are
installer and zips in case anyone else would like to try spotting
trouble:

  https://corwin.bru.st/emacs-30/emacs-30-a95253/

LGTM!

In GNU Emacs 30.0.50 (build 1, x86_64-w64-mingw32) of 2023-08-07 built
 on AVALON
Repository revision: a95253f5cc1105619f6f93585dd41288f93384e4
Repository branch: master
Windowing system distributor 'Microsoft Corp.', version 10.0.19045
System Description: Microsoft Windows 10 Home (v10.0.2009.19045.3271)

Configured using:
 'configure --with-modules --without-dbus --with-native-compilation
 --without-compress-install --with-tree-sitter CFLAGS=-O2'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1252

Major mode: Fundamental

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr comp comp-cstr warnings icons rx cl-seq cl-macs
gv cl-extra help-mode bytecomp byte-compile emacsbug message mailcap
yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache
epa derived epg rfc6068 epg-config gnus-util text-property-search
time-date subr-x mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader cl-loaddefs cl-lib sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win
w32-vars term/common-win touch-screen tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty
move-toolbar make-network-process native-compile emacs)

Memory information:
((conses 16 83477 11861) (symbols 48 7259 0) (strings 32 21655 2060)
 (string-bytes 1 636611) (vectors 16 16731)
 (vector-slots 8 340471 16814) (floats 8 30 63) (intervals 56 352 0)
 (buffers 992 12))



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

* Re: Android port
  2023-07-17  8:30                                       ` Po Lu
@ 2023-08-31  5:51                                         ` Jean Louis
  2023-08-31 10:27                                           ` Angelo Graziosi
  0 siblings, 1 reply; 205+ messages in thread
From: Jean Louis @ 2023-08-31  5:51 UTC (permalink / raw)
  To: Po Lu; +Cc: Angelo Graziosi, emacs-devel@gnu.org

* Po Lu <luangruo@yahoo.com> [2023-07-17 11:33]:
> Angelo Graziosi <angelo.g0@libero.it> writes:
> 
> > There it says we have to uninstall the current Android port and Termux. 
> 
> Android doesn't allow updating packages with a different signature or
> shared user ID.
> 
> > Really you mean we have to reinstall Termux from scratch with **ALL*
> > packages we have installed for years? and their configurations and so
> > on?

Are you sure? Termux and Emacs for Android should be working together
without problem, together with Emacs inside of Termux.


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



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

* Re: Android port
  2023-08-31  5:51                                         ` Jean Louis
@ 2023-08-31 10:27                                           ` Angelo Graziosi
  0 siblings, 0 replies; 205+ messages in thread
From: Angelo Graziosi @ 2023-08-31 10:27 UTC (permalink / raw)
  To: Jean Louis, Po Lu; +Cc: emacs-devel@gnu.org

Jean,

> Il 31/08/2023 07:51 CEST Jean Louis ha scritto:
> 
>  
> * Po Lu [2023-07-17 11:33]:
> > Angelo Graziosi writes:
> > 
> > > There it says we have to uninstall the current Android port and Termux. 
> > 
> > Android doesn't allow updating packages with a different signature or
> > shared user ID.
> > 
> > > Really you mean we have to reinstall Termux from scratch with **ALL*
> > > packages we have installed for years? and their configurations and so
> > > on?
> 
> Are you sure? Termux and Emacs for Android should be working together
> without problem, together with Emacs inside of Termux.

I am a bit confused.. Do you mean that we do not have to reinstall Termux with the Emacs package which, as stated by Po Lu, would request that?

Really I am still using the original Emacs package which does not request to reinstall Termux. Usual I put files in /sdcard/Download and access them from Emacs with C-x C-f /sdcard/Download/foo (maybe also files in /sdcard/emacs_docs should work..)



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

end of thread, other threads:[~2023-08-31 10:27 UTC | newest]

Thread overview: 205+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-18  8:35 Android port Angelo Graziosi
2023-02-18  8:42 ` Po Lu
2023-02-18 21:58   ` Angelo Graziosi
2023-02-19  2:13     ` Po Lu
2023-02-19  9:01       ` Angelo Graziosi
2023-02-19  9:24         ` Dov Grobgeld
2023-02-19 10:17           ` Michael Albinus
2023-02-19 10:55             ` Po Lu
2023-02-19 11:49               ` Michael Albinus
2023-02-19 10:55           ` Po Lu
2023-02-19 11:11             ` Angelo Graziosi
2023-02-19 11:24               ` Peter Oliver
2023-02-19 12:01                 ` Po Lu
2023-02-19 10:40         ` Arsen Arsenović
2023-02-19 10:53         ` Po Lu
2023-02-19 11:19           ` Angelo Graziosi
2023-02-19 11:59             ` Po Lu
2023-02-19 17:10               ` Angelo Graziosi
2023-02-20  2:39                 ` Po Lu
2023-02-20 17:05                   ` Angelo Graziosi
2023-02-21  2:28                     ` Po Lu
2023-02-21 17:39                       ` Angelo Graziosi
2023-02-21 17:51                         ` Jonathan Kenyon
2023-02-21 18:24                           ` Jonathan Kenyon
2023-02-21 18:48                             ` Simon Pugnet
2023-02-22  2:33                               ` Po Lu
2023-02-22  3:21                                 ` Jonathan Kenyon
2023-02-22  3:35                                   ` Po Lu
2023-02-22 14:11                                     ` Po Lu
2023-02-22 15:16                                       ` Simon Pugnet
2023-02-22 16:01                                       ` Angelo Graziosi
2023-02-23 14:47                                       ` Angelo Graziosi
2023-02-24  0:56                                         ` Po Lu
2023-02-24  1:01                                         ` Po Lu
2023-02-24 17:49                                           ` Angelo Graziosi
2023-02-22  2:31                           ` Po Lu
2023-02-22  2:30                         ` Po Lu
2023-02-22  8:04                           ` Angelo Graziosi
2023-02-22  8:31                           ` Angelo Graziosi
2023-03-05 22:03                         ` Angelo Graziosi
2023-03-05 23:57                           ` Po Lu
2023-03-07 15:47                             ` Angelo Graziosi
2023-03-07 23:58                               ` Po Lu
2023-03-08 16:12                                 ` Angelo Graziosi
2023-03-09  1:22                                   ` Po Lu
2023-03-09 16:38                                     ` Angelo Graziosi
2023-07-17  8:21                                     ` Angelo Graziosi
2023-07-17  8:30                                       ` Po Lu
2023-08-31  5:51                                         ` Jean Louis
2023-08-31 10:27                                           ` Angelo Graziosi
2023-07-17  8:40                                       ` Takesi Ayanokoji
2023-07-18  7:31                                         ` Angelo Graziosi
2023-07-18  7:41                                           ` Po Lu
2023-02-19 11:30       ` Peter Oliver
2023-02-18 18:12 ` Jean Louis
2023-02-19  8:31   ` Po Lu
  -- strict thread matches above, loose matches on Subject: below --
2023-08-04  7:42 Angelo Graziosi
2023-08-04  7:54 ` Eli Zaretskii
2023-08-04  9:45   ` Po Lu
2023-08-04 10:40     ` Eli Zaretskii
2023-08-04 12:12       ` Po Lu
2023-08-04 12:59         ` Eli Zaretskii
2023-08-04 13:23           ` Po Lu
2023-08-04 14:00             ` Eli Zaretskii
2023-08-05  0:48               ` Po Lu
2023-08-05  6:39                 ` Eli Zaretskii
2023-08-05  7:00                   ` Po Lu
2023-08-05  8:39                     ` Angelo Graziosi
2023-08-05  9:15                       ` Po Lu
2023-08-05 10:04                   ` Bruno Haible
2023-08-05 11:05                     ` Angelo Graziosi
2023-08-05 11:20                       ` Bruno Haible
2023-08-05 12:06                         ` Angelo Graziosi
2023-08-05 12:12                         ` Eli Zaretskii
2023-08-05 12:16                           ` Po Lu
2023-08-05 12:31                             ` Eli Zaretskii
2023-08-05 12:35                               ` Po Lu
2023-08-05 12:42                                 ` Po Lu
2023-08-05 12:25                           ` Bruno Haible
2023-08-05 12:42                             ` Eli Zaretskii
2023-08-05 12:47                               ` Bruno Haible
2023-08-05 13:00                                 ` Eli Zaretskii
2023-08-05 13:13                                   ` Po Lu
2023-08-05 15:26                                     ` Eli Zaretskii
2023-08-05 15:35                                       ` Eli Zaretskii
2023-08-05 23:37                                         ` Po Lu
2023-08-06  5:00                                           ` Eli Zaretskii
2023-08-06  5:07                                             ` Po Lu
2023-08-06  5:24                                               ` Eli Zaretskii
2023-08-06  8:48                                                 ` Paul Eggert
2023-08-06  8:58                                                   ` Eli Zaretskii
2023-08-06  9:24                                                   ` Po Lu
2023-08-06  9:35                                                     ` Eli Zaretskii
2023-08-06  9:41                                                       ` Po Lu
2023-08-06  9:44                                                         ` Eli Zaretskii
2023-08-06  9:54                                                           ` Po Lu
2023-08-06 10:00                                                             ` Eli Zaretskii
2023-08-06 10:10                                                               ` Po Lu
2023-08-06 10:40                                                                 ` Eli Zaretskii
2023-08-06 11:02                                                                   ` Bruno Haible
2023-08-06 11:56                                                                     ` Eli Zaretskii
2023-08-06 12:30                                                                       ` Po Lu
2023-08-06 12:42                                                                         ` Eli Zaretskii
2023-08-06 14:40                                                                       ` Bruno Haible
2023-08-06 15:09                                                                         ` Eli Zaretskii
2023-08-06 15:46                                                                           ` Bruno Haible
2023-08-06 17:44                                                                             ` Eli Zaretskii
2023-08-06 18:54                                                                               ` Bruno Haible
2023-08-06 19:14                                                                                 ` Eli Zaretskii
2023-08-06 13:05                                                                 ` Eli Zaretskii
2023-08-06 13:12                                                                   ` Bruno Haible
2023-08-06 13:18                                                                     ` Eli Zaretskii
2023-08-06 13:41                                                                       ` Po Lu
2023-08-06 15:09                                                                         ` Angelo Graziosi
2023-08-06 15:35                                                                           ` Angelo Graziosi
2023-08-06 15:44                                                                             ` Angelo Graziosi
2023-08-06 17:36                                                                               ` Eli Zaretskii
2023-08-06 18:11                                                                                 ` Angelo Graziosi
2023-08-06 18:19                                                                                   ` Eli Zaretskii
2023-08-06 18:34                                                                                     ` Angelo Graziosi
2023-08-06 18:53                                                                                       ` Eli Zaretskii
2023-08-06 20:26                                                                                         ` Angelo Graziosi
2023-08-07  2:26                                                                                           ` Eli Zaretskii
2023-08-07  7:20                                                                                             ` Angelo Graziosi
2023-08-07  7:22                                                                                               ` Po Lu
2023-08-07  8:19                                                                                                 ` Corwin Brust
2023-08-07  8:44                                                                                                   ` Po Lu
2023-08-07 11:11                                                                                                     ` Eli Zaretskii
2023-08-07 11:22                                                                                               ` Eli Zaretskii
2023-08-07 12:03                                                                                                 ` Angelo Graziosi
2023-08-07 15:48                                                                                                   ` Corwin Brust
2023-08-06 15:39                                                                           ` Eli Zaretskii
2023-08-06 15:48                                                                             ` Angelo Graziosi
2023-08-06 10:41                                                       ` Bruno Haible
2023-08-06 11:07                                                         ` Manuel Giraud via Emacs development discussions.
2023-08-06 11:39                                                           ` Eli Zaretskii
2023-08-06 12:47                                                           ` Po Lu
2023-08-06 16:21                                                             ` Paul Eggert
2023-08-06 12:16                                                         ` Po Lu
2023-08-06 12:23                                                           ` Eli Zaretskii
2023-08-06  9:39                                                     ` Arsen Arsenović
2023-08-06  9:43                                                       ` Eli Zaretskii
2023-08-06 10:33                                                   ` Bruno Haible
2023-08-06 12:20                                                     ` Po Lu
2023-08-06 12:26                                                       ` Eli Zaretskii
2023-08-06 12:33                                                         ` Po Lu
2023-08-06 12:43                                                         ` Bruno Haible
2023-08-06 12:51                                                           ` Po Lu
2023-08-06 13:13                                                             ` Eli Zaretskii
2023-08-06 13:07                                                           ` Bruno Haible
2023-08-06 18:10                                                             ` Paul Eggert
2023-08-06 18:15                                                               ` Eli Zaretskii
2023-08-06 17:44                                                       ` Paul Eggert
2023-08-06 17:51                                                         ` Eli Zaretskii
2023-08-06 23:55                                                           ` Po Lu
2023-08-07  0:49                                                             ` Po Lu
2023-08-07 11:19                                                               ` Eli Zaretskii
2023-08-07 12:03                                                                 ` Eli Zaretskii
2023-08-07 14:47                                                                   ` Eli Zaretskii
2023-08-04  9:44 ` Po Lu
2023-08-04 10:34   ` Eli Zaretskii
2023-08-04 12:02     ` Po Lu
2023-08-04 12:58       ` Angelo Graziosi
2023-08-04 13:17         ` Po Lu
2023-08-04 13:37           ` Corwin Brust
2023-08-05  3:24             ` Corwin Brust
2023-08-05  6:46               ` Eli Zaretskii
2023-08-05  7:11                 ` Corwin Brust
2023-08-04 13:48           ` Angelo Graziosi
2023-08-04 14:09           ` Eli Zaretskii
2023-08-05  1:04             ` Po Lu
2023-08-05  6:41               ` Eli Zaretskii
2023-08-04 10:53   ` Angelo Graziosi
     [not found] <87pm43a1jp.fsf.ref@yahoo.com>
2023-08-04  4:12 ` Po Lu
2023-08-04  6:27   ` Eli Zaretskii
2023-08-04  6:37     ` Po Lu
     [not found] <87ttzkmrw1.fsf.ref@yahoo.com>
2023-02-17 11:51 ` Po Lu
2023-02-17 12:26   ` Eric S Fraga
2023-02-17 12:56   ` Arsen Arsenović
2023-02-17 13:05     ` Po Lu
2023-02-17 13:21       ` Arsen Arsenović
2023-02-19 11:17     ` Arsen Arsenović
2023-02-19 12:21       ` Po Lu
2023-02-19 14:16         ` Po Lu
2023-02-19 14:40           ` Arsen Arsenović
2023-02-19 15:13             ` Arsen Arsenović
2023-02-20  2:37               ` Po Lu
2023-02-20 15:33                 ` Arsen Arsenović
2023-02-20 15:46                   ` Po Lu
2023-02-20 16:05                     ` Arsen Arsenović
2023-02-19 14:42         ` Arsen Arsenović
2023-02-17 13:50   ` tomas
2023-02-21 13:41   ` Po Lu
2023-03-10 20:07   ` Etienne Prud'homme
2023-03-10 23:50     ` Po Lu
     [not found] <87bkmv6z36.fsf.ref@yahoo.com>
2023-01-19  2:24 ` gnulib fsusage Po Lu
2023-01-19  6:44   ` Eli Zaretskii
2023-01-19 10:11     ` Po Lu
2023-01-19 10:26       ` Eli Zaretskii
2023-01-19 11:59         ` Po Lu
2023-01-19 13:33           ` Eli Zaretskii
2023-01-19 13:40             ` Po Lu
2023-01-19 14:27               ` Android port (was: gnulib fsusage) Eli Zaretskii
2023-01-19 14:34                 ` Android port Po Lu
2023-01-19 14:56                   ` Eli Zaretskii
2023-01-20  0:18                     ` Po Lu
2023-01-20  7:09                       ` Eli Zaretskii
2023-01-20  9:39                         ` Po Lu
2023-01-25 10:48                         ` Po Lu
2023-01-26  8:59                           ` Eli Zaretskii
2023-01-20  6:47                 ` Android port (was: gnulib fsusage) Jean Louis
2023-01-20  7:19                   ` Eli Zaretskii
2023-01-28  7:50                     ` Konstantin Kharlamov
2023-01-28  8:49                       ` Eli Zaretskii
2023-01-28  9:06                         ` Konstantin Kharlamov
2023-01-28  9:21                           ` Eli Zaretskii
2023-01-28  9:31                             ` Konstantin Kharlamov
2023-01-28  9:59                               ` Android port Po Lu
2023-01-28  9:57                       ` Po Lu
2023-01-28 10:23                         ` Konstantin Kharlamov

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