diff options
author | Swaroop Sridhar <Swaroop.Sridhar@microsoft.com> | 2020-05-01 19:24:13 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-01 19:24:13 +0300 |
commit | 47ec733ba79b196e4e09d0c89bad245155002353 (patch) | |
tree | 98fc7124abbcb678abe9687e757a77e638560f05 /src/installer/corehost/cli/bundle/info.h | |
parent | 6d1f7e01d3429054ec3dcb7c75b3450b9fe1429e (diff) |
[release/5.0-preview4] Revert processing bundles in framework (#35679)v5.0.0-preview.4.20251.6
This commit reverts:
Revert "Single-File: Process bundles in the framework (#34274)"
This reverts commit 78b303df8fbb242985d049a277d0d199cafd51b5.
Revert "Single-File Bundler: Add a FileSize test (#35149)"
This reverts commit 779588a509b81d909ac5d496c172949ec1f1ddcc.
*Customer Scenario*
Publishing apps as a self-contained single-file doesn't work as expected.
* Publish needs to generate hostpolicy and hostfxr separate from the single file bundle
* Cross-platform publishing is incorrect
*Problem*
Since Static-apphost is not yet ready, processing bundle content in hostpolicy means that hostpolicy and hostfxr DLLs need to be separate from the bundle. This causes self-contained single-file apps to not be a "single file" temporarily.
The change also requires supporting changes from the SDK, to publish hostfxr and hostpolicy as separate files, and to invoke HostModel library with arguments that facilitate cross-platform publishing.
*Solution*
To solve these, problem, this change reverts:
Revert "Single-File: Process bundles in the framework (#34274)" commit 78b303df8fbb242985d049a277d0d199cafd51b5.
and a dependent test-only change:
Revert "Single-File Bundler: Add a FileSize test (#35149)" commit 779588a509b81d909ac5d496c172949ec1f1ddcc.
*Risk*
Medium
The change is contained to only host components: apphost, hostpolicy, and hostfxr.
However, the change is big, and needs testing in runtime and SDK repos.
*Testing*
Manually tested the SDK by inserting apphost, hostfxr, hostpolicy, and hostmodel library from this build into the `dotnet/packs` preview-4 SDK from https://github.com/dotnet/sdk/pull/11518 build.
Verified that:
* Singlefile apps can be published and run OK for { Windows, Linux, Osx } x {netcoreapp3.0, netcoreapp3.1, netcoreapp5.0}
* Cross-targeting builds of single-file apps build and run OK (ex: built on Windos, run on Mac).
Diffstat (limited to 'src/installer/corehost/cli/bundle/info.h')
-rw-r--r-- | src/installer/corehost/cli/bundle/info.h | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/src/installer/corehost/cli/bundle/info.h b/src/installer/corehost/cli/bundle/info.h deleted file mode 100644 index 0f3db559fc2..00000000000 --- a/src/installer/corehost/cli/bundle/info.h +++ /dev/null @@ -1,91 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#ifndef __INFO_H_ -#define __INFO_H_ - -#include "error_codes.h" -#include "header.h" - -// bundle::info supports: -// * API for identification of a single-file app bundle, and -// * Minimal probing and mapping functionality only for the app.runtimeconfig.json and app.deps.json files. -// bundle::info is used by HostFxr to read the above config files. - -namespace bundle -{ - struct info_t - { - struct config_t - { - config_t() - : m_location(nullptr) {} - - config_t(const config_t& config) - { - m_path = config.m_path; - m_location = config.m_location; - } - - config_t(const pal::string_t& path, const location_t *location=nullptr) - { - m_path = path; - m_location = location; - } - - bool matches(const pal::string_t& path) const - { - return m_location->is_valid() && path.compare(m_path) == 0; - } - - static bool probe(const pal::string_t& path) - { - return is_single_file_bundle() && - (the_app->m_deps_json.matches(path) || the_app->m_runtimeconfig_json.matches(path)); - } - - void set_location(const location_t* location) - { - m_location = location; - } - - static char* map(const pal::string_t& path, const location_t* &location); - static void unmap(const char* addr, const location_t* location); - - private: - pal::string_t m_path; - const location_t *m_location; - }; - - static StatusCode process_bundle(const pal::char_t* bundle_path, const pal::char_t *app_path, int64_t header_offset); - static bool is_single_file_bundle() { return the_app != nullptr; } - - bool is_netcoreapp3_compat_mode() const { return m_header.is_netcoreapp3_compat_mode(); } - const pal::string_t& base_path() const { return m_base_path; } - int64_t header_offset() const { return m_header_offset; } - - // Global single-file info object - static const info_t* the_app; - - protected: - info_t(const pal::char_t* bundle_path, - const pal::char_t* app_path, - int64_t header_offset); - - const char* map_bundle(); - void unmap_bundle(const char* addr) const; - - pal::string_t m_bundle_path; - pal::string_t m_base_path; - size_t m_bundle_size; - int64_t m_header_offset; - header_t m_header; - config_t m_deps_json; - config_t m_runtimeconfig_json; - - private: - StatusCode process_header(); - }; -} -#endif // __INFO_H_ |