Branch: refs/heads/atoomic/manifest_dev_skip
  Home:   https://github.com/Perl/perl5
  Commit: e5d8f15b445bcfe91aaccdf5e2f046a645dbba67
      
https://github.com/Perl/perl5/commit/e5d8f15b445bcfe91aaccdf5e2f046a645dbba67
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Porting/README.pod
    M Porting/manisort

  Log Message:
  -----------
  manisort: rework, add new convenience option "fix" and add pod, etc

Add a new convenience option to manisort for a common case

  manisort --fix=MANIFEST_FILE

is the same as

  manisort --nocheck --output=MANIFEST_FILE MANIFEST_FILE

Eg, it runs quietly, returns an exit code of 0 on success and
rewrites the file in correctly sorted order while removing
true dupes.


  Commit: c86c8415674c83e7d6bebb44bc6ddec8305b84b1
      
https://github.com/Perl/perl5/commit/c86c8415674c83e7d6bebb44bc6ddec8305b84b1
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Makefile.SH

  Log Message:
  -----------
  Makefile.SH - use new --fix option to manisort and simplify

The --fix option returns true if it worked, and so the use of
the true command is not required.


  Commit: c55307bb6ae16ff7f495ff2d726ee38875bb872c
      
https://github.com/Perl/perl5/commit/c55307bb6ae16ff7f495ff2d726ee38875bb872c
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Porting/release_managers_guide.pod

  Log Message:
  -----------
  release_managers_guide.pod: point out the --fix option to manisort


  Commit: d28479035a64f6efe599ef61a91be485dcd4c91c
      
https://github.com/Perl/perl5/commit/d28479035a64f6efe599ef61a91be485dcd4c91c
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M MANIFEST
    M pod/perl.pod

  Log Message:
  -----------
  Add descriptions to dead pods in pod/perl.pod

Even though these pods are dead we should keep their descriptions
for the manifest.


  Commit: 0e7b4fa62204db202d863de48334706113040157
      
https://github.com/Perl/perl5/commit/0e7b4fa62204db202d863de48334706113040157
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Porting/manicheck

  Log Message:
  -----------
  manicheck: fix broken exitcode logic

The comment says the highest exit code we should return is 124, but the
code will return 125 if there are 125 problems, if it is higher than 125
it will return 124. Which doesn't make sense.

This patch changes the logic to do what the comment says, return 124 if
there are 124 or more problems, otherwise it returns the count of
problems.


  Commit: d0375ea8a09b61cf387abaedbd74743c379c68a0
      
https://github.com/Perl/perl5/commit/d0375ea8a09b61cf387abaedbd74743c379c68a0
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M MANIFEST
    M Makefile.SH
    A Porting/MANIFEST.dev
    M Porting/README.pod
    M Porting/manicheck
    M Porting/manifest_lib.pl
    M Porting/release_managers_guide.pod
    M t/porting/exec-bit.t
    M t/porting/known_pod_issues.dat
    M t/porting/manifest.t
    M t/porting/readme.t

  Log Message:
  -----------
  Create Porting/MANIFEST.dev as a complement to MANIFEST and related infra

This file is intended to list all the files in the repo which are not
listed in the main MANIFEST file, and which are used only for
development purposes, especially those files which are only useful when
working in a git checkout of the main perl git repository.

The files it contains will NOT be added to the production tarball
release. The file has the exact same format as the main MANIFEST:
"file\t+description" or "file".

Q. Why didn't I call this Porting/MANIFEST as mentioned in the
   discussion thread that lead to this patch?

A. The main reason was that Porting/README.pod includes a list of files
   in Porting with descriptions and explanations for what the files do
   or how they are used. In several places the file refers to
   "MANIFEST", which lead to ambiguity that would have had to be
   resolved by changing all the entries to refer to "Porting/whatever"
   instead. It was much simpler to give the new file an extension, and I
   thought that '.dev' suggests it is for "development" purposes.

