├── .github ├── dependabot.yml ├── logo.png ├── renovate.json └── workflows │ └── build.yml ├── license.md └── readme.md /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: weekly 7 | -------------------------------------------------------------------------------- /.github/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qemus/virtiso-arm/a9313c3ca98a21eced6570c22d985e0bc183d739/.github/logo.png -------------------------------------------------------------------------------- /.github/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": ["config:recommended", ":disableDependencyDashboard"] 4 | } 5 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '0 0 * * *' 7 | 8 | concurrency: 9 | group: build 10 | cancel-in-progress: false 11 | 12 | jobs: 13 | build: 14 | name: Build 15 | runs-on: ubuntu-latest 16 | permissions: 17 | actions: write 18 | packages: write 19 | contents: read 20 | steps: 21 | - 22 | name: Get latest version 23 | run: | 24 | #!/bin/bash 25 | url="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/" 26 | resp=$(curl -sS $url) 27 | latest_tag=$(echo "$resp" | grep -o 'href="[^"]*' | tail -c +98 | cut -f1 -d"/") 28 | [ -z "$latest_tag" ] && echo "Tag not found!" && exit 1 29 | echo "Found tag: \"${latest_tag}\"" 30 | echo "latest_tag=$latest_tag" >> $GITHUB_ENV 31 | base=$(echo "$latest_tag" | cut -f1 -d"-") 32 | echo "latest_base=$base" >> $GITHUB_ENV 33 | - 34 | name: Check if the tag exists locally 35 | uses: action-pack/tag-exists@v1 36 | id: checkTag 37 | with: 38 | tag: 'v${{ env.latest_tag }}' 39 | - 40 | name: Finish when found 41 | run: | 42 | #!/bin/bash 43 | if [[ "${{ steps.checkTag.outputs.exists }}" == "true" ]]; then 44 | echo "exists=true" >> $GITHUB_ENV 45 | exit 0 46 | fi 47 | url="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-${{ env.latest_tag }}" 48 | echo "Checking if ${url} exists.." 49 | resp=$(curl -I 2>/dev/null $url | head -1) 50 | if echo $resp | grep 404 >/dev/null; then 51 | echo "Download $url not found!" && exit 1 52 | else 53 | echo "exists=false" >> $GITHUB_ENV 54 | fi 55 | - 56 | name: Download Fedora drivers 57 | if: env.exists == 'false' 58 | id: fedora 59 | run: | 60 | #!/bin/bash 61 | sudo apt install rdfind genisoimage libarchive-tools symlinks 62 | url="https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-${{ env.latest_tag }}/virtio-win-${{ env.latest_base }}.iso" 63 | echo "Downloading $url" 64 | wget "$url" -O "/tmp/latest.iso" -q 65 | rm -rf /tmp/iso && mkdir /tmp/iso 66 | bsdtar -xf "/tmp/latest.iso" -C /tmp/iso/ 67 | - 68 | name: Strip unnecessary bloat 69 | if: env.exists == 'false' 70 | id: strip 71 | run: | 72 | #!/bin/bash 73 | cd /tmp/iso 74 | # Remove tools for other platforms 75 | sudo rm -rf /tmp/iso/i386 76 | sudo rm -rf /tmp/iso/guest-agent 77 | sudo rm -f /tmp/iso/virtio-win-gt-x86.msi 78 | sudo rm -f /tmp/iso/virtio-win-gt-x64.msi 79 | sudo rm -f /tmp/iso/virtio-win-guest-tools.exe 80 | sudo rm -f /tmp/iso/guest-agent/qemu-ga-i386.msi 81 | # Remove debug symbols 82 | sudo find /tmp/iso -iname "*.pdb" -type f -delete 83 | # Remove binaries for other platforms 84 | sudo find /tmp/iso -iname "x64" -type d -exec rm -rf {} + 85 | sudo find /tmp/iso -iname "x86" -type d -exec rm -rf {} + 86 | sudo find /tmp/iso -iname "amd64" -type d -exec rm -rf {} + 87 | # Remove buggy drivers (temporarily) 88 | sudo find /tmp/iso -iname "pvpanic" -type d -exec rm -rf {} + 89 | # Remove empty directories 90 | sudo find . -type d -empty -delete 91 | - 92 | name: Add missing ARM64 folder 93 | if: env.exists == 'false' 94 | id: legacy 95 | run: | 96 | #!/bin/bash 97 | cd /tmp/iso 98 | mkdir -p /tmp/iso/ARM64/w10 99 | mkdir -p /tmp/iso/ARM64/w11 100 | sudo cp -lpr vioscsi/w11/ARM64/. ARM64/w11/ 101 | sudo cp -lpr viostor/w11/ARM64/. ARM64/w11/ 102 | sudo cp -lpr vioscsi/w10/ARM64/. ARM64/w10/ 103 | sudo cp -lpr viostor/w10/ARM64/. ARM64/w10/ 104 | - 105 | name: Create symbolic links 106 | if: env.exists == 'false' 107 | id: symlinks 108 | run: | 109 | #!/bin/bash 110 | sudo rdfind -removeidentinode false -makehardlinks true /tmp/iso/ 111 | symlinks -orc /tmp/iso 112 | - 113 | name: Build minified ISO 114 | if: env.exists == 'false' 115 | id: build 116 | run: | 117 | #!/bin/bash 118 | cd /tmp/iso 119 | genisoimage -o /tmp/virtio-win-${{ env.latest_base }}.iso -r -iso-level 4 -input-charset iso8859-1 -V "virtio-win-${{ env.latest_base }}" /tmp/iso 120 | #sudo rm /tmp/iso/*.msi 121 | #sudo rm /tmp/iso/*.exe 122 | echo & echo 123 | tar -C /tmp/iso -cvzf /tmp/virtio-win-${{ env.latest_base }}.tar.gz * >/dev/null 124 | echo & echo 125 | XZ_OPT=-9 tar -C /tmp/iso -Jcvf /tmp/virtio-win-${{ env.latest_base }}.tar.xz * >/dev/null 126 | - 127 | name: Checkout 128 | if: env.exists == 'false' 129 | uses: actions/checkout@v4 130 | with: 131 | fetch-depth: 0 132 | - 133 | name: Create a release 134 | if: env.exists == 'false' 135 | uses: action-pack/github-release@v2 136 | with: 137 | body: " " 138 | tag: "v${{ env.latest_tag }}" 139 | title: "v${{ env.latest_base }}" 140 | token: ${{ secrets.REPO_ACCESS_TOKEN }} 141 | - 142 | name: Update release 143 | if: env.exists == 'false' 144 | uses: AButler/upload-release-assets@v3.0 145 | with: 146 | files: '/tmp/virtio-win-${{ env.latest_base }}.*' 147 | release-tag: "v${{ env.latest_tag }}" 148 | repo-token: ${{ secrets.REPO_ACCESS_TOKEN }} 149 | - 150 | name: Send mail 151 | if: env.exists == 'false' 152 | uses: action-pack/send-mail@v1 153 | with: 154 | to: ${{secrets.MAILTO}} 155 | from: Github Actions <${{secrets.MAILTO}}> 156 | connection_url: ${{secrets.MAIL_CONNECTION}} 157 | subject: Build of ${{ github.event.repository.name }} v${{ env.latest_tag }} completed 158 | body: | 159 | The build job of ${{ github.event.repository.name }} v${{ env.latest_tag }} was completed successfully! 160 | 161 | See https://github.com/${{ github.repository }}/actions for more information. 162 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | Copyright 2009-2017 Red Hat, Inc. and/or its affiliates. 2 | Copyright 2016 Google, Inc. 3 | Copyright 2016 Virtuozzo, Inc. 4 | Copyright 2007 IBM Corporation 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | Neither the name of the copyright holder nor the names of its 18 | contributors may be used to endorse or promote products derived from 19 | this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |