Ticket #311 (closed bug: fixed)

Opened 5 years ago

Last modified 5 years ago

[BUG] Files listed in both MANIFEST and MANIFEST.generated

Reported by: jkeenan Owned by: jkeenan
Priority: minor Milestone: 1.0
Component: docs Version: trunk
Severity: low Keywords: POD MANIFEST
Cc: allison Language:
Patch status: Platform:

Description (last modified by jkeenan) (diff)

In the course of working on TT #292, I discovered that there are 10 files listed in both MANIFEST and MANIFEST.generated".

tools/install/smoke.pl  2
config/gen/platform/ansi/dl.c   2
compilers/tge/tgc.pir   2
config/auto/cpu/i386/memcpy_sse.c   2
config/gen/platform/darwin/memalign.c   2
config/auto/cpu/i386/memcpy_mmx.c   2
config/gen/platform/generic/stat.c  2
config/gen/platform/ansi/time.c 2
compilers/imcc/imclexer.c   2
config/gen/platform/win32/stat.c    2

Why is this so?

What should be done about it?

Thank you very much.
kid51

Change History

in reply to: ↑ description   Changed 5 years ago by jkeenan

The MANIFEST is generated by make manifest or its equivalent program, either of which looks at all files' SVN properties. So any file in MANIFEST must be in the repository. But why would a generated file be in the repository in the first place?

Consider compilers/imcc/imclexer.c. It's clearly in SVN:

$ svn st -v compilers/imcc/imclexer.c
            36561    36387 NotFound     compilers/imcc/imclexer.c

But it also appears to be a generated file:

$ head -15 compilers/imcc/imclexer.c
#line 2 "compilers/imcc/imclexer.c"
#line 2 "compilers/imcc/imcc.l"

/* ex: set ro ft=c:
 * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
 *
 * This file is generated automatically by the Parrot build process
 * from the file compilers/imcc/imcc.l.
 *
 * Any changes made here will be lost!
 *
*/

/* HEADERIZER HFILE: none */
/* HEADERIZER STOP */

follow-up: ↓ 3   Changed 5 years ago by chromatic

IMCC's lexer and parser are files generated by bison and flex. Normal users (and many developers) aren't going to touch the lexer and parser, so instead of making everyone install bison and flex to build Parrot, we check in the generated files.

in reply to: ↑ 2   Changed 5 years ago by jkeenan

  • status changed from new to assigned
  • owner set to jkeenan

Replying to chromatic:

IMCC's lexer and parser are files generated by bison and flex. Normal users (and many developers) aren't going to touch the lexer and parser, so instead of making everyone install bison and flex to build Parrot, we check in the generated files.

Okay, so here's my diagnosis:

Files mistakenly listed in MANIFEST.generated

tools/install/smoke.pl
config/gen/platform/ansi/dl.c
compilers/tge/tgc.pir
config/gen/platform/darwin/memalign.c
config/gen/platform/ansi/time.c
config/gen/platform/win32/stat.c

Files which (may) fall into chromatic's category and need to be in both locations

config/auto/cpu/i386/memcpy_sse.c
compilers/imcc/imclexer.c
config/auto/cpu/i386/memcpy_mmx.c
config/gen/platform/generic/stat.c

Can someone double-check me on this? I'll then proceed to remove the upper 6 from MANIFEST.generated.

Thank you very much.
kid51

follow-up: ↓ 5   Changed 5 years ago by jkeenan

I was about to take action on the Files mistakenly listed in MANIFEST.generated list above when I noticed that Allison yesterday added several files to MANIFEST.generated. This suggests that there are more criteria for 'dual-listing' a file than that suggested by chromatic. It also suggests that we probably cannot develop an automated tool to determine whether a file should be in MANIFEST.generated or not, as it depends on the role of a particular file in the overall Parrot build/install system.

Does that sound correct? If so, then we can close this ticket.

Thank you very much.
kid51

in reply to: ↑ 4   Changed 5 years ago by jkeenan

  • priority changed from normal to minor
  • cc allison added
  • description modified (diff)
  • severity changed from medium to low

Replying to jkeenan:

I was about to take action on the Files mistakenly listed in MANIFEST.generated list above when I noticed that Allison yesterday added several files to MANIFEST.generated. This suggests that there are more criteria for 'dual-listing' a file than that suggested by chromatic. It also suggests that we probably cannot develop an automated tool to determine whether a file should be in MANIFEST.generated or not, as it depends on the role of a particular file in the overall Parrot build/install system. Does that sound correct? If so, then we can close this ticket.

I have received no comment on this ticket in 3 weeks. If there is none within the next three days, I will close it as abandoned.

Thank you very much.
kid51

  Changed 5 years ago by rurban

This ticket will be obsoleted when my new RT #40817 patch at rt40817-track-generated-files.patch will be applied. (post-1.0)

  Changed 5 years ago by allison

  • status changed from assigned to closed
  • resolution set to fixed

chromatic's original analysis is correct. And in fact, even those IMCC files don't need to be listed in MANIFEST.generated (and the imcc file had the wrong package listed in MANIFEST.generated anyway).

MANIFEST and MANIFEST.generated are collapsed into a single file for all MANIFEST processing. The only difference is that MANIFEST lists files that are checked into the repository, while MANIFEST.generated lists files that aren't checked into the repository but still need to be installed, associated with a particular install package, or otherwise processed as part of the MANIFEST.

I've removed the remaining duplicates in r37460.

Note: See TracTickets for help on using tickets.