Q. Why isn't this using MANIFEST.skip style functionality?

A1. Various parts of our build and test process expect to read the
    MANIFEST file and then do things based on the entries contained
    within. Eg, run tests, or extract data, or compare the file list to
    content in another file. Those parts of our build process would
    break if we used a skip style list of regexen. So it would be more
    work to teach them to deal with such a file, assuming it was
    actually doable - given the additional work I have not considered it
    deeply. On the other hand teaching that logic to simply read two
    files was and is easy.

A2. I think each file we have in the repo should have a description.
    This patch currently doesn't provide a description for each, but it
    does for many, especially those migrated from MANIFEST.

A3. I think that MANIFEST.skip style files of exclusion regexens and
    globs are error prone and easy to mess up, for instance by excluding
    far more than you had intended to. They can also be annoying to get
    right, obviously not impossible, but sometimes annoying. Explicitly
    listing everything is easy in every way, especially to mechanize.

A4. I would like to be able to move verbatim entries from our existing
    MANIFEST into the new Porting/MANIFEST.dev, description and all.
    MANIFEST.skip style files do not support descriptions except as
    comments as far as I recall. That would have meant munging the data
    from MANIFEST during the move process which would be annoying.

A5. I would like to be able to reuse our sorting logic to keep the files
    nicely sorted in a way where the file is somewhat readable. A list
    of skip files would be less amenable to doing so.

Q. There is a lot of duplicated logic related to testing manifests,
   should we refactor it out into a module or some resuable tool set?

A. YES! We already have Porting/manifest_lib.pm, but it currently does
   not declare a package, and it only contains one function. Instead of
   adding yet more code that depends on requiring a file and having it
   inject subs into package main I decided that doing the refactoring
   could wait for a separate commit or PR. But I definitely think we
   should refactor as much of this logic as possible.

Q. Some of the test files were fairly significantly changed, are you
   sure you didn't break or drop any of the tests?

A. I am reasonably confident I did not. Secondary review appreciated.
   Some of the touched files are quite old and obviously "quick hack"
   scripts. By rewriting them quite a bit I was able to simplify and
   perform some of the tests in different ways or parts of the script.
   As far as I know I didn't drop any.

Q. Why didn't you use newer features in the rewrite?

A. I am a bit conservative in my taste, and I like build tools to be
   able to run on older perls, and for things like this I prefer to
   stick with what I know well. Patches welcome.

Q. Why didn't you move more of the stuff we shouldn't bundle with
   our releases?

A. I figured someone like Nicolas R. (who helped motivate this patch)
   would feel left out if I didn't leave him anything to do. :-)


  Commit: b5574410c7689920cb8c531eb502f20d1a0f4878
      
https://github.com/Perl/perl5/commit/b5574410c7689920cb8c531eb502f20d1a0f4878
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Porting/Maintainers.pm

  Log Message:
  -----------
  Teach Porting/Maintainers.pm about Porting/MANIFEST.dev

Patch best viewed with -w


  Commit: e24b17237711dbaf8acd87c0958852afd5c86396
      
https://github.com/Perl/perl5/commit/e24b17237711dbaf8acd87c0958852afd5c86396
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Porting/checkcfguse.pl

  Log Message:
  -----------
  Teach Porting/checkcfguse.pl about Porting/MANIFEST.dev

Patch best viewed with -w


  Commit: 849842796ad92a9ac0dbf822069f9dccd23344e7
      
https://github.com/Perl/perl5/commit/849842796ad92a9ac0dbf822069f9dccd23344e7
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M t/TEST

  Log Message:
  -----------
  Teach t/TEST about Porting/MANIFEST.dev

Patch best viewed with -w


  Commit: a5b34777cc6719350bfb0df8c6a84a947c8ce6e4
      
https://github.com/Perl/perl5/commit/a5b34777cc6719350bfb0df8c6a84a947c8ce6e4
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M t/porting/filenames.t

  Log Message:
  -----------
  Teach t/porting/filenames.t about Porting/MANIFEST.dev

