Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify structure #2

Merged
merged 29 commits into from
Feb 3, 2025
Merged

Clarify structure #2

merged 29 commits into from
Feb 3, 2025

Conversation

proux01
Copy link
Contributor

@proux01 proux01 commented Sep 29, 2024

This implements, together with coq/coq#19530 , the part of CEP#83 that reached a common agreement during the dedicated Coq call discussions (tl;dr: give stdlib its own repository, clarify its internal dependencies and ensure they are kept with a CI check, "coq" metapackage keeps depending on "coq-stdlib" and no distribution of packages for induvidual subcomponents)

  • split code in stdlib into subcomponents, according to the CEP
    added graph in doc/stdib/depends.png, included in doc/stdlib/index.html
  • add CI checks
    • job checking for no duplicate filenames
    • job stdlib-subcomponents checking subcomponents dependencies (easy thanks to Nix)
    • job checking that all files are in exactly one subcomponent

Look at dev/doc/structure.md for more details.

@proux01 proux01 mentioned this pull request Sep 29, 2024
43 tasks
@proux01 proux01 force-pushed the master branch 2 times, most recently from 9304194 to 86539ec Compare October 2, 2024 11:25
@proux01 proux01 force-pushed the clarify-structure branch from 5384f0a to 8689066 Compare October 2, 2024 11:25
@proux01 proux01 force-pushed the clarify-structure branch from 8689066 to dd51471 Compare October 2, 2024 11:33
@proux01 proux01 force-pushed the clarify-structure branch 2 times, most recently from 0342674 to 4cad32a Compare October 5, 2024 13:50
@proux01 proux01 force-pushed the master branch 7 times, most recently from 2b99949 to 721e8e8 Compare October 7, 2024 12:40
@proux01 proux01 force-pushed the clarify-structure branch from 4cad32a to c1571b8 Compare October 7, 2024 12:50
@proux01 proux01 force-pushed the master branch 3 times, most recently from d729338 to 0b34c66 Compare October 8, 2024 13:34
@herbelin herbelin requested a review from ppedrot October 8, 2024 13:49
@proux01 proux01 force-pushed the master branch 2 times, most recently from c674105 to a3439aa Compare October 10, 2024 15:16
@proux01 proux01 force-pushed the clarify-structure branch 2 times, most recently from ea858ad to 53ff32e Compare October 11, 2024 08:55
@proux01 proux01 force-pushed the master branch 2 times, most recently from 45b70e5 to 2af713a Compare October 14, 2024 11:53
Those would yield ambiguity when doing "From Stdlib Require File.".
There are already a few in the prelude, let's not add more.
@proux01
Copy link
Contributor Author

proux01 commented Feb 3, 2025

Due to the extreme strictness of dune (in particular the fact that (include_subdirs unqualified) never got implemented for Coq), I gave up on my attempts to improve the directory structure of the library, while remaining highly backwards compatible. So this is just documenting some structure and adding a CI job to ensure this documentation remains up to date. The chosen structure may not be perfect, but since we are not publishing any package, it can be easily refined later (c.f. dev/doc/structure.md).

@proux01 proux01 merged commit c2dee97 into master Feb 3, 2025
459 of 463 checks passed
@proux01 proux01 deleted the clarify-structure branch February 3, 2025 07:52
@SkySkimmer
Copy link
Contributor

WTF are all these added new files? Why is there a committed generated file (the .dot)?

@proux01
Copy link
Contributor Author

proux01 commented Feb 3, 2025

WTF are all these added new files?

Just symlinks needed by the CI job (and ignored by dune) to check the subcomponents structure. Since dune forbids to change the directory structure without chaning the logical names (i.e. having some impact in terms of backward compatibility), those are needed for the CI job (based on coq_makefile) to compile parts of some directories in different subcomponents. (it's all documented in dev/doc/structure.md)

Why is there a committed generated file (the .dot)?

It's not entirely generated, in particular the compat subcomponent doesn't actually depend on everything (according to coqdep), but we want to declare it as possibly depending from everything, because any future compat file could add a dependency on virtually anything.

@proux01 proux01 added this to the 9.0 milestone Feb 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants