Bug 1892061 Comment 1 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

We are going to change around the design of this feature so that we can fix several problems at once:
 1. The original problem here - being able to migrate users to use versioned installations directories when Balrog indicates that we are ready to migrate.
 2. Ability to roll out slowly rather than all at once (this will be expanded on in Bug 1875183).
 3. Ability to update the distribution directory, which will be located outside the versioned install directory.

We can solve all these problems at once with manifest directive directories. Right now, the manifest (ignoring the first line, the `type`) is basically just a list of directives for what to do with each file in the MAR. For example:

```
type "complete"
add "xul.dll"
add-if-not "update-settings.ini" "update-settings.ini"
remove "distribution/bad_file"
...
```

By adding enumerated names from a predetermined list of directories, we can ship the same MARs when using versioned and non-versioned installation directories, even if some of the files differ. We probably want the list of directories to look something like this:

 - `installation` - The root installation directory if not using versioned install dirs, otherwise the versioned directory.
 - `distribution` - The `<root>/distribution` directory.
 - `versioned-installation` - Same as `installation` but the file will only be installed if we are using versioned install dirs.
 - `non-versioned-installation` - Same as `installation` but the file will only be installed if we are not using versioned install dirs.

We also want to modify all relevant directives to take a destination filename in addition to a source to allow us to ship two files with the same installed-name that are installed in different circumstances.

The result should be the manifest looking like this:

```
type "complete"
add installation "xul.dll" "xul.dll"
add-if-not installation "update-settings.ini" "update-settings.ini" "update-settings.ini"
remove distribution "bad_file"
add versioned-installation "is_versioned.dll" "check_is_versioned.dll"
add non-versioned-installation "is_not_versioned.dll" "check_is_versioned.dll"
```
We are going to change around the design of this feature so that we can fix several problems at once:
 1. The original problem here - being able to migrate users to use versioned installations directories when Balrog indicates that we are ready to migrate.
 2. Ability to roll out slowly rather than all at once (this is expanded on in Bug 1875183 Comment 1).
 3. Ability to update the distribution directory, which will be located outside the versioned install directory.

We can solve all these problems at once with manifest directive directories. Right now, the manifest (ignoring the first line, the `type`) is basically just a list of directives for what to do with each file in the MAR. For example:

```
type "complete"
add "xul.dll"
add-if-not "update-settings.ini" "update-settings.ini"
remove "distribution/bad_file"
...
```

By adding enumerated names from a predetermined list of directories, we can ship the same MARs when using versioned and non-versioned installation directories, even if some of the files differ. We probably want the list of directories to look something like this:

 - `installation` - The root installation directory if not using versioned install dirs, otherwise the versioned directory.
 - `distribution` - The `<root>/distribution` directory.
 - `versioned-installation` - Same as `installation` but the file will only be installed if we are using versioned install dirs.
 - `non-versioned-installation` - Same as `installation` but the file will only be installed if we are not using versioned install dirs.

We also want to modify all relevant directives to take a destination filename in addition to a source to allow us to ship two files with the same installed-name that are installed in different circumstances.

The result should be the manifest looking like this:

```
type "complete"
add installation "xul.dll" "xul.dll"
add-if-not installation "update-settings.ini" "update-settings.ini" "update-settings.ini"
remove distribution "bad_file"
add versioned-installation "is_versioned.dll" "check_is_versioned.dll"
add non-versioned-installation "is_not_versioned.dll" "check_is_versioned.dll"
```
We are going to change around the design of this feature so that we can fix several problems at once:
 1. The original problem here - being able to migrate users to use versioned installations directories when Balrog indicates that we are ready to migrate.
 2. Ability to roll out slowly rather than all at once (this is expanded on in Bug 1891600 Comment 1).
 3. Ability to update the distribution directory, which will be located outside the versioned install directory.

We can solve all these problems at once with manifest directive directories. Right now, the manifest (ignoring the first line, the `type`) is basically just a list of directives for what to do with each file in the MAR. For example:

```
type "complete"
add "xul.dll"
add-if-not "update-settings.ini" "update-settings.ini"
remove "distribution/bad_file"
...
```

By adding enumerated names from a predetermined list of directories, we can ship the same MARs when using versioned and non-versioned installation directories, even if some of the files differ. We probably want the list of directories to look something like this:

 - `installation` - The root installation directory if not using versioned install dirs, otherwise the versioned directory.
 - `distribution` - The `<root>/distribution` directory.
 - `versioned-installation` - Same as `installation` but the file will only be installed if we are using versioned install dirs.
 - `non-versioned-installation` - Same as `installation` but the file will only be installed if we are not using versioned install dirs.

We also want to modify all relevant directives to take a destination filename in addition to a source to allow us to ship two files with the same installed-name that are installed in different circumstances.

The result should be the manifest looking like this:

```
type "complete"
add installation "xul.dll" "xul.dll"
add-if-not installation "update-settings.ini" "update-settings.ini" "update-settings.ini"
remove distribution "bad_file"
add versioned-installation "is_versioned.dll" "check_is_versioned.dll"
add non-versioned-installation "is_not_versioned.dll" "check_is_versioned.dll"
```

Back to Bug 1892061 Comment 1