Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
7ff3855
fix: removed obsolete ABI struct parameter
justpav05 Sep 5, 2026
4a54623
fix: fixed static linking for setup
justpav05 Sep 5, 2026
5f4e54b
fix: update localization for library structure changes
justpav05 Sep 5, 2026
19396ca
fix: removed obsolete ABI struct field
justpav05 Sep 5, 2026
1026b70
fix: refactored the library pipeline: installation now creates a proper
justpav05 Sep 5, 2026
973523f
fix: fixed test errors
justpav05 Sep 5, 2026
c3503ef
fix: update TODO
justpav05 Sep 5, 2026
bc53fe3
fix: extraction and separation of the 3 ABI levels
justpav05 Sep 5, 2026
8cb4812
fix: fix var for abi in decoders
justpav05 Sep 5, 2026
4f7e4d8
fix: fix var for lib
justpav05 Sep 5, 2026
f7e5bf4
fix: fix vars for lib and decode
justpav05 Sep 5, 2026
2cd924b
fix: added binary copying to the image for setup
justpav05 Sep 5, 2026
d490a9f
fix: switched the mechanism to use a plugin-based approach
justpav05 Sep 5, 2026
3b64fa6
fix: update TODO
justpav05 Sep 5, 2026
756859f
fix: fix search for upac-to.efi
justpav05 Sep 6, 2026
a59032f
new: add upac-from slot name
justpav05 Sep 6, 2026
bab2c9e
fix: added new functions for ABI and API registration
justpav05 Sep 6, 2026
fa222c4
fix: fix test
justpav05 Sep 6, 2026
d3b3c7f
fix: simplified the default function for the trait
justpav05 Sep 6, 2026
5e9ba0d
fix: implemented creation of to and from for uki
justpav05 Sep 6, 2026
2e12931
fix: added a stub to all remaining booters
justpav05 Sep 6, 2026
b0d0212
fix: removed an extra exported function
justpav05 Sep 6, 2026
e91cf95
fix: added changes for static linking in setup
justpav05 Sep 6, 2026
97495d0
fix: restored symbols for booters
justpav05 Sep 6, 2026
5276486
fix: fixed description for SAFTY section
justpav05 Sep 6, 2026
45dbf3e
fix: added generation of everything required for the UKI format to work
justpav05 Sep 6, 2026
7588ca6
fix: update TODO
justpav05 Sep 6, 2026
6614997
fix: fixed test placement
justpav05 Sep 6, 2026
ef3be2a
fix: add more tests
justpav05 Sep 6, 2026
91cdd14
fix: update TODO
justpav05 Sep 6, 2026
e171b7f
fix: add more tests
justpav05 Sep 6, 2026
0787e9d
fix: update TODO
justpav05 Sep 6, 2026
2193620
fix: updated Booter structure and trait
justpav05 Sep 6, 2026
c882d56
fix: added plugins for installation
justpav05 Sep 6, 2026
6d966a7
fix: updated boot plugin contracts
justpav05 Sep 6, 2026
233f0b9
fix: update install for grub
justpav05 Sep 6, 2026
4cef362
fix: update TODO
justpav05 Sep 6, 2026
17ac1c5
fix: removed the 'config' folder as it was unnecessary
justpav05 Sep 6, 2026
85de292
fix: update TODO
justpav05 Sep 6, 2026
05057ee
fix: split up the large mod.rs for the plugin
justpav05 Sep 6, 2026
1f2c76e
fix: update TODO
justpav05 Sep 7, 2026
53b6165
fix: added system installation of upac and a hook to load composefs
justpav05 Sep 7, 2026
1afda84
fix: propagated library setup changes to the installer CLI
justpav05 Sep 7, 2026
682e0f1
fix: update TODO
justpav05 Sep 7, 2026
6d37962
fix: reorganize ABI crate around C-ABI-only structs
justpav05 Sep 7, 2026
9026bf2
fix: sync VALIDATABLE_COMPOSITES with current abi structs
justpav05 Sep 7, 2026
010dd40
fix: split upac_types::lib.rs into per-domain modules, fix broken
justpav05 Sep 7, 2026
3abe56d
fix: round out CNew/CValidate coverage on package + response structs
justpav05 Sep 8, 2026
17df178
fix: add boot.rs and decode request/response mirrors
justpav05 Sep 8, 2026
e06448c
fix: propagate C-ABI struct moves through upac-lib, extract
justpav05 Sep 8, 2026
871dfea
fix: teach CTryToRust/RustToC raw pointers and Vec<String>, CValidate
justpav05 Sep 8, 2026
5e84717
fix: added issues and fixed formatting
justpav05 Sep 8, 2026
1177418
fix: build out types::request/response mirrors, drop dead boot/decoder
justpav05 Sep 8, 2026
779f160
fix: return Response structs from diff/list/search unmutated commands
justpav05 Sep 8, 2026
7ee09e3
fix: teach CTryToRust to pass through Option<HookMessageFn>
justpav05 Sep 8, 2026
540cc85
fix: added a validation trait for type-agnostic validation
justpav05 Sep 8, 2026
53ca2da
fix: added use of validation trait
justpav05 Sep 8, 2026
3754560
fix: migrate upac-cli commands onto types::request mirrors, validate
justpav05 Sep 8, 2026
c8eb0d6
fix: removed unnecessary options, fixed design-related imports
justpav05 Sep 8, 2026
b2fc943
fix: removed unnecessary options, fixed design-related imports
justpav05 Sep 8, 2026
0262e69
fix: rebuild boot-plugin loading around BootPlugins/BootPlugin, fix
justpav05 Sep 8, 2026
84ae14b
fix: require boot_plugin on install/update/uninstall/rollback/files
justpav05 Sep 9, 2026
422c520
fix: require boot_plugin in types::request mirrors, matching abi
justpav05 Sep 9, 2026
3168497
fix: require boot_plugin end-to-end in lib mutating commands, switch to
justpav05 Sep 9, 2026
62655f3
fix: require boot_plugin in install/update/remove/rollback/file
justpav05 Sep 9, 2026
ed2d8e5
fix: add boot.plugin to RuntimeSettings for a configurable default boot
justpav05 Sep 9, 2026
588e6ad
fix: add CTryToRust to
justpav05 Sep 9, 2026
ab75777
fix: rebuild upac-grub around current
justpav05 Sep 9, 2026
b71b75d
fix: rebuild upac-refind around current
justpav05 Sep 9, 2026
541cb7a
fix: function naming and style corrections
justpav05 Sep 9, 2026
b4b3617
fix: rebuild upac-systemd-boot around current Booter shape, generate
justpav05 Sep 9, 2026
3ce69b3
fix: rebuild upac-uki around current Booter shape, restore slot
justpav05 Sep 9, 2026
efbc11d
fix: drop dead booter.toml keys (efi_sysfs_path, loader_info_var,
justpav05 Sep 9, 2026
fb30cea
fix: fix REUSE specification
justpav05 Sep 10, 2026
6aa4865
fix: rebuild decoder plugin loading around DecoderPlugin, split
justpav05 Sep 10, 2026
5e247b2
fix: fix api for new decoder api
justpav05 Sep 10, 2026
588d38d
fix: fix symbol name
justpav05 Sep 10, 2026
b2051b3
feat: add ContextValue derive for Deref/DerefMut/From on single-field
justpav05 Sep 10, 2026
f031fb3
fix: group orchestrator context values and apply ContextValue derive
justpav05 Sep 10, 2026
73a2693
fix: update TODO
justpav05 Sep 10, 2026
7210aa2
fix: add shared upac_types::decoder::verify checksum helper, identical
justpav05 Sep 10, 2026
582c867
fix: add reuse head
justpav05 Sep 10, 2026
22299e2
fix: add shared upac_types::decoder::build_decode_response, identical
justpav05 Sep 10, 2026
eefa95b
fix: rebuild upac-decoder-alpm around current upac_abi/upac_types
justpav05 Sep 10, 2026
bb3cc24
fix: fix test
justpav05 Sep 10, 2026
2b014b2
fix: rebuild upac-decoder-deb around current upac_abi/upac_types shapes,
justpav05 Sep 11, 2026
152e865
fix: add DecodeError::from(Utf8Error), dedupe repeated
justpav05 Sep 11, 2026
ee31757
fix: use ? instead .map_err
justpav05 Sep 11, 2026
21c4e2a
fix: teach CFree's cvec_free to own-free CVec<CSlice> fields
justpav05 Sep 11, 2026
5610399
fix: derive CFree on CDecodeResponse now that cvec_free handles
justpav05 Sep 11, 2026
3623bf7
fix: collapse free_decode_response to response.free() in alpm/deb/rpm
justpav05 Sep 11, 2026
a8fe9d5
fix: restructure rpm's header.rs around self-parsing types
justpav05 Sep 11, 2026
5b9d870
fix: rebuild upac-decoder-xbps around current upac_abi/upac_types
justpav05 Sep 11, 2026
e399dce
fix: silence clippy too_many_arguments on Booter::install with an
justpav05 Sep 11, 2026
d1827dd
fix: addressed Clippy suggestions
justpav05 Sep 11, 2026
d6cf10a
fix: fixed clippy suggestions
justpav05 Sep 11, 2026
ecf37d9
fix: split CI clippy/test/build into upac-cli's dynamic-default vs
justpav05 Sep 11, 2026
07b080d
fix: rename bare 'a/'b lifetimes to descriptive names across lib/lib —
justpav05 Sep 11, 2026
b2e67d2
fix: rename bare 'a lifetimes to descriptive names in
justpav05 Sep 11, 2026
8b252fb
fix: rename bare 'a lifetimes to descriptive names in lib/types —
justpav05 Sep 11, 2026
167013c
fix: register CPartitionMount as a validatable composite in lib/macro so
justpav05 Sep 11, 2026
6cd7cd6
feat: add CPartitionMount and CSetupExistingRequest to lib/abi — a real
justpav05 Sep 11, 2026
e234807
feat: add CPartitionSpec, CGptLayout, CBtrfsOptions, and
justpav05 Sep 11, 2026
34c3f77
fix: register CPartitionSpec/CGptLayout/CBtrfsOptions as validatable
justpav05 Sep 11, 2026
88f1f56
feat: add SetupExistingRequest/SetupWholeDiskRequest Rust-domain mirrors
justpav05 Sep 11, 2026
34b4362
feat: add ErrorDomain::Setup and move GenesisStage into
justpav05 Sep 11, 2026
f787d91
feat: add Setup variant to ErrorDomain in lib/abi — genesis's C-ABI
justpav05 Sep 11, 2026
8fc55fd
fix: slightly reorganized the error structure; errors now share common
justpav05 Sep 11, 2026
2a0b7b4
fix: fixed import errors after moving items to `types`
justpav05 Sep 11, 2026
842f751
fix: added a new variant for the errorA
justpav05 Sep 11, 2026
6f91d79
fix: fixed build errors and Clippy suggestions
justpav05 Sep 11, 2026
d84a107
fix: fixed build errors and Clippy suggestions
justpav05 Sep 11, 2026
8aa87bf
fix: add macro to type for stages
justpav05 Sep 11, 2026
651bd9d
fix: repair uninstaller's open.rs move-out-through-Deref bug (stray `*`
justpav05 Sep 11, 2026
1f36ee9
fix: add new stages
justpav05 Sep 11, 2026
427c6bc
fix: fixed standalone progress functions
justpav05 Sep 12, 2026
111a1b2
fix: split CI configuration into multiple files to separate tasks and
justpav05 Sep 13, 2026
e4faca3
fux: fix build for setup
justpav05 Sep 13, 2026
bd1a075
fix: fixed the location, as required by GitHub
justpav05 Sep 13, 2026
dae8833
fix: fix names of CI
justpav05 Sep 13, 2026
6d0ea3e
fix: let grub-install register its own NVRAM Boot#### entry instead of
justpav05 Sep 15, 2026
426b2ae
fix: replace write_boot_entry's bare String return with a
justpav05 Sep 15, 2026
54ef884
feat: implement Refind/SystemdBoot install() via their own native
justpav05 Sep 15, 2026
50e2c26
feat: restructure genesis/ into stages/ and give upac-setup a real C-ABI
justpav05 Sep 15, 2026
c68931a
fix: update files/uninstaller checkout.rs for write_boot_entry's
justpav05 Sep 15, 2026
b01d636
fix: add setup abi vertion const
justpav05 Sep 15, 2026
4a72449
fix: fixed Clippy suggestions; exported function `cancel` is now
justpav05 Sep 15, 2026
2896560
fix: cancel now names lib_cancel
justpav05 Sep 15, 2026
fe89141
feat: rewrite up-sp to talk to upac-setup exclusively through its new
justpav05 Sep 15, 2026
1f83f1c
feat: make write_boot_entry pick the boot resource matching the selected
justpav05 Sep 15, 2026
7a194d8
fix: repair up's static-link symbol names in libcore.rs
justpav05 Sep 16, 2026
a24c910
fix: repair six stale integration tests in lib/lib/tests/ left behind by
justpav05 Sep 16, 2026
d19d4ae
fix: update TODO
justpav05 Sep 16, 2026
71d0217
fix: update TODOA
justpav05 Sep 16, 2026
1b44069
fix: removed the `lib` directory and the library build configuration;
justpav05 Sep 16, 2026
7704299
Register InitramfsGenerator as a shared C-ABI type
justpav05 Sep 20, 2026
9a5c4e4
Add InitramfsGenerator to the C-ABI
justpav05 Sep 20, 2026
5e5d885
Add --initramfs-generator flag to up-sp
justpav05 Sep 20, 2026
17ae630
Wire initramfs_generator through the request types, fix stage ordering
justpav05 Sep 20, 2026
8ea73e5
Add FileHandle::export_directory, the reverse of import_directory
justpav05 Sep 20, 2026
5000531
fix: update TODO
justpav05 Sep 20, 2026
23b0e02
Implement KernelStage
justpav05 Sep 20, 2026
7491319
fix: update TODO
justpav05 Sep 20, 2026
07ec42e
Add the composefs-setup-root dracut module
justpav05 Sep 20, 2026
89113df
fix: update TODO
justpav05 Sep 20, 2026
c4ef1ef
fix: remove ImportSystemStage's dead wants-symlink
justpav05 Sep 20, 2026
fdf38bb
fix: remove compile err
justpav05 Sep 20, 2026
c3f16ec
Add a non-systemd mkinitcpio hook for composefs-setup-root, fix REUSE
justpav05 Sep 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Rust CI
name: Rust CI Clippy and lint
on:
push:
branches: [main]
Expand Down Expand Up @@ -36,31 +36,9 @@ jobs:
run: cargo fmt --all -- --check

- name: Clippy
run: cargo clippy --workspace --all-targets -- -D warnings
run: |
cargo clippy --workspace --all-targets --exclude upac-setup --exclude upac-setup-cli -- -D warnings
cargo clippy -p upac-setup -p upac-setup-cli --all-targets -- -D warnings

- name: Lint style
run: cargo xtask lint-style

- name: Test
run: cargo test --workspace --lib --tests

link-modes:
name: Link modes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libblkid-dev libmount-dev clang mold

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack

- name: Build every dynamic-plugins/static-link/builtin-* combination
run: |
cargo hack build -p upac-cli -p upac-lib --feature-powerset \
--mutually-exclusive-features dynamic-plugins,static-link \
--at-least-one-of dynamic-plugins,static-link
44 changes: 44 additions & 0 deletions .github/workflows/ci-rust-link.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Rust CI link test
on:
push:
branches: [main]
paths-ignore: ["**.md", "doc/**", "LICENSES/**", "REUSE.toml"]
pull_request:
branches: [main]
paths-ignore: ["**.md", "doc/**", "LICENSES/**", "REUSE.toml"]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.head.ref || github.ref_name }}
cancel-in-progress: true

