From 06d617495b72a6f350535f18c43fa349b25eceae Mon Sep 17 00:00:00 2001 From: Zhijie Yang Date: Tue, 14 Jul 2026 21:18:35 +0200 Subject: [PATCH 1/2] feat: pack with snapcraft --- .github/workflows/snap.yml | 53 +++ .gitignore | 1 + LICENSE | 661 +++++++++++++++++++++++++++++++++++++ README.md | 60 ++++ snap/gui/olav-app.png | Bin 0 -> 75636 bytes snap/snapcraft.yaml | 49 +++ 6 files changed, 824 insertions(+) create mode 100644 .github/workflows/snap.yml create mode 100644 LICENSE create mode 100644 snap/gui/olav-app.png create mode 100644 snap/snapcraft.yaml diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml new file mode 100644 index 0000000..25a0fe5 --- /dev/null +++ b/.github/workflows/snap.yml @@ -0,0 +1,53 @@ +name: Snap + +on: + push: + branches: + - main + tags: + - 'v*' + paths: + - '.github/workflows/snap.yml' + - 'snap/**' + pull_request: + paths: + - '.github/workflows/snap.yml' + - 'snap/**' + workflow_dispatch: + +jobs: + build-and-test: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v7 + - id: snapcraft + uses: snapcore/action-build@v1 + - name: Check release tag + if: startsWith(github.ref, 'refs/tags/v') + env: + SNAP_FILE: ${{ steps.snapcraft.outputs.snap }} + run: | + snap_version="$(snap info "$SNAP_FILE" | awk '$1 == "version:" {print $2}')" + test "$GITHUB_REF_NAME" = "v${snap_version}" + - name: Install snap + run: sudo snap install --dangerous "${{ steps.snapcraft.outputs.snap }}" + - name: Test registry, cache, and home access + env: + TEST_IMAGE: busybox:1.36 + run: | + first_run="$(olav --resolve-only "docker://${TEST_IMAGE}" 2>&1)" + printf '%s\n' "$first_run" + grep -q '^loaded ' <<< "$first_run" + + second_run="$(olav --resolve-only "docker://${TEST_IMAGE}" 2>&1)" + printf '%s\n' "$second_run" + grep -q 'using cached' <<< "$second_run" + + cache_path="$(sed -n 's/^loaded .* from //p' <<< "$first_run")" + test -n "$cache_path" + cp -a "$cache_path" "$GITHUB_WORKSPACE/snap-smoke-layout" + olav --resolve-only "$GITHUB_WORKSPACE/snap-smoke-layout" + - uses: actions/upload-artifact@v4 + with: + name: olav-snap-amd64 + path: ${{ steps.snapcraft.outputs.snap }} diff --git a/.gitignore b/.gitignore index 5b9254d..2faeb90 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /olav /olav-export/ +/*.snap diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/README.md b/README.md index 8dc2a38..f0a460b 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,14 @@ It keeps the raw OCI layout visible, adds a semantic image graph for multi-platf ## Installation +From the Snap Store: + +```sh +sudo snap install olav +``` + +Or install the latest Go release: + ```sh go install github.com/canonical/olav/cmd/olav@latest ``` @@ -71,6 +79,36 @@ Authentication uses Docker and containers auth-file locations: If authentication fails, `olav` prints a hint pointing to these paths. Login with `docker`, `podman`, or `skopeo` before retrying private images. +### Snap Cache And Auth + +The snap keeps its cache under `~/snap/olav/common/.cache/olav` so downloaded images remain available after snap upgrades. + +Strict confinement cannot read the host's hidden Docker and containers auth files. Create credentials in the snap's persistent data directory instead: + +```sh +mkdir -p "$HOME/snap/olav/common/.docker" +DOCKER_CONFIG="$HOME/snap/olav/common/.docker" docker login +``` + +For a containers auth file, place it at `~/snap/olav/common/containers/auth.json`. Docker configurations that invoke host credential helpers are not supported inside the strict snap; use a dedicated configuration containing registry credentials or tokens. + +Registry access and ordinary, non-hidden files under the home directory are available automatically. Access to removable media and the Docker daemon must be connected explicitly when needed: + +```sh +sudo snap connect olav:removable-media +sudo snap connect olav:docker +``` + +The Snap Store requires publisher approval for the privileged `docker` interface before that connection is available to Store installs. + +If Docker itself is installed as a snap, connect directly to its daemon slot: + +```sh +sudo snap connect olav:docker docker:docker-daemon +``` + +Strict confinement does not provide access to arbitrary locations such as `/srv`, hidden home directories, nonstandard Unix sockets, or exports outside connected locations. + For `docker-daemon:name@sha256:`, `olav` resolves the digest through the daemon's local `RepoDigests` and copies the matching local image. The digest-pinned image must already exist locally. Docker daemon export can reconstruct manifests, so remote registry manifest bytes are not always preserved byte-for-byte through daemon sources. Use `docker://name@sha256:` when the exact registry manifest digest must be inspected. ## Views @@ -194,3 +232,25 @@ Layer file hierarchy is preserved. ## Maintenance The repository includes GitHub Actions workflows for unit tests, source integration checks, and daily CodeQL scanning. Renovate is configured to open updates for Go modules and GitHub Actions. + +## Snap Packaging + +Build the snap locally with: + +```sh +sudo snap install snapcraft --classic +snapcraft pack +sudo snap install --dangerous ./olav_*.snap +``` + +The recipe pins both `version` and `source-tag` to a GitHub release. Update both values to the same `X.Y.Z` / `vX.Y.Z` release before building a new snap. Build `amd64` and `arm64` revisions natively or with the Snapcraft remote build service: + +```sh +snapcraft remote-build +``` + +After reserving the `olav` name and authenticating with the Snap Store, upload tested revisions to `edge` before promoting them to `candidate` and `stable`: + +```sh +snapcraft upload --release=edge olav_*.snap +``` diff --git a/snap/gui/olav-app.png b/snap/gui/olav-app.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9be7673399b34482ba4ec10ad037782504935a GIT binary patch literal 75636 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 Date: Tue, 14 Jul 2026 21:56:20 +0200 Subject: [PATCH 2/2] chore: fix test script in snap workflow Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: zhijie-yang --- .github/workflows/snap.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml index 25a0fe5..3649ba2 100644 --- a/.github/workflows/snap.yml +++ b/.github/workflows/snap.yml @@ -43,7 +43,7 @@ jobs: printf '%s\n' "$second_run" grep -q 'using cached' <<< "$second_run" - cache_path="$(sed -n 's/^loaded .* from //p' <<< "$first_run")" + cache_path="$(sed -n 's/^loaded .* from //p' <<< "$first_run" | head -n1)" test -n "$cache_path" cp -a "$cache_path" "$GITHUB_WORKSPACE/snap-smoke-layout" olav --resolve-only "$GITHUB_WORKSPACE/snap-smoke-layout"