Re: 75-2-simplifications.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> which means also, why do we look for the closure of PROGRAMS, Akim> instead of just adding $(EXEEXT) to all its components and sub Akim> components (i.e., inside sub vars such as $(SONE) above being a Akim> sub var of targ_SOURCES)?

Re: 75-simplifications.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_single_transform_list): Remove $xbase, Akim> unused. Akim> (&handle_source_transform): All the variables have conditions now, Akim> simplify. Akim> (&variable_delete): Admit an argument @conds. Akim>

Re: Including foreign makefiles

2001-04-07 Thread Tom Tromey
> "Adam" == Adam C Powell IV <[EMAIL PROTECTED]> writes: Adam> I think I'm going to go with option 1. The PETSc libs will be Adam> linked just fine, but other system libs from MPI to BLAS are a Adam> total crap-shoot without the ability to import the variable from Adam> an included makefile.

Re: Including foreign makefiles

2001-04-07 Thread Tom Tromey
> "Adam" == Adam C Powell IV <[EMAIL PROTECTED]> writes: Adam>* hard-code the variable I had hoped to get from the foreign Adam>makefile, which will break if it differs from platform to Adam>platform or machine to machine. Adam>* give up on cross-platform and hand-create .la

Re: Including foreign makefiles

2001-04-07 Thread Tom Tromey
> "Adam" == Adam C Powell IV <[EMAIL PROTECTED]> writes: Adam> configure.in and Makefile.am are attached, they're relatively Adam> simple as these things go. If you run Debian (unstable), having Adam> petsc-dev installed should make it all work. Note again that Adam> PETSC_INCLUDE comes thr

Re: 76-tags-in-tags-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> This patch introduces one semantical difference: tags-recursive Akim> is bound to tags, not TAGS as was before. I think (i) it is Akim> cleaner, and (ii) anyway it seems to me that TAGS itself Akim> performs its own recursion: The

Re: 74-source-suffix-pattern.patch

2001-04-07 Thread Tom Tromey
Akim> * automake.in ($source_suffix_pattern): Remove, unused. Akim> %extension_map seems to have replaced it. Ok. Tom

Re: 73-2-ext-compile-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * ext-compile.am: New file. Akim> * automake.in (&finish_languages): Output it. Akim> Require a C linker if there are several registered source suffixes. Akim> (&handle_compile): No longer push the `.c', `.o', `.obj', `.lo' A

Re: 72-handle-compile.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_compile): Extract from... Akim> (&get_object_extension): here. Akim> (&read_am_file): Call it. Akim> ($included_generic_compile, $included_knr_compile) Akim> ($included_libtool_compile): Remove. Akim>

Re: 71-amdep-uses-if.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> Use AM_CONDITIONAL and if/endif for AMDEP. Akim> * m4/depend.m4 (AM_DEP_TRACK): Use AM_CONDITIONAL to define AMDEP. Akim> * automake.in (&add_depend2): Transform %AMDEP% into `AMDEP' (leading Akim> to a configure time if/endi

Re: 69-single-quote-regexps.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in: Use simple quotes to define the _PATTERN variables Akim> to unobfuscate the regexps. Akim> ($AM_CONDITIONAL_PATTERN): Let the user quote the variable. Ok. Tom

Re: 70-fix-tags-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * tags.am: Fix missing leading tabs. Ok. This would also fall under the "obvious bug fix" rule. Tom

Re: 68-suffixes.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&rule_define): When you discover a suffix rules, Akim> register the extensions for .SUFFIXES. Akim> (&handle_texinfo): Don't register the suffixes. Akim> (&get_object_extension): Don't register suffixes, let th

Re: 66-recursive-targets.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * subdirs.am (RECURSIVE_TARGETS): New variable. Akim> Use it. Akim> * automake.in (&handle_subdirs): Output it. Akim> (&file_contents_internal): Support value spread on several lines. Ok. I don't find this any cleaner than t

Re: 67-texinfo-recursive.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> Isn't this beautiful? A *.am file only change! Akim> * subdirs.am: Don't define info related recursive targets. Akim> * texinfos.am: Do. ... and here's why you made the change in 66-. Thanks, this is ok. Tom

Re: 65-man-vars.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_man_pages): Rely on mans.am to define Akim> man%SECTION%dir and MANS. Akim> * mans.am: Do it. Ok. This patch made me realize that there is a bug in _MANS processing: we don't handle dist_ or nodist_ pre

Re: 63-rename-var-vars.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> The aim of this patch and the next is to clarify the status of Akim> variables: who owns them, and how their defined type (+=, := or Akim> =) can change. Akim> I end up with a rule which is somewhat unsatisfying: Incidentally chang

