Discussion:
[perl #58034] [TODO] save config_args for make reconfig
(too old to reply)
Reini Urban
2008-08-17 12:40:54 UTC
Permalink
# New Ticket Created by Reini Urban
# Please include the string: [perl #58034]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58034 >


---
osname= cygwin
osvers= 1.5.25(0.15642)
arch= cygwin-thread-multi-64int
cc= gcc
---
Flags:
category=utilities
severity=medium
ack=no
---
make reconfig ignores the given Configure.pl command-line args.
We need to save the config_args somewhere to be able to do
make reconfig like

CONFIG_ARGS = @config_args@

$(GEN_CONFIGS) : Makefile
$(PERL) Configure.pl $(CONFIG_ARGS)

We really should track all dependencies and do a make reconfig
automatically.

The CONFIG_ARGS should be stored in Makefile.
config_args should be stored in config_lib.pasm as in perl5 also.

The remaining problem is multiple targets for some
$(GEN_CONFIG) : Makefile dependencies.
GNU make has ::
What about other makes?
---
Summary of my parrot 0.6.4 (r0) configuration:
configdate='Sat Jul 19 10:18:22 2008 GMT'
Platform:
osname=cygwin, archname=cygwin-thread-multi-64int
jitcapable=1, jitarchname=i386-cygwin,
jitosname=CYGWIN, jitcpuarch=i386
execcapable=1
perl=/usr/bin/perl.exe
Compiler:
cc='gcc', ccflags='-U__STRICT_ANSI__ -pipe -I/usr/local/include
-DHASATTRIBUTE_CONST -DHASATTRIBUTE_DEPRECATED -DHASATTRIBUTE_MALLOC
-DHASATTRIBUTE_NONNULL -DHASATTRIBUTE_NORETURN -DHASATTRIBUTE_PURE
-DHASATTRIBUTE_UNUSED -DHASATTRIBUTE_WARN_UNUSED_RESULT
-falign-functions=16 -maccumulate-outgoing-args -W -Wall
-Waggregate-return -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment
-Wdisabled-optimization -Wendif-labels -Wextra -Wformat
-Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k
-Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wmissing-braces
-Wno-missing-format-attribute -Wpacked -Wparentheses -Wpointer-arith
-Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare
-Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default
-Wtrigraphs -Wundef -Wunknown-pragmas -Wno-unused -Wwrite-strings
-Wbad-function-cast -Wdeclaration-after-statement
-Wimplicit-function-declaration -Wimplicit-int -Wmain
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wnonnull
-DDISABLE_GC_DEBUG=1 -DNDEBUG -O3 -DHAS_GETTEXT',
Linker and Libraries:
ld='gcc', ldflags=' -Wl,--enable-auto-import
-Wl,--export-all-symbols -Wl,--stack,8388608
-Wl,--enable-auto-image-base -L/usr/local/lib',
cc_ldflags='',
libs='-lcrypt -lgmp -lreadline -lpcre /usr/bin/glut32.dll -lglu32
-lopengl32 -lcrypto -lintl'
Dynamic Linking:
share_ext='.dll', ld_share_flags='-shared',
load_ext='.dll', ld_load_flags='-shared'
Types:
iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
ptrsize=4, ptr_alignment=1 byteorder=1234,
nv=double, numvalsize=8, doublesize=8
Locally applied patches:
[perl #51944] [DOCS] Cygwin Readme
[perl #56562] [PATCH] root.in: add cygwin importlib
[perl #56544] [PATCH] install_files.pl
[perl #56558] [PATCH] pdb rename to parrot_pdb
[perl #56998] [TODO] rename cygwin dll to cygparrot.dll
[perl #57006] [PATCH] add cygwin opengl config quirks
[perl #57110] [PATCH] ncurses for cygwin
[perl #57112] [PATCH] postgres for cygwin
[perl #57114] [PATCH] urm RealBin issue
---
Environment:
CYGWIN =server
HOME =/home/rurban
LANG (unset)
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH
=~/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/usr/bin:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Programme/ATI

Technologies/ATI.ACE/Core-Static:/usr/local/bin:/usr/lib/gstreamer-0.8:/usr/lib/lapack
SHELL (unset)
James Keenan via RT
2008-08-17 14:07:28 UTC
Permalink
Reini,

I would argue that we take a different approach with 'make reconfig'.
We need to get rid of it entirely. In Parrot years, it's ancient code:

$ svn blame config/gen/makefiles/root.in | grep -n -A 3 reconfig
...
--
708: 4916 boemmels @echo " reconfig: 'clean' and redo
configuration."
...
--
1769: 7554 bernhard reconfig : clean
1770- 22967 bernhard $(PERL) Configure.pl

And it doesn't DWIM. Nowadays, if you want to redo configuration, you
need to call 'make realclean', as 'make clean' does not delete the files
created by Configure.pl. (If you want to re-run one particular
configuration step, use tools/dev/reconfigure.pl.)

I guess that the existence of 'make reconfig' completely escaped me. If
I had known about it, I would have recommended excising it, as it's
inconsistent with the way Configure.pl has worked for at least two years.

Now, there may very well be other reasons to retain the command-line
options. Parrot::Configure::Options processes those options, and the
most important of them are available for the lifetime of the
Parrot::Configure object. Given that, the question arises as to whether
they should be retained in the Makefile and/or in Parrot::Config. I'm
now developing file-based configuration in a branch, and in that branch
I've chosen to store the parsed version of that file in Parrot::Config.

So, my recommendation is to hold off on deciding how to store
command-line options for the next week. After I present this patch for
file-based configuration, we'll be in a better position to decide
how/where to store the command-line options data.

Thank you very much.
kid51
Reini Urban
2008-08-17 15:59:11 UTC
Permalink
Post by James Keenan via RT
Reini,
I would argue that we take a different approach with 'make reconfig'.
$ svn blame config/gen/makefiles/root.in | grep -n -A 3 reconfig
...
--
configuration."
...
--
1769: 7554 bernhard reconfig : clean
1770- 22967 bernhard $(PERL) Configure.pl
And it doesn't DWIM. Nowadays, if you want to redo configuration, you
need to call 'make realclean', as 'make clean' does not delete the files
created by Configure.pl. (If you want to re-run one particular
configuration step, use tools/dev/reconfigure.pl.)
I guess that the existence of 'make reconfig' completely escaped me. If
I had known about it, I would have recommended excising it, as it's
inconsistent with the way Configure.pl has worked for at least two years.
Now, there may very well be other reasons to retain the command-line
options. Parrot::Configure::Options processes those options, and the
most important of them are available for the lifetime of the
Parrot::Configure object. Given that, the question arises as to whether
they should be retained in the Makefile and/or in Parrot::Config. I'm
now developing file-based configuration in a branch, and in that branch
I've chosen to store the parsed version of that file in Parrot::Config.
So, my recommendation is to hold off on deciding how to store
command-line options for the next week. After I present this patch for
file-based configuration, we'll be in a better position to decide
how/where to store the command-line options data.
Hmm,
Attached is my improved version which got the GEN_CONFIG dependencies right.

My goal is to get rid of the required make clean and to get all
dependencies right. With a required make clean we are loosers.
The GEN_CONFIG target does not need clean anymore. It needs to be more
fine-tuned though.

This solves the Makefile problem.
What you plan with the perl libraries is fine, but the driver for the
dependencies to finally get rid of make clean should be the Makefiles.
The toolkit could be Parrot::Config a la tools/dev/reconfigure.pl

I got rid of "[perl #39742] [BUG] installed parrot conflicts with dev
parrot" with my 39742-installed-conflict.patch.
Now just the proper dependencies and install are missing.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
Reini Urban
2008-08-22 07:18:16 UTC
Permalink
Post by Reini Urban
Post by James Keenan via RT
Reini,
I would argue that we take a different approach with 'make reconfig'. We
$ svn blame config/gen/makefiles/root.in | grep -n -A 3 reconfig
...
--
configuration."
...
--
1769: 7554 bernhard reconfig : clean
1770- 22967 bernhard $(PERL) Configure.pl
And it doesn't DWIM. Nowadays, if you want to redo configuration, you
need to call 'make realclean', as 'make clean' does not delete the files
created by Configure.pl. (If you want to re-run one particular
configuration step, use tools/dev/reconfigure.pl.)
I guess that the existence of 'make reconfig' completely escaped me. If
I had known about it, I would have recommended excising it, as it's
inconsistent with the way Configure.pl has worked for at least two years.
Now, there may very well be other reasons to retain the command-line
options. Parrot::Configure::Options processes those options, and the
most important of them are available for the lifetime of the
Parrot::Configure object. Given that, the question arises as to whether
they should be retained in the Makefile and/or in Parrot::Config. I'm
now developing file-based configuration in a branch, and in that branch
I've chosen to store the parsed version of that file in Parrot::Config.
So, my recommendation is to hold off on deciding how to store
command-line options for the next week. After I present this patch for
file-based configuration, we'll be in a better position to decide
how/where to store the command-line options data.
Hmm,
Attached is my improved version which got the GEN_CONFIG dependencies right.
My goal is to get rid of the required make clean and to get all dependencies
right. With a required make clean we are loosers.
The GEN_CONFIG target does not need clean anymore. It needs to be more
fine-tuned though.
This solves the Makefile problem.
What you plan with the perl libraries is fine, but the driver for the
dependencies to finally get rid of make clean should be the Makefiles.
The toolkit could be Parrot::Config a la tools/dev/reconfigure.pl
I got rid of "[perl #39742] [BUG] installed parrot conflicts with dev
parrot" with my 39742-installed-conflict.patch.
Now just the proper dependencies and install are missing.
Attached is the version which is in the cygwin 0.7.0 package.

CONFIGURE_GENERATED_FILES should use it,
The GEN_CONFIGS dep is commented out, because it's not 100% safe yet.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
Reini Urban
2009-02-06 12:59:10 UTC
Permalink
Ticket rejected, no on automatic reconfiguration. Consult with jkeenan
on storing configuration args.
Attached patch gets the subject right, make reconfig works now by
properly storing and quoting the Configure.pl args.
jkeenan, can you please sign this off?
If I understand the patch correctly, your objective is simply to find a
quick way to repeat Parrot configuration with the same command-line
options that you most recently used.
If so, then I wonder why you are using 'make clean' instead of 'make
realclean'. We've always said that 'make clean' undoes the effect of
'make', whereas 'make realclean' undoes the effect of both 'perl
Configure.pl' and 'make'. So I don't know why you aren't using 'make
realclean' here.
I've changed it to make realclean as discussed on irc.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
Loading...