permissions:
contents: read

env:
CARGO_TERM_COLOR: always

jobs:
link-modes:
name: Link modes
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libblkid-dev libmount-dev clang mold

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Build fully dynamic (dlopen upac-lib + booters/decoders)
run: cargo build -p upac-cli -p upac-lib

- name: Build fully static (all booters/decoders built in)
run: |
cargo build -p upac-cli -p upac-lib --no-default-features \
--features upac-cli/builtin-all,upac-lib/builtin-all

- name: Build booters/decoders as standalone dlopen'd plugins
run: |
cargo build -p upac-grub -p upac-refind -p upac-systemd-boot -p upac-uki \
-p alpm -p deb -p rpm -p xbps --features cdylib
38 changes: 38 additions & 0 deletions .github/workflows/ci-rust-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Rust CI tests
on:
push:
branches: [main]
paths-ignore: ["**.md", "doc/**", "LICENSES/**", "REUSE.toml"]
pull_request:
branches: [main]
paths-ignore: ["**.md", "doc/**", "LICENSES/**", "REUSE.toml"]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.head.ref || github.ref_name }}
cancel-in-progress: true

permissions:
contents: read

env:
CARGO_TERM_COLOR: always

jobs:
test:
name: Build, Test, and Lints
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libblkid-dev libmount-dev clang mold gettext

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: Test
run: |
cargo test --workspace --tests
cargo test -p upac-setup -p upac-setup-cli --tests
73 changes: 73 additions & 0 deletions LICENSES/Apache-2.0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Loading
Loading