Re: 64-var-override-rules.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&variable_dump): Use %var_type properly. Akim> (&variable_define): Enforce better overriding rules. Akim> Handle the special case that used to handle... Akim> (&define_pretty_variable): this. Akim> Hence, don

Re: 63-rename-var-vars.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> The aim of this patch and the next is to clarify the status of Akim> variables: who owns them, and how their defined type (+=, := or Akim> =) can change. Why does it matter who owns them? Akim> I fail to understand why the user is

Re: 62-variable-pretty-output.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> There is one test that fails with this patch, but I leave it on Akim> purpose, because there is a choice to make: is it Makefile.in Akim> that should be pretty, or is it Makefile? Neither has to be pretty! Akim> Hence my question:

Re: 61-pessimize.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_configure): Don't bother with optimizing Akim> macro uses. Ok. I thought I ok'd this one already? Tom

Re: 60-dist-common.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&am_install_var): Transform DIST, and let the *.am Akim> files handle DIST_COMMON. Akim> * data.am, header.am, java.am, list.am, python.am, script.am: Set Akim> DIST_COMMON. Ok. Tom

Re: 59-accumulate-dist-common.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (%dist_common): Remove. Akim> (%configure_dist_common): Replace with... Akim> ($configure_dist_common): this. Akim> (&generate_makefile): Read the user file before using Akim> push_dist_common, as it sets DIST

Re: overriding tested automake & aclocal in test suite

2001-04-07 Thread Tom Tromey
> "Derek" == Derek R Price <[EMAIL PROTECTED]> writes: Derek> Is there some reason the automake test suite doesn't allow the Derek> user to override its AUTOMAKE & ACLOCAL variables? I like to Derek> do it on ocassion to compare the current behavior against my Derek> installed version and th

Re: depcomp bug (was [Fwd: CVS update: ccvs])

2001-04-07 Thread Tom Tromey
> "Hair" == Raja R Harinath <[EMAIL PROTECTED]> writes: Hair> from Raja R Harinath <[EMAIL PROTECTED]> Hair> * depcomp (gcc3): Invert test condition. Oops, thanks. Tom

Re: 58-ansi2knr-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&get_object_extension): Use ansi2knr.am. Akim> * clean-kr.am, kr-extra.am: Remove, merged into... Akim> * ansi2knr.am: this new file. ok Tom

Re: 56-de-com-vars.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * comp-vars.am: Remove, merged into... Akim> * compile.am: here. Akim> * automake.in (&get_object_extension): Adjust. Ok. Akim> +DEFS = @DEFS@%DEFAULT_INCLUDES% At some point we want to fix this. It is PR 132. Tom

Re: 57-fix-transform.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&transform): Fix an incredible bug which was Akim> breaking the if/endif system. Akim> ($ELSE_PATTERN): Admit an optional argument. Ok. Is there some kind of regression test for this? That would be nice. Or ma

Re: 55-aclocal-m4-in-configure-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_aclocal_m4): Rename as... Akim> (&scan_aclocal_m4): this. Akim> Return the list of aclocal.m4 dependencies. Akim> (&handle_configure): Invoke it, and use it when loading... Akim> * configure.am: Templ

Re: 54-de-remake-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * remake.am: Merge into... Akim> * configure.am: ... here. Akim> * automake.in (&handle_configure): Adjust. Ok Tom

Re: 52-yacc-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&condition_negate): New. Akim> (&variable_conditions_permutations): Use it. Akim> (&read_am_file, &file_contents): Use it on `else' clauses to Akim> support `if FALSE'. Akim> (&output_yacc_build_rule): Output

Re: 53-lex-am.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&output_lex_build_rule): Output this... Akim> * lex.am: New file. This is ok, but... Akim> -push (@suffixes, $lex_suffix); again, isn't removing this wrong? I thought maybe there would be code in &file_cont

Re: 51-clean-am-status.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&make_paragraphs): Transform TOPDIR_P and TOPDIR. Akim> (&handle_dist): Don't. Akim> (&handle_clean): Don't handle config.status here, let... Akim> * clean.am: ... do it. Akim> * distdir.am: Adjust. Ok. Tom

Re: 50-use-strict.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> In fact, since I wrote that patch, I learned about objects in Perl, Akim> and given that Automake, IMHO, lacks of modularity, I started toying Akim> with languages implemented as objects. Then there is no longer any Akim> reason to

