diff --git a/srcpkgs/zvm/patches/disable-self-update.patch b/srcpkgs/zvm/patches/disable-self-update.patch new file mode 100644 index 00000000000000..a12f58663c52a0 --- /dev/null +++ b/srcpkgs/zvm/patches/disable-self-update.patch @@ -0,0 +1,293 @@ +diff --git a/cli/upgrade.go b/cli/upgrade.go +index c6f7572..6dc42b0 100644 +--- a/cli/upgrade.go ++++ b/cli/upgrade.go +@@ -7,7 +7,7 @@ package cli + import ( + "archive/tar" + "encoding/json" +- "errors" ++ // "errors" + "fmt" + "io" + "net/http" +@@ -17,133 +17,134 @@ import ( + "strings" + "time" + +- "github.com/schollz/progressbar/v3" ++ // "github.com/schollz/progressbar/v3" + + "github.com/tristanisham/zvm/cli/meta" + + "github.com/charmbracelet/log" +- "github.com/tristanisham/clr" +- "golang.org/x/mod/semver" ++ // "github.com/tristanisham/clr" ++ // "golang.org/x/mod/semver" + ) + + // Upgrade will upgrade the system installation of ZVM. + // I wrote most of it before I remembered that GitHub has an API so expect major refactoring. + func (z *ZVM) Upgrade() error { +- defer func() { +- if err := z.Clean(); err != nil { +- log.Warn("ZVM failed to clean up after itself.") +- } +- }() +- +- tagName, upgradable, err := CanIUpgrade() +- if err != nil { +- return errors.Join(ErrFailedUpgrade, err) +- } +- +- if !upgradable { +- fmt.Printf("You are already on the latest release (%s) of ZVM :) \n", clr.Blue(meta.VERSION)) +- os.Exit(0) +- } else { +- fmt.Printf("You are on ZVM %s... upgrading to (%s)", meta.VERSION, tagName) +- } +- +- zvmInstallDirENV, err := z.getInstallDir() +- if err != nil { +- return err +- } +- +- log.Debug("exe dir", "path", zvmInstallDirENV) +- zvmBinaryName := "zvm" +- archive := "tar" +- if runtime.GOOS == "windows" { +- archive = "zip" +- zvmBinaryName = "zvm.exe" +- } +- +- download := fmt.Sprintf("zvm-%s-%s.%s", runtime.GOOS, runtime.GOARCH, archive) +- +- downloadUrl := fmt.Sprintf("https://github.com/tristanisham/zvm/releases/latest/download/%s", download) +- +- resp, err := http.Get(downloadUrl) +- if err != nil { +- errors.Join(ErrFailedUpgrade, err) +- } +- defer resp.Body.Close() +- +- tempDownload, err := os.CreateTemp(z.baseDir, fmt.Sprintf("*.%s", archive)) +- if err != nil { +- return err +- } +- defer tempDownload.Close() +- defer os.Remove(tempDownload.Name()) +- +- log.Debug("tempDir", "name", tempDownload.Name()) +- pbar := progressbar.DefaultBytes( +- int64(resp.ContentLength), +- "Upgrading ZVM...", +- ) +- +- _, err = io.Copy(io.MultiWriter(tempDownload, pbar), resp.Body) +- if err != nil { +- return err +- } +- +- zvmPath := filepath.Join(zvmInstallDirENV, zvmBinaryName) +- if err := os.Remove(filepath.Join(zvmInstallDirENV, zvmBinaryName)); err != nil { +- if err, ok := err.(*os.PathError); ok { +- if os.IsNotExist(err) { +- log.Debug("Failed to remove file", "path", zvmPath) +- } +- } +- } +- +- log.Debug("zvmPath", "path", zvmPath) +- +- newTemp, err := os.MkdirTemp(z.baseDir, "zvm-upgrade-*") +- if err != nil { +- log.Debugf("Failed to create temp direcory: %s", newTemp) +- return errors.Join(ErrFailedUpgrade, err) +- } +- +- defer os.RemoveAll(newTemp) +- +- if runtime.GOOS == "windows" { +- log.Debug("unzip", "from", tempDownload.Name(), "to", newTemp) +- if err := unzipSource(tempDownload.Name(), newTemp); err != nil { +- log.Error(err) +- return err +- } +- +- secondaryZVM := fmt.Sprintf("%s.old", zvmPath) +- log.Debug("SecondaryZVM", "path", secondaryZVM) +- +- newDownload := filepath.Join(newTemp, fmt.Sprintf("zvm-%s-%s", runtime.GOOS, runtime.GOARCH), zvmBinaryName) +- +- if err := replaceExe(newDownload, zvmPath); err != nil { +- log.Warn("This command might break if ZVM is installed outside of ~/.zvm/self/") +- return fmt.Errorf("upgrade error: %q", err) +- } +- // fmt.Println("Run the following to complete your upgrade on Windows.") +- // fmt.Printf("- Command Prompt:\n\tmove /Y '%s' '%s'\n", secondaryZVM, zvmPath) +- // fmt.Printf("- Powershell:\n\tMove-Item -Path '%s' -Destination '%s' -Force\n", secondaryZVM, zvmPath) +- +- } else { +- if err := untar(tempDownload.Name(), newTemp); err != nil { +- log.Error(err) +- return err +- } +- +- if err := os.Rename(filepath.Join(newTemp, zvmBinaryName), zvmPath); err != nil { +- log.Debugf("Failed to rename %s to %s", filepath.Join(newTemp, zvmBinaryName), zvmPath) +- return errors.Join(ErrFailedUpgrade, err) +- } +- } +- +- if err := os.Chmod(zvmPath, 0775); err != nil { +- log.Debugf("Failed to update permissions for %s", zvmPath) +- return errors.Join(ErrFailedUpgrade, err) +- } +- ++ // defer func() { ++ // if err := z.Clean(); err != nil { ++ // log.Warn("ZVM failed to clean up after itself.") ++ // } ++ // }() ++ // ++ // tagName, upgradable, err := CanIUpgrade() ++ // if err != nil { ++ // return errors.Join(ErrFailedUpgrade, err) ++ // } ++ // ++ // if !upgradable { ++ // fmt.Printf("You are already on the latest release (%s) of ZVM :) \n", clr.Blue(meta.VERSION)) ++ // os.Exit(0) ++ // } else { ++ // fmt.Printf("You are on ZVM %s... upgrading to (%s)", meta.VERSION, tagName) ++ // } ++ // ++ // zvmInstallDirENV, err := z.getInstallDir() ++ // if err != nil { ++ // return err ++ // } ++ // ++ // log.Debug("exe dir", "path", zvmInstallDirENV) ++ // zvmBinaryName := "zvm" ++ // archive := "tar" ++ // if runtime.GOOS == "windows" { ++ // archive = "zip" ++ // zvmBinaryName = "zvm.exe" ++ // } ++ // ++ // download := fmt.Sprintf("zvm-%s-%s.%s", runtime.GOOS, runtime.GOARCH, archive) ++ // ++ // downloadUrl := fmt.Sprintf("https://github.com/tristanisham/zvm/releases/latest/download/%s", download) ++ // ++ // resp, err := http.Get(downloadUrl) ++ // if err != nil { ++ // errors.Join(ErrFailedUpgrade, err) ++ // } ++ // defer resp.Body.Close() ++ // ++ // tempDownload, err := os.CreateTemp(z.baseDir, fmt.Sprintf("*.%s", archive)) ++ // if err != nil { ++ // return err ++ // } ++ // defer tempDownload.Close() ++ // defer os.Remove(tempDownload.Name()) ++ // ++ // log.Debug("tempDir", "name", tempDownload.Name()) ++ // pbar := progressbar.DefaultBytes( ++ // int64(resp.ContentLength), ++ // "Upgrading ZVM...", ++ // ) ++ // ++ // _, err = io.Copy(io.MultiWriter(tempDownload, pbar), resp.Body) ++ // if err != nil { ++ // return err ++ // } ++ // ++ // zvmPath := filepath.Join(zvmInstallDirENV, zvmBinaryName) ++ // if err := os.Remove(filepath.Join(zvmInstallDirENV, zvmBinaryName)); err != nil { ++ // if err, ok := err.(*os.PathError); ok { ++ // if os.IsNotExist(err) { ++ // log.Debug("Failed to remove file", "path", zvmPath) ++ // } ++ // } ++ // } ++ // ++ // log.Debug("zvmPath", "path", zvmPath) ++ // ++ // newTemp, err := os.MkdirTemp(z.baseDir, "zvm-upgrade-*") ++ // if err != nil { ++ // log.Debugf("Failed to create temp direcory: %s", newTemp) ++ // return errors.Join(ErrFailedUpgrade, err) ++ // } ++ // ++ // defer os.RemoveAll(newTemp) ++ // ++ // if runtime.GOOS == "windows" { ++ // log.Debug("unzip", "from", tempDownload.Name(), "to", newTemp) ++ // if err := unzipSource(tempDownload.Name(), newTemp); err != nil { ++ // log.Error(err) ++ // return err ++ // } ++ // ++ // secondaryZVM := fmt.Sprintf("%s.old", zvmPath) ++ // log.Debug("SecondaryZVM", "path", secondaryZVM) ++ // ++ // newDownload := filepath.Join(newTemp, fmt.Sprintf("zvm-%s-%s", runtime.GOOS, runtime.GOARCH), zvmBinaryName) ++ // ++ // if err := replaceExe(newDownload, zvmPath); err != nil { ++ // log.Warn("This command might break if ZVM is installed outside of ~/.zvm/self/") ++ // return fmt.Errorf("upgrade error: %q", err) ++ // } ++ // // fmt.Println("Run the following to complete your upgrade on Windows.") ++ // // fmt.Printf("- Command Prompt:\n\tmove /Y '%s' '%s'\n", secondaryZVM, zvmPath) ++ // // fmt.Printf("- Powershell:\n\tMove-Item -Path '%s' -Destination '%s' -Force\n", secondaryZVM, zvmPath) ++ // ++ // } else { ++ // if err := untar(tempDownload.Name(), newTemp); err != nil { ++ // log.Error(err) ++ // return err ++ // } ++ // ++ // if err := os.Rename(filepath.Join(newTemp, zvmBinaryName), zvmPath); err != nil { ++ // log.Debugf("Failed to rename %s to %s", filepath.Join(newTemp, zvmBinaryName), zvmPath) ++ // return errors.Join(ErrFailedUpgrade, err) ++ // } ++ // } ++ // ++ // if err := os.Chmod(zvmPath, 0775); err != nil { ++ // log.Debugf("Failed to update permissions for %s", zvmPath) ++ // return errors.Join(ErrFailedUpgrade, err) ++ // } ++ ++ log.Info("Upgrade is disabled for this build of zvm, use your system package manager.") + return nil + } + +@@ -304,16 +305,16 @@ func isSymlink(path string) (bool, error) { + // CanIUpgrade checks if a newer version of ZVM is available on GitHub. + // It returns the latest tag name, a boolean indicating if an upgrade is available, and any error. + func CanIUpgrade() (string, bool, error) { +- release, err := getLatestGitHubRelease("tristanisham", "zvm") +- if err != nil { +- return "", false, err +- } +- +- if semver.Compare(meta.VERSION, release.TagName) == -1 { +- return release.TagName, true, nil +- } +- +- return release.TagName, false, nil ++ // release, err := getLatestGitHubRelease("tristanisham", "zvm") ++ // if err != nil { ++ // return "", false, err ++ // } ++ // ++ // if semver.Compare(meta.VERSION, release.TagName) == -1 { ++ // return release.TagName, true, nil ++ // } ++ ++ return meta.VERSION, false, nil + } + + // func getGitHubReleases(owner, repo string) ([]GithubRelease, error) { diff --git a/srcpkgs/zvm/template b/srcpkgs/zvm/template new file mode 100644 index 00000000000000..02c693aa2d7775 --- /dev/null +++ b/srcpkgs/zvm/template @@ -0,0 +1,17 @@ +# Template file for 'zvm' +pkgname=zvm +version=0.8.13 +revision=1 +build_style=go +go_import_path="github.com/tristanisham/zvm" +short_desc="Zig version manager" +maintainer="tranzystorekk " +license="MIT" +homepage="https://www.zvm.app" +changelog="https://github.com/tristanisham/zvm/releases" +distfiles="https://github.com/tristanisham/zvm/archive/refs/tags/v${version}.tar.gz" +checksum=12a6e2176930841209361ec6b440d2c36ad9de3e2656812e9637aa5b374ca082 + +post_install() { + vlicense LICENSE +}