Patch best viewed with -w


  Commit: f275deb450fe529c5692e96d7cfe594633db141f
      
https://github.com/Perl/perl5/commit/f275deb450fe529c5692e96d7cfe594633db141f
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M t/porting/podcheck.t

  Log Message:
  -----------
  Teach t/porting/podcheck.t about Porting/MANIFEST.dev

Patch best viewed with -w


  Commit: 017da136614d05a6ad72dfb1297d632d41352229
      
https://github.com/Perl/perl5/commit/017da136614d05a6ad72dfb1297d632d41352229
  Author: Yves Orton <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M t/porting/utils.t

  Log Message:
  -----------
  Teach t/porting/utils.t about Porting/MANIFEST.dev

Patch best viewed with -w


  Commit: 16f84f4b87001f519c8d9843b43cebf1dd963f71
      
https://github.com/Perl/perl5/commit/16f84f4b87001f519c8d9843b43cebf1dd963f71
  Author: Leon Timmermans <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M MANIFEST
    A MANIFEST.SKIP
    M Porting/makerel
    M Porting/manicheck
    M t/porting/manifest.t

  Log Message:
  -----------
  Add MANIFEST.SKIP file

This replaces the lists of files to skip in Porting/manicheck,
t/porting/manifest.t and Porting/makerel with a centralized and
standardized MANIFEST.SKIP file.

This would also allow us to add a make manifest target, but I left
that for a follow-up PR.

Signed-off-by: Nicolas R <[email protected]>


  Commit: 1c2e63031889b2b607c891b851876f9e697db8bb
      
https://github.com/Perl/perl5/commit/1c2e63031889b2b607c891b851876f9e697db8bb
  Author: Nicolas R <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M MANIFEST.SKIP
    R Porting/MANIFEST.dev

  Log Message:
  -----------
  Reconciliate MANIFEST.SKIP and MANIFEST.DEV


  Commit: 9d972c6a7e876e96bfcd8930656ecb79a0cf4c6a
      
https://github.com/Perl/perl5/commit/9d972c6a7e876e96bfcd8930656ecb79a0cf4c6a
  Author: Nicolas R <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M Makefile.SH

  Log Message:
  -----------
  Revert change to Makefile.SH


  Commit: b232f213ba3753b7a501c0ed2db051d0b39d72b0
      
https://github.com/Perl/perl5/commit/b232f213ba3753b7a501c0ed2db051d0b39d72b0
  Author: Nicolas R <[email protected]>
  Date:   2022-03-17 (Thu, 17 Mar 2022)

  Changed paths:
    M .gitignore
    M MANIFEST
    M MANIFEST.SKIP
    M Porting/Maintainers.pm
    A Porting/Manifest.pm
    M Porting/README.pod
    M Porting/checkcfguse.pl
    M Porting/manicheck
    M Porting/manisort
    M Porting/pod_lib.pl
    M Porting/release_managers_guide.pod
    M t/TEST
    M t/harness
    M t/porting/exec-bit.t
    M t/porting/filenames.t
    M t/porting/manifest.t
    M t/porting/podcheck.t
    M t/porting/readme.t
    M t/porting/utils.t

  Log Message:
  -----------
  Add and use MANIFEST.SKIP file for Porting files

This change is merging the two ideas from #19523 and #19513
by relying on a traditional MANIFEST.SKIP file.

Case #19523 simplifies the way we can easily exclude common noise
Case #19513 provides a mechanism to avoid shipping not necessary
files as part of the tarball

This is adding a new 'Porting/Manifest.pm' file which provides helpers
to list files from MANIFEST taking into account the 'MANIFEST.SKIP'
using ExtUtils::Manifest.


Compare: https://github.com/Perl/perl5/compare/e5d8f15b445b%5E...b232f213ba37

Reply via email to