diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b81becdeff..63aec28e92 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -260,15 +260,13 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - bundle-deb: - name: Create a *.deb Linux bundle + bundle-linux: + name: Create a Linux bundle runs-on: ubuntu-22.04 # keep the version fixed to avoid libc and dynamic linked library issues if: ${{ startsWith(github.ref, 'refs/tags/v') || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} needs: [linux_tests] env: ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }} - DIGITALOCEAN_SPACES_ACCESS_KEY: ${{ secrets.DIGITALOCEAN_SPACES_ACCESS_KEY }} - DIGITALOCEAN_SPACES_SECRET_KEY: ${{ secrets.DIGITALOCEAN_SPACES_SECRET_KEY }} steps: - name: Checkout repo uses: actions/checkout@v4 @@ -312,19 +310,18 @@ jobs: exit 1 fi - # TODO linux : Find a way to add licenses to the final bundle - # - name: Generate license file - # run: script/generate-licenses + - name: Generate license file + run: script/generate-licenses - - name: Create Linux *.deb bundle + - name: Create and upload Linux .tar.gz bundle run: script/bundle-linux - - name: Upload app bundle to workflow run if main branch or specific label + - name: Upload Linux bundle to workflow run if main branch or specific label uses: actions/upload-artifact@v4 if: ${{ github.ref == 'refs/heads/main' }} || contains(github.event.pull_request.labels.*.name, 'run-bundling') }} with: - name: Zed_${{ github.event.pull_request.head.sha || github.sha }}.deb - path: target/release/*.deb + name: zed-${{ github.event.pull_request.head.sha || github.sha }}-x86_64-unknown-linux-gnu.tar.gz + path: zed-*.tar.gz # TODO linux : make it stable enough to be uploaded as a release # - uses: softprops/action-gh-release@v1 diff --git a/.github/workflows/release_nightly.yml b/.github/workflows/release_nightly.yml index 5a625c448a..875a21aa0f 100644 --- a/.github/workflows/release_nightly.yml +++ b/.github/workflows/release_nightly.yml @@ -94,7 +94,7 @@ jobs: run: script/upload-nightly macos bundle-deb: - name: Create a *.deb Linux bundle + name: Create a Linux *.tar.gz bundle if: github.repository_owner == 'zed-industries' runs-on: ubuntu-22.04 # keep the version fixed to avoid libc and dynamic linked library issues needs: tests @@ -125,12 +125,11 @@ jobs: echo "Publishing version: ${version} on release channel nightly" echo "nightly" > crates/zed/RELEASE_CHANNEL - # TODO linux : find a way to add licenses to the final bundle - # - name: Generate license file - # run: script/generate-licenses + - name: Generate license file + run: script/generate-licenses - - name: Create Linux *.deb bundle + - name: Create Linux .tar.gz bundle run: script/bundle-linux - name: Upload Zed Nightly - run: script/upload-nightly linux-deb + run: script/upload-nightly linux-targz diff --git a/crates/zed/resources/zed.desktop b/crates/zed/resources/zed.desktop new file mode 100644 index 0000000000..f686f0355e --- /dev/null +++ b/crates/zed/resources/zed.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Zed +GenericName=Text Editor +Comment=A high-performance, multiplayer code editor. +TryExec=zed +StartupNotify=true +Exec=zed +Icon=zed +Categories=TextEditor;Development;IDE; +Keywords=zed; +MimeType=text/plain; diff --git a/script/bundle-linux b/script/bundle-linux index 46afe1274d..a2f1bdd1a1 100755 --- a/script/bundle-linux +++ b/script/bundle-linux @@ -2,32 +2,20 @@ set -euxo pipefail -build_flag="--release" -target_dir="release" -bundle_name="" -zed_crate="zed" - - +# Function for displaying help info help_info() { echo " -Usage: ${0##*/} [options] [bundle_name] -Build the application bundle for Linux. +Usage: ${0##*/} [options] +Build a release .tar.gz for Linux. Options: - -d Compile in debug mode - -h Display this help and exit + -h Display this help and exit. " } -while getopts 'dh' flag +while getopts 'h' flag do case "${flag}" in - d) - export CARGO_INCREMENTAL=true - export CARGO_BUNDLE_SKIP_BUILD=true - build_flag=""; - target_dir="debug" - ;; h) help_info exit 0 @@ -35,68 +23,54 @@ do esac done -shift $((OPTIND-1)) - -if [[ $# -gt 0 ]]; then - if [ "$1" ]; then - bundle_name=$1 - fi -fi - export ZED_BUNDLE=true -cargo_bundle_version=$(cargo -q bundle --help 2>&1 | head -n 1 || echo "") -if [ "$cargo_bundle_version" != "cargo-bundle v0.6.0-zed" ]; then - cargo install cargo-bundle --git https://github.com/zed-industries/cargo-bundle.git --branch zed-deploy +channel=$(/dev/null || true - dpkg-deb -x "${bundle_path}" bundle/ - dpkg-deb --control "${bundle_path}" bundle/DEBIAN - mkdir -p bundle/usr/local/bin/ - mv bundle/usr/bin/Zed "bundle/usr/local/bin/zed-$channel" - cp "${target_dir}/cli" "bundle/usr/local/bin/cli-$channel" - ln -s "/usr/local/bin/cli-$channel" "bundle/usr/local/bin/zed" - rm -rf bundle/usr/bin/ - dpkg-deb -b bundle/ "${target_dir}/${bundle_name}" - bundle_path="${PWD}/${target_dir}/${bundle_name}" -popd -echo "Bundled ${bundle_path}" +rm -rf "${archive}" +tar -czvf $archive -C ${temp_dir} . diff --git a/script/generate-licenses b/script/generate-licenses index d2c3aa3bcf..5f788ed03e 100755 --- a/script/generate-licenses +++ b/script/generate-licenses @@ -19,9 +19,12 @@ echo -e "# ###### CODE LICENSES ######\n" >> $OUTPUT_FILE echo "Generating cargo licenses" cargo about generate --fail -c script/licenses/zed-licenses.toml script/licenses/template.hbs.md >> $OUTPUT_FILE -sed -i '' 's/"/"/g' $OUTPUT_FILE -sed -i '' 's/'/'\''/g' $OUTPUT_FILE # The ` '\'' ` thing ends the string, appends a single quote, and re-opens the string -sed -i '' 's/=/=/g' $OUTPUT_FILE -sed -i '' 's/`/`/g' $OUTPUT_FILE -sed -i '' 's/<//g' $OUTPUT_FILE + +sed -i.bak 's/"/"/g' $OUTPUT_FILE +sed -i.bak 's/'/'\''/g' $OUTPUT_FILE # The ` '\'' ` thing ends the string, appends a single quote, and re-opens the string +sed -i.bak 's/=/=/g' $OUTPUT_FILE +sed -i.bak 's/`/`/g' $OUTPUT_FILE +sed -i.bak 's/<//g' $OUTPUT_FILE + +rm -rf "${OUTPUT_FILE}.bak" diff --git a/script/install.sh b/script/install.sh new file mode 100644 index 0000000000..1a2485251c --- /dev/null +++ b/script/install.sh @@ -0,0 +1 @@ +#!/bin/sh diff --git a/script/upload-nightly b/script/upload-nightly index 68e321f9b6..298050b25a 100755 --- a/script/upload-nightly +++ b/script/upload-nightly @@ -4,7 +4,7 @@ bash -euo pipefail source script/lib/blob-store.sh -allowed_targets=("linux-deb" "macos") +allowed_targets=("linux-targz" "macos") is_allowed_target() { for val in "${allowed_targets[@]}"; do if [[ "$1" == "$val" ]]; then @@ -40,11 +40,11 @@ case "$target" in upload_to_blob_store $bucket_name "target/release/Zed.dmg" "nightly/Zed.dmg" upload_to_blob_store $bucket_name "target/latest-sha" "nightly/latest-sha" ;; - linux-deb) - find target/release -type f -name "*.deb" -print0 | while IFS= read -r -d '' bundle_file; do + linux-targz) + find . -type f -name "zed-*.tar.gz" -print0 | while IFS= read -r -d '' bundle_file; do upload_to_blob_store $bucket_name "$bundle_file" "nightly/$(basename "$bundle_file")" done - upload_to_blob_store $bucket_name "target/latest-sha" "nightly/latest-sha-linux-deb" + upload_to_blob_store $bucket_name "target/latest-sha" "nightly/latest-sha-linux-targz" ;; *) echo "Error: Unknown target '$target'"