Re: 50-use-strict.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in: Use strict vars and subs. Akim> Declare `%require_file_found'. Akim> (&handle_source_transform, &make_paragraphs): Declare my variables. Ok. Tom

Re: `missing' needs patch for Ultrix4.4

2001-04-07 Thread Tom Tromey
> "Jim" == Jim Meyering <[EMAIL PROTECTED]> writes: Jim> * missing (--run): Use `eval' to run `"$@"'. Otherwise, Ultrix4.4's Jim> /bin/sh fails and outputs garbage. Jim> - "$@" && exit 0 Jim> + eval "$@" && exit 0 I read through this thread but didn't see convergence on a solution. Do we

Re: building many programs into the same project

2001-04-07 Thread Tom Tromey
> "Lorenzo" == Lorenzo Bettini <[EMAIL PROTECTED]> writes: Lorenzo> I'd like to include two of my programs java2html and cpp2html Lorenzo> into the same package (say src2...), but I would like to Lorenzo> maintain two different program names and versions, and Lorenzo> moreover I'd like to hav

Re: Default postscript cleans miss *.cps & *.fns.

2001-04-07 Thread Tom Tromey
> "Derek" == Derek R Price <[EMAIL PROTECTED]> writes: Derek> FYI: the *.cps & *.fns files are only being created for cvs.texinfo. Did we ever get some resolution for this? Akim, I recall you had a patch which removed a large number of file extensions from the texinfo clean list. Perhaps

Re: --Werror and --add-missing don't work toghether

2001-04-07 Thread Tom Tromey
> "Pavel" == Pavel Roskin <[EMAIL PROTECTED]> writes: Pavel> CVS Automake uses am_line_error() to inform the user that it's Pavel> installing files. As a result, --Werror causes Automake to exit Pavel> after it installs the first file: I submitted a PR about this in your name. Thanks. Tom

Re: 49-use-if-install.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * data.am, header.am, java.am, libs.am, lisp.am, ltlib.am, Akim> * progs.am, python.am: Use if/endif instead of ?INSTALL?. Akim> * java.am (_am_installdirs): Be sure to set it. Ok. Thanks. Tom

Re: 48-false-confusion.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> So from now on, `FALSE' is used where ever a condition is needed, and Akim> `#' where ever a Make condition is needed. Of course `#' should not Akim> be actually output, but why making weak code instead of robust code. I'm not sure

Re: 48-false-confusion.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&make_condition): Return '#' when FALSE. Akim> (&conditional_string): Return FALSE, not '#' in the corresponding Akim> cases. Akim> (&file_contents_internal): Adjust. Akim> (&check_variable_defined_unconditio

Re: 47-use-if-endif.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * distdir.am: Use and abuse of if/endif. Akim> * scripts.am: Using if/endif with variables is fine. Ok. This is nice. Tom

Re: 46-make-paragraphs.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&make_paragraphs): Extract from &file_contents. Akim> Make it more robust than the previous RE based scheme. Akim> (&file_contents): Use it. Ok. Tom

Re: 45-fix-yacc2-test.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> There is still one test which fails, but it's because I don't Akim> know what happens: subobj2.test. Consider this code in depend2.am: ?AMDEP?@AMDEP@%FPFX%DEPMODE = @%FPFX%DEPMODE@ We include depend2.am once per extension. Bu

Re: 44-define-linker.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> I must say I don't understand very well why this patch is Akim> needed, but it is. I found it back in the old code, which was Akim> doing it for unconditionally defined sources, but not for Akim> conditionally defined sources (which

Re: 43-load-header-vars-once.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> I had to write this one under the pressure of variable_define Akim> which doesn't want one variable to be defined several times. Akim> Given that it was due to a hack, fixing it using the regular Akim> mechanism seems the right choic

Re: 42-override.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> + * automake.in (&variable_define): The user is allowed to override Akim> + a value if it was set by Automake, or if it was found in AC_SUBST. Akim> Still polishing permissions rules. Ok. Tom

Re: 41-locality.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_source_transform): Better locality of the Akim> variables. Akim> Use `next' to skip nonexistent variables. Ok. Tom

Re: 40-better-messages.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&variable_dump): If a variable is undefined, say Akim> it. Akim> (&check_ambiguous_conditional): Give finer error messages. Akim> (&variable_define): Check that a `+=' variable is not set with `='. Akim> Chec

