diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..326a750 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,7 @@ +# Catch-all code owner +* @RadxaYuntian + +# Disown CI yaml so automerge can work +# https://github.com/orgs/community/discussions/23064#discussioncomment-8383923 +.github/actions/**/*.yaml +.github/workflows/*.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..a574de2 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,6 @@ +updates: +- directory: "/" + package-ecosystem: "github-actions" + schedule: + interval: "daily" +version: 2 \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 2c7d170..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: 2 -updates: - # Maintain dependencies for GitHub Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..848df04 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,66 @@ +env: + GH_TOKEN: "${{ github.token }}" +jobs: + build: + needs: "prepare_release" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + - name: "Build image" + uses: "RadxaOS-SDK/rsdk/.github/actions/build@main" + with: + edition: "${{ matrix.edition }}" + github-token: "${{ secrets.GITHUB_TOKEN }}" + product: "${{ matrix.product }}" + release-id: "${{ needs.prepare_release.outputs.release_id }}" + suite: "${{ matrix.suite }}" + strategy: + matrix: + edition: "${{ fromJSON(needs.prepare_release.outputs.editions )}}" + product: + - "radxa-e25" + suite: "${{ fromJSON(needs.prepare_release.outputs.suites )}}" + prepare_release: + outputs: + editions: "${{ steps.query.outputs.editions }}" + release_id: "${{ steps.release.outputs.id }}" + suites: "${{ steps.query.outputs.suites }}" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + with: + fetch-depth: 0 + fetch-tags: true + - name: "Check for existing releases" + run: | + TAG="rsdk-b${{ github.run_number }}" + if git show-ref --tags --verify --quiet "refs/tags/${TAG}"; then + echo "Release ${TAG} exists." + exit 1 + fi + - name: "Generate changelog" + uses: "radxa-repo/rbuild-changelog@main" + with: + product: "radxa-e25" + - id: "query" + name: "Query product info" + uses: "RadxaOS-SDK/rsdk/.github/actions/query@main" + with: + product: "radxa-e25" + - id: "release" + name: "Create empty release" + uses: "softprops/action-gh-release@v2" + with: + body_path: "README.md" + draft: false + files: ".changelog/changelog.md" + name: "b${{ github.run_number }} (rsdk)" + prerelease: true + tag_name: "rsdk-b${{ github.run_number }}" + target_commitish: "main" + token: "${{ secrets.GITHUB_TOKEN }}" +name: "Build image for release channel" +"on": + workflow_dispatch: {} \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index ea74d34..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Build image for Release channel -on: - workflow_dispatch: - -env: - GH_TOKEN: ${{ github.token }} - -jobs: - prepare_release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Generate rbuild changelog - uses: radxa-repo/rbuild-changelog@main - with: - product: radxa-e25 - - name: Create empty release - id: release - uses: softprops/action-gh-release@v1 - with: - tag_name: b${{ github.run_number }} - body_path: README.md - token: ${{ secrets.GITHUB_TOKEN }} - target_commitish: main - draft: false - prerelease: true - files: .changelog/changelog.md - outputs: - release_id: ${{ steps.release.outputs.id }} - build: - runs-on: ubuntu-latest - needs: prepare_release - strategy: - matrix: - boards: [radxa-e25] - build_systems: [rbuild] - distros: [debian, ubuntu] - flavors: [xfce, cli] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Upload rbuild image - uses: radxa-repo/rbuild@main - if: matrix.build_systems == 'rbuild' - with: - board: ${{ matrix.boards }} - distro: ${{ matrix.distros }} - flavor: ${{ matrix.flavors }} - release-id: ${{ needs.prepare_release.outputs.release_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/check_linked_issue.yaml b/.github/workflows/check_linked_issue.yaml new file mode 100644 index 0000000..dabdbfa --- /dev/null +++ b/.github/workflows/check_linked_issue.yaml @@ -0,0 +1,17 @@ +jobs: + check_pull_requests: + name: "Check linked issues" + permissions: + issues: "write" + pull-requests: "write" + runs-on: "ubuntu-latest" + steps: + - name: "Check linked issues" + uses: "nearform-actions/github-action-check-linked-issues@v1" +name: "Check linked issues" +"on": + pull_request_target: + types: + - "opened" + - "reopened" +permissions: {} \ No newline at end of file diff --git a/.github/workflows/dependabot.yaml b/.github/workflows/dependabot.yaml new file mode 100644 index 0000000..355b64c --- /dev/null +++ b/.github/workflows/dependabot.yaml @@ -0,0 +1,23 @@ +jobs: + dependabot: + if: "github.actor == 'dependabot[bot]'" + runs-on: "ubuntu-latest" + steps: + - id: "metadata" + name: "Dependabot metadata" + uses: "dependabot/fetch-metadata@v2" + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + - env: + GH_TOKEN: "${{secrets.GITHUB_TOKEN}}" + PR_URL: "${{github.event.pull_request.html_url}}" + name: "Approve a PR & Enable auto-merge for Dependabot PRs" + run: | + gh pr review --approve "$PR_URL" + gh pr merge --auto --merge "$PR_URL" +name: "Dependabot auto-merge" +"on": + pull_request: {} +permissions: + contents: "write" + pull-requests: "write" \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..0475c9d --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,71 @@ +env: + GH_TOKEN: "${{ github.token }}" +jobs: + build: + needs: "prepare_release" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + - name: "Build image" + uses: "RadxaOS-SDK/rsdk/.github/actions/build@main" + with: + edition: "${{ matrix.edition }}" + github-token: "${{ secrets.GITHUB_TOKEN }}" + product: "${{ matrix.product }}" + release-id: "${{ needs.prepare_release.outputs.release_id }}" + suite: "${{ matrix.suite }}" + tag_name: "rsdk-t${{ github.run_number }}" + test-repo: true + timestamp: "t${{ github.run_number }}" + strategy: + matrix: + edition: "${{ fromJSON(needs.prepare_release.outputs.editions )}}" + product: + - "radxa-e25" + suite: "${{ fromJSON(needs.prepare_release.outputs.suites )}}" + prepare_release: + outputs: + editions: "${{ steps.query.outputs.editions }}" + release_id: "${{ steps.release.outputs.id }}" + suites: "${{ steps.query.outputs.suites }}" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout" + uses: "actions/checkout@v4" + with: + fetch-depth: 0 + fetch-tags: true + - name: "Check for existing releases" + run: | + TAG="rsdk-t${{ github.run_number }}" + if git show-ref --tags --verify --quiet "refs/tags/${TAG}"; then + echo "Release ${TAG} exists." + exit 1 + fi + - name: "Generate changelog" + uses: "radxa-repo/rbuild-changelog@main" + with: + product: "radxa-e25" + - id: "query" + name: "Query product info" + uses: "RadxaOS-SDK/rsdk/.github/actions/query@main" + with: + product: "radxa-e25" + - id: "release" + name: "Create empty release" + uses: "softprops/action-gh-release@v2" + with: + body: | + This is a test build for internal development. + Only use when specifically instructed by Radxa support. + draft: false + files: ".changelog/changelog.md" + name: "t${{ github.run_number }} (rsdk)" + prerelease: true + tag_name: "rsdk-t${{ github.run_number }}" + target_commitish: "main" + token: "${{ secrets.GITHUB_TOKEN }}" +name: "Build image for test channel" +"on": + workflow_dispatch: {} \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 771df8b..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Build image for Test channel -on: - workflow_dispatch: - -env: - GH_TOKEN: ${{ github.token }} - -jobs: - prepare_release: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Generate rbuild changelog - uses: radxa-repo/rbuild-changelog@main - with: - product: radxa-e25 - - name: Create empty release - id: release - uses: softprops/action-gh-release@v1 - with: - tag_name: test-build-${{ github.run_number }} - body: | - This is a test build for internal development. - Only use when specifically instructed by Radxa support. - token: ${{ secrets.GITHUB_TOKEN }} - target_commitish: main - draft: false - prerelease: true - files: .changelog/changelog.md - outputs: - release_id: ${{ steps.release.outputs.id }} - build: - runs-on: ubuntu-latest - needs: prepare_release - strategy: - matrix: - boards: [radxa-e25] - build_systems: [rbuild] - distros: [debian, ubuntu] - flavors: [xfce, cli] - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Upload rbuild image - uses: radxa-repo/rbuild@main - if: matrix.build_systems == 'rbuild' - with: - board: ${{ matrix.boards }} - distro: ${{ matrix.distros }} - flavor: ${{ matrix.flavors }} - release-id: ${{ needs.prepare_release.outputs.release_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - test-repo: true - timestamp: test-build-${{ github.run_number }} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6830ee2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,335 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 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 General Public License is a free, copyleft license for +software and other kinds of works. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is 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. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + +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. + +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + +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 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. diff --git a/README.md b/README.md index 574daf9..e8557d2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Radxa E25 Dual 2.5Gb Ethernet Carrier Board -[![Build image for Release channel](https://github.com/radxa-build/radxa-e25/actions/workflows/build.yml/badge.svg)](https://github.com/radxa-build/radxa-e25/actions/workflows/build.yml) [![Build image for Test channel](https://github.com/radxa-build/radxa-e25/actions/workflows/test.yml/badge.svg)](https://github.com/radxa-build/radxa-e25/actions/workflows/test.yml) +[![Build image for Release channel](https://github.com/radxa-build/radxa-e25/actions/workflows/build.yaml/badge.svg)](https://github.com/radxa-build/radxa-e25/actions/workflows/build.yaml) [![Build image for Test channel](https://github.com/radxa-build/radxa-e25/actions/workflows/test.yaml/badge.svg)](https://github.com/radxa-build/radxa-e25/actions/workflows/test.yaml) ## What is this? @@ -7,21 +7,14 @@ This repo is the central location for Radxa-built system images for Radxa E25 Du ## What images are provided? -Currently 4 flavors are provided: - -- Debian Xfce: This flavor is officially supported, tested, and recommended for all users. -- Debian CLI: This flavor is officially supported. This flavor is quite minimal and is intended for headless usage. We do not support desktop usage on top of this flavor. -- Ubuntu Xfce: This flavor is provided as-is except for critical issues. Desktop is currently not working and we intend to fix it in a later time. This (currently broken) build is generated to catch build system issues. -- Ubuntu CLI: This flavor is provided as-is except for critical issues. Users should look at Debian CLI as an alternative. - Please also always use [the latest release](https://github.com/radxa-build/radxa-e25/releases/latest) instead of any pre-release / test builds. Those will not be supported. -## Is there any other options? +## Where is the source code? -Please visit [our Wiki](https://wiki.radxa.com/Rock3/downloads) for more download options. +This repository is only for hosting the GitHub workflows that build the image. As such, you will need to examine the workflow to find the builder. ## Help! Something doesn't work! -For other questions, please first take a look at [our Wiki](https://wiki.radxa.com/Rock3/CM/CM3I/E25), which covers the most basic usages. +For other questions, please first take a look at [our Documentation](https://docs.radxa.com), which covers the most basic usages. Should you have any additional questions, please visit [our forum](https://forum.radxa.com/) or [our Discord](https://rock.sh/go), and we are willing to help.