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

Comments

@jaredpar
Member

jaredpar commented Mar 16, 2016

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.

@gafter

This comment has been minimized.

Show comment
Hide comment
@gafter

gafter Apr 25, 2016

Member

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.

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

@gafter gafter added this to Backlog in Compiler: Determinism Feb 20, 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

Emitted pdb path should respect PathMap
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 #9813

jaredpar added a commit to jaredpar/roslyn that referenced this issue May 17, 2017

Emitted pdb path should respect PathMap
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 #9813

@jaredpar jaredpar closed this in #19593 May 18, 2017

jaredpar added a commit that referenced this issue May 18, 2017

Emitted pdb path should respect PathMap
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