Re: 29-remove-contents.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> Handle unconditional values of variables as conditioned by Akim> `TRUE'. Akim> * automake.in (%contents): Remove. Akim> (&generate_makefile, &handle_ltlibraries, &variable_define) Akim> (&read_am_file, &variable_defined, &v

Re: 29-remove-contents.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> The point of this patch and the next ones is to have a unified Akim> handling of all the kinds of variables. Before this patch, Akim> variables have their `constant' value in %content, and Akim> conditional vars have their content a

Re: 39-fix-variable-defined.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&variable_defined): Some callers, e.g., Akim> &am_primary_prefixes, really want to know if the variable is Akim> defined for any condition, not `TRUE' by default. Akim> (&am_primary_prefixes): Give a more preci

Re: 38-minor-tests-issues.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * tests/defs, tests/depend3.test: Remove useless code. Ok. I think this one falls under the "obvious fix" rule. Tom

Re: 37-fix-conditions-reduce.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&variable_conditions_reduce): FALSE is absorbent. Akim> (&variable_conditions): Don't include `FALSE' in the result. Ok. Tom

Re: 36-fix-sub-conditions.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_source_transform): Use Akim> &variable_conditions, don't read $conditional{$var}. Akim> (&variable_conditions_sub): When the call is the top level call, Akim> generate all the permutations of the condi

Re: 35-avoid-complaints.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * depend2.am (@AMDEP@%FPFX%DEPMODE): Define it when GENERIC so Akim> that it does not get noticed twice by automake, which now Akim> complains for multiple definitions. Akim> * tests/vartar.test: s/INSTALL/install/g, automake

Re: 34-name-clash.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&read_am_file, &file_contents): Avoid name clashed Akim> on $cond. Ok. Tom

Re: depcomp bug (was [Fwd: CVS update: ccvs])

2001-04-07 Thread Larry Jones
Tom Tromey writes: > > Larry, can you try the new depcomp to see if it works? Yes, it works fine. Thanks. -Larry Jones What's Santa's definition? How good do you have to be to qualify as good? -- Calvin

Re: depcomp bug (was [Fwd: CVS update: ccvs])

2001-04-07 Thread Raja R Harinath
Hi, Tom Tromey <[EMAIL PROTECTED]> writes: > > "Derek" == Derek R Price <[EMAIL PROTECTED]> writes: > Derek> One of the other CVS developers reported a bug in depcomp on > Derek> BSD/OS. Apparently the included /bin/sh doesn't set $? inside > Derek> of the conditional. His original message

Re: 33-simplify-contents-traces.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&generate_makefile) Use variable_define to define Akim> SOURCES and OBJECTS. Akim> (&variable_defined): Don't check for $conditional{VAR}{COND} as Akim> this would make perl create $condition{VAR}, which we don

Re: 32-simplify-contents-traces.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> + * automake.in (&variable_defined, &define_pretty_variable): Akim> + Simplify code which used to handle the cases where not all Akim> + variables were in %conditional. Akim> + (&define_variable): Use &define_pretty_variable. Akim> +

Re: 31-simplify-contents-traces.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> This patch and a couple of following patches are breaking Akim> Automake. That was the easiest path to finish cleaning up the Akim> variable handling. This series of patches ends with patches Akim> that fix some of these issues. A

Re: 30-simplify-contents-traces.patch

2001-04-07 Thread Tom Tromey
> "Akim" == Akim Demaille <[EMAIL PROTECTED]> writes: Akim> * automake.in (&handle_source_transform, &read_main_am_file): Akim> Simplify loops which were split in two parts, conditional vs Akim> unconditional variables. Ok. Tom

Re: SGI mode depcomp breaks when '.' appears in source filenames twice

2001-04-07 Thread Tom Tromey
> "Hari" == Raja R Harinath <[EMAIL PROTECTED]> writes: Hari> Try changing that to Hari> sed 's/^.*\.o://' | tr ' I checked this in. Thanks. Tom

Re: 2nd possibly silly question: XTRA_foo_SOURCES

2001-04-07 Thread Tom Tromey
> "Robert" == Robert Collins <[EMAIL PROTECTED]> writes: Robert> 1) The Robert> http://www.gnu.org/manual/automake/html_mono/automake.html Robert> documentation implies that _SOURCES can take the same style of Robert> late bound entries as _PROGRAMS and _LIBRARIES can, as long as Robert> EXTR

Re: depcomp bug (was [Fwd: CVS update: ccvs])

2001-04-07 Thread Tom Tromey
> "Derek" == Derek R Price <[EMAIL PROTECTED]> writes: Derek> One of the other CVS developers reported a bug in depcomp on Derek> BSD/OS. Apparently the included /bin/sh doesn't set $? inside Derek> of the conditional. His original message and fix are attached. I checked in a variant of th