* Checking for sed during configure on Windows
@ 2011-05-07 19:58 Christoph Scholtes
2011-05-07 20:31 ` Juanma Barranquero
2011-05-08 3:02 ` Eli Zaretskii
0 siblings, 2 replies; 7+ messages in thread
From: Christoph Scholtes @ 2011-05-07 19:58 UTC (permalink / raw)
To: emacs-devel; +Cc: Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 221 bytes --]
When I run a `make bootstrap' after `maintainer-clean' or a fresh
checkout I have to remember to regenerate `getopt_.h'.
The following patch checks if sed is available and if it is, does this
automatically.
Christoph
[-- Attachment #2: check_sed.patch --]
[-- Type: text/plain, Size: 2973 bytes --]
=== modified file 'ChangeLog'
--- ChangeLog 2011-05-06 07:13:19 +0000
+++ ChangeLog 2011-05-07 19:56:48 +0000
@@ -1,3 +1,8 @@
+2011-05-07 Christoph Scholtes <cschol2112@googlemail.com>
+
+ * lib/makefile.w32-in: If sed is available build `getopt._h' as
+ part of bootstrap.
+
2011-05-06 Paul Eggert <eggert@cs.ucla.edu>
Use C99's va_copy to avoid undefined behavior on x86-64 GNU/Linux.
=== modified file 'lib/makefile.w32-in'
--- lib/makefile.w32-in 2011-04-06 16:05:49 +0000
+++ lib/makefile.w32-in 2011-05-07 19:42:57 +0000
@@ -157,7 +157,11 @@
doit:
getopt_.h: getopt.in.h $(ARG_NONNULL_H)
+ifdef HAVE_SED
+ $(MAKE) $(MFLAGS) getopt_h
+else
$(MAKE) $(MFLAGS) getopt_.h-$(SHELLTYPE)
+endif
getopt_.h-CMD: doit
@echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
=== modified file 'nt/ChangeLog'
--- nt/ChangeLog 2011-05-07 04:00:12 +0000
+++ nt/ChangeLog 2011-05-07 19:55:07 +0000
@@ -1,3 +1,7 @@
+2011-05-07 Christoph Scholtes <cschol2112@googlemail.com>
+
+ * configure.bat: Check if sed is available on system.
+
2011-05-07 Ben Key <bkey76@gmail.com>
* configure.bat: Renamed the fusercflags variable to escusercflags
=== modified file 'nt/configure.bat'
--- nt/configure.bat 2011-05-07 04:00:12 +0000
+++ nt/configure.bat 2011-05-07 19:38:54 +0000
@@ -356,7 +356,7 @@
echo Checking for 'rm'...
rm junk.bat
if exist junk.bat goto needrm
-goto checkcompiler
+goto checkmaintutils
:needcp
echo You need 'cp' (the Unix file copy program) to build Emacs.
@@ -368,6 +368,34 @@
goto end
rem ----------------------------------------------------------------------
+rem Check if maintainer tools are present (optional).
+
+:checkmaintutils
+
+rem Checking for sed requires command extensions, if not available skip
+if "%use_extensions%" == "1" goto :checksed
+goto checkcompiler
+
+:checksed
+echo Checking for 'sed' (optional)...
+set junk=junk
+for /f "tokens=*" %%a in (
+'"echo foo | sed -e s/foo/bar/g"'
+) do (
+set junk=%%a
+)
+if not %junk% == bar goto donthavesed
+
+set havesed=Y
+set junk=
+goto checkcompiler
+
+:donthavesed
+set junk=
+set havesed=
+goto checkcompiler
+
+rem ----------------------------------------------------------------------
rem Auto-detect compiler if not specified, and validate GCC if chosen.
:checkcompiler
@@ -735,6 +763,7 @@
if (%nocygwin%) == (Y) echo NOCYGWIN=1 >>config.settings
if not "(%prefix%)" == "()" echo INSTALL_DIR=%prefix%>>config.settings
if not "(%distfiles%)" == "()" echo DIST_FILES=%distfiles%>>config.settings
+if (%havesed%) == (Y) echo HAVE_SED=1 >>config.settings
rem We go thru docflags because usercflags could be "-DFOO=bar" -something
rem and the if command cannot cope with this
for %%v in (%usercflags%) do if not (%%v)==() set docflags=Y
@@ -894,6 +923,7 @@
set distfiles=
set HAVE_DISTFILES=
set distFilesOk=
+set havesed=
set pngsupport=
set tlssupport=
set jpegsupport=
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Checking for sed during configure on Windows
2011-05-07 19:58 Checking for sed during configure on Windows Christoph Scholtes
@ 2011-05-07 20:31 ` Juanma Barranquero
2011-05-07 21:20 ` Christoph Scholtes
2011-05-08 3:02 ` Eli Zaretskii
1 sibling, 1 reply; 7+ messages in thread
From: Juanma Barranquero @ 2011-05-07 20:31 UTC (permalink / raw)
To: Christoph Scholtes; +Cc: Eli Zaretskii, emacs-devel
> When I run a `make bootstrap' after `maintainer-clean' or a fresh checkout I
> have to remember to regenerate `getopt_.h'.
What do you mean, you have to remember to regenerate getopt_.h?
Juanma
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Checking for sed during configure on Windows
2011-05-07 20:31 ` Juanma Barranquero
@ 2011-05-07 21:20 ` Christoph Scholtes
2011-05-07 21:36 ` Juanma Barranquero
0 siblings, 1 reply; 7+ messages in thread
From: Christoph Scholtes @ 2011-05-07 21:20 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: Eli Zaretskii, emacs-devel
On 5/7/2011 2:31 PM, Juanma Barranquero wrote:
>> When I run a `make bootstrap' after `maintainer-clean' or a fresh checkout I
>> have to remember to regenerate `getopt_.h'.
>
> What do you mean, you have to remember to regenerate getopt_.h?
>
> Juanma
`maintainer-clean' removes getopt.h.
From lib/makefile:
maintainer-clean: distclean
- $(DEL) getopt_.h
When I run `make bootstrap' after that, this is executed:
getopt_.h-CMD: doit
@echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
@echo Run "$(MAKETYPE) getopt_h" in the lib/ subdirectory.
@echo You will need GNU Sed to be installed.
exit -1
I know it's usually a one time thing, but when I have sed installed it
shouldnt abort there but just regenerate it automatically.
Christoph
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Checking for sed during configure on Windows
2011-05-07 21:20 ` Christoph Scholtes
@ 2011-05-07 21:36 ` Juanma Barranquero
2011-05-07 22:28 ` Christoph Scholtes
0 siblings, 1 reply; 7+ messages in thread
From: Juanma Barranquero @ 2011-05-07 21:36 UTC (permalink / raw)
To: Christoph Scholtes; +Cc: Eli Zaretskii, emacs-devel
On Sat, May 7, 2011 at 23:20, Christoph Scholtes
<cschol2112@googlemail.com> wrote:
> `maintainer-clean' removes getopt.h.
>
> From lib/makefile:
>
> maintainer-clean: distclean
> - $(DEL) getopt_.h
>
> When I run `make bootstrap' after that, this is executed:
>
> getopt_.h-CMD: doit
> @echo getopt.in.h or $(ARG_NONNULL_H) is newer than getopt_.h.
> @echo Run "$(MAKETYPE) getopt_h" in the lib/ subdirectory.
> @echo You will need GNU Sed to be installed.
> exit -1
>
> I know it's usually a one time thing, but when I have sed installed it
> shouldnt abort there but just regenerate it automatically.
You said "after `maintainer-clean' or a fresh checkout".
I always bootstrap like this:
cd trunk
bzr --no-plugins clean-tree --unknown --ignored --detritus --force
cd nt
configure # several options
make bootstrap
make install-bin
and it just works (I have sed in the path, of course).
Juanma
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Checking for sed during configure on Windows
2011-05-07 21:36 ` Juanma Barranquero
@ 2011-05-07 22:28 ` Christoph Scholtes
0 siblings, 0 replies; 7+ messages in thread
From: Christoph Scholtes @ 2011-05-07 22:28 UTC (permalink / raw)
To: Juanma Barranquero; +Cc: Eli Zaretskii, emacs-devel
On 5/7/2011 3:36 PM, Juanma Barranquero wrote:
> You said "after `maintainer-clean' or a fresh checkout".
Sorry, a fresh checkout just works, since getopt_.h is under version
control. I was mistaken. This only applies to the state after
`maintainer-clean', where getopt_.h is removed.
I remember you telling me about the nifty clean tree command you use in
another thread. I guess that would solve my use case (start from a clean
sheet), without having to regenerate getopt_.h.
Thanks.
Christoph
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Checking for sed during configure on Windows
2011-05-07 19:58 Checking for sed during configure on Windows Christoph Scholtes
2011-05-07 20:31 ` Juanma Barranquero
@ 2011-05-08 3:02 ` Eli Zaretskii
2011-05-08 3:30 ` Christoph Scholtes
1 sibling, 1 reply; 7+ messages in thread
From: Eli Zaretskii @ 2011-05-08 3:02 UTC (permalink / raw)
To: Christoph Scholtes; +Cc: emacs-devel
> Date: Sat, 07 May 2011 13:58:39 -0600
> From: Christoph Scholtes <cschol2112@googlemail.com>
> CC: Eli Zaretskii <eliz@gnu.org>
>
> [1:text/plain Hide]
> When I run a `make bootstrap' after `maintainer-clean' or a fresh
> checkout I have to remember to regenerate `getopt_.h'.
>
> The following patch checks if sed is available and if it is, does this
> automatically.
Since this is only a problem during bootstrap, how about moving the
command to some target that only gets run as part of bootstrap?
I would also support simply trying to run Sed at that time, without
any configure-time checks. People who bootstrap can be trusted to
have Sed, I think. If they don't Make will barf and let them know.
Thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Checking for sed during configure on Windows
2011-05-08 3:02 ` Eli Zaretskii
@ 2011-05-08 3:30 ` Christoph Scholtes
0 siblings, 0 replies; 7+ messages in thread
From: Christoph Scholtes @ 2011-05-08 3:30 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
On 5/7/2011 9:02 PM, Eli Zaretskii wrote:
> Since this is only a problem during bootstrap, how about moving the
> command to some target that only gets run as part of bootstrap?
>
> I would also support simply trying to run Sed at that time, without
> any configure-time checks. People who bootstrap can be trusted to
> have Sed, I think. If they don't Make will barf and let them know.
Sounds good to me. I will try to find a spot during bootstrap and just
run Sed. Less complexity is better.
My initial patch was based on wrong assumption that this is needed every
time Emacs is build from scratch through either a fresh check out or a
maintainer clean. As Juanma pointed out this is not the case. The use
case for this is rather specific (maintainer-clean only or if the
getopt.in.h ever changed) as far as I can tell.
Christoph
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-05-08 3:30 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-07 19:58 Checking for sed during configure on Windows Christoph Scholtes
2011-05-07 20:31 ` Juanma Barranquero
2011-05-07 21:20 ` Christoph Scholtes
2011-05-07 21:36 ` Juanma Barranquero
2011-05-07 22:28 ` Christoph Scholtes
2011-05-08 3:02 ` Eli Zaretskii
2011-05-08 3:30 ` Christoph Scholtes
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).