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

Deterministic builds need a mechanism to control PDB path in PE #9813

Closed
jaredpar opened this issue Mar 16, 2016 · 1 comment · Fixed by #19593
Closed

Deterministic builds need a mechanism to control PDB path in PE #9813

jaredpar opened this issue Mar 16, 2016 · 1 comment · Fixed by #19593
Assignees
Labels
Area-Compilers Concept-Determinism The issue involves our ability to support determinism in binaries and PDBs created at build time. Feature Request
Milestone

Comments

@jaredpar
Copy link
Member

Today the full path of the emitted PDB is embedded into the PE file. This particular path is intentionally excluded from our standard path mapping code. Hence this makes it impossible to create identical builds unless:

  1. All builds are sourced from identical directory names.
  2. Builds do not emit a PDB.

Neither of these is a palatable option. Not having this capability means we can't easily share build artifacts deterministically between various machines.

@jaredpar jaredpar added Area-Compilers Feature Request Concept-Determinism The issue involves our ability to support determinism in binaries and PDBs created at build time. labels Mar 16, 2016
@jaredpar jaredpar added this to the 1.3 milestone Mar 16, 2016
@gafter
Copy link
Member

gafter commented Apr 25, 2016

Note that there is an "unsupported" solution in Roslyn due to #9814 : /features:pdb-path-determinism causes the PDB path emitted into the PE file to omit the path prefix.

@gafter gafter modified the milestones: 2.0 (RC), 1.3 May 13, 2016
@gafter gafter modified the milestones: 2.0 (RC), 2.1 Jul 18, 2016
@jaredpar jaredpar modified the milestones: 2.0 (RC), 2.1 Jul 21, 2016
@jaredpar jaredpar assigned jaredpar and unassigned gafter Jul 21, 2016
@jaredpar jaredpar modified the milestones: 2.0 (RC), 2.0 (Preview 5) Sep 8, 2016
@jaredpar jaredpar modified the milestones: 2.0 (RC), 2.0 (RC.2) Oct 25, 2016
@jaredpar jaredpar modified the milestones: 2.0 (RC.3), 2.0 (RC.2) Nov 16, 2016
@jaredpar jaredpar modified the milestones: 2.0 (RTM), 2.0 (RC.3), 2.1 Jan 9, 2017
@jaredpar jaredpar modified the milestones: 2.1, 2.0 (RTM) Jan 12, 2017
@jaredpar jaredpar modified the milestones: 15.3, 15.1 Mar 9, 2017
@jaredpar jaredpar modified the milestones: 15.3, 15.later Apr 21, 2017
jaredpar added a commit to jaredpar/roslyn that referenced this issue May 17, 2017
The PDB path which is written into the PE file should respect the
`/pathmap` option passed to the compiler.  This is necessary to ensure
that PEs can be deterministic when built from different source paths.

The feature flag `pdb-path-determinism` is being kept for the time
being.  Even though it's a feature flag it still seems inappropriate to
break customers in a point release.  Deferring the removal until the
next major release to give customers time to react.  This issue tracks
removing the flag:

dotnet#19592

closes dotnet#9813
jaredpar added a commit that referenced this issue May 18, 2017
The PDB path which is written into the PE file should respect the
`/pathmap` option passed to the compiler.  This is necessary to ensure
that PEs can be deterministic when built from different source paths.

The feature flag `pdb-path-determinism` is being kept for the time
being.  Even though it's a feature flag it still seems inappropriate to
break customers in a point release.  Deferring the removal until the
next major release to give customers time to react.  This issue tracks
removing the flag:

#19592

closes #9813
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Compilers Concept-Determinism The issue involves our ability to support determinism in binaries and PDBs created at build time. Feature Request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants