aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2020-05-13 11:44:36 +0300
committerromkatv <roman.perepelitsa@gmail.com>2020-05-13 11:44:36 +0300
commit1f8bd78e3a0f839fa1e35cf16f287a2802f4a5a9 (patch)
tree644b3d11519a8f915fa7cf6badca2277bbc55c71
parentd0f6cd0b500cad9d6dfad3873f21b4e8f0959cbb (diff)
parent46c76dd7071bedab192aa65756ba09024e29da0c (diff)
Merge commit '46c76dd7071bedab192aa65756ba09024e29da0c'v1.9.0
-rw-r--r--gitstatus/README.md86
1 files changed, 61 insertions, 25 deletions
diff --git a/gitstatus/README.md b/gitstatus/README.md
index 0063dca9..aa63eec5 100644
--- a/gitstatus/README.md
+++ b/gitstatus/README.md
@@ -468,45 +468,81 @@ this case you'll need to rebuild.
### Compiling for distribution
-If you want to package gitstatus, it's best to do it based off releases. You also probably don't
-want to build in docker (`-d docker`) or to allow automatic downloading of libgit2 tarballs (`-w`).
+If you want to package gitstatus, it's best to do it based off [releases](
+ https://github.com/romkatv/gitstatus/releases).
-The following code should work. If it doesn't, please open an issue.
+The following code should work without patching anything in gitstatus sources. If it doesn't, please
+open an issue.
**IMPORTANT:** *Change version to what you want to package. This example doesn't get updated when
new versions are released.*
```zsh
-curl -fsSLO https://github.com/romkatv/gitstatus/archive/v1.0.0.tar.gz
-tar -xzf v1.0.0.tar.gz
-cd gitstatus-1.0.0
-(
- . ./build.info
- curl -fsSLo \
- deps/libgit2-"$libgit2_version".tar.gz \
- https://github.com/romkatv/libgit2/archive/"$libgit2_version".tar.gz
-)
-./build
-rm deps/libgit2-*.tar.gz
+# Download and extract gitstatus tarball.
+gitstatus_version=1.0.0 # IMPORTANT: CHANGE VERSION TO WHAT YOU WANT
+wget https://github.com/romkatv/gitstatus/archive/v"$gitstatus_version".tar.gz
+tar -xzf v"$gitstatus_version".tar.gz
+cd gitstatus-"$gitstatus_version"
+
+# Download libgit2 tarball and compile gitstatusd.
+./build -w
+
+# Post-process.
+rm ./deps/libgit2-*.tar.gz
for file in *.zsh install; do
zsh -fc "emulate zsh -o no_aliases && zcompile -R -- $file.zwc $file"
done
```
-This needs binutils, cmake, gcc, g++, git, GNU make and zsh.
-
-Depending on your workflow, it might be easier to store the URL to the libgit2 tarball in the
-same place where you are going to put the main gitstatus tarball URL. You'll need to update both
-URLs at the same time when bumping package version.
+This needs binutils, cmake, gcc, g++, git, GNU make, wget, zsh and either shasum or sha256sum.
Once build completes, *do not delete or move any files*. Package the whole directory as is. Don't
-add it (or any of its subdirectories) to `PATH`.
+add the directory or any of its subdirectories to `PATH`.
+
+You probably don't want to build in docker, so don't pass `-d` to `./build`.
+
+gitstatus depends on a [custom fork of libgit2](https://github.com/romkatv/libgit2/). When you run
+`./build -w`, it'll automatically download the appropriate libgit2 tarball and verify its sha256.
+If you want to separate the downloading of source tarballs from compilation, you can download the
+libgit2 tarball manually and invoke `./build` without `-w`.
+
+```zsh
+# Download and extract gitstatus tarball.
+gitstatus_version=1.0.0 # IMPORTANT: CHANGE VERSION TO WHAT YOU WANT
+wget https://github.com/romkatv/gitstatus/archive/v"$gitstatus_version".tar.gz
+tar -xzf v"$gitstatus_version".tar.gz
+cd gitstatus-"$gitstatus_version"
+
+# Download libgit2 tarball and place it where ./build expects it.
+. ./build.info
+libgit2_path=./deps/libgit2-"$libgit2_version".tar.gz
+libgit2_url=https://github.com/romkatv/libgit2/archive/"$libgit2_version".tar.gz
+wget -O "$libgit2_path" "$libgit2_url"
+
+# Compile gitstatusd.
+./build
+
+# Post-process.
+rm ./deps/libgit2-*.tar.gz
+for file in *.zsh install; do
+ zsh -fc "emulate zsh -o no_aliases && zcompile -R -- $file.zwc $file"
+done
+```
-Note that Powerlevel10k has an embedded version of gitstatus. It must stay that way. The embedded
-gitstatus won't conflict with the standalone version. They can have different versions and can
-coexist within the same Zsh process. Do not attempt to surgically remove gitstatus from
-Powerlevel10k, package the result and then somehow force Powerlevel10k to use a separately packaged
-gitstatus.
+Note that the URL and the content of the libgit2 tarball are fully defined by the main gitstatus
+tarball. Thus, you can set URLs and sha256 checksums of the two tarball in the same place (package
+definition) and update them at the same time when bumping package version. In other words, you don't
+have to extract `libgit2_version` programmatically. You can manually copy it from [build.info](
+ https://github.com/romkatv/gitstatus/blob/master/build.info) to your package definition, if you
+prefer.
+
+[Powerlevel10k](https://github.com/romkatv/powerlevel10k) has an embedded version of gitstatus. It
+must stay that way. If you decide to package both of them, follow the respective instructions from
+each project. The embedded gitstatus in Powerlevel10k won't conflict with the standalone gitstatus.
+They can have different versions and can coexist within the same Zsh process. Do not attempt to
+surgically remove gitstatus from Powerlevel10k, package the result and then force Powerlevel10k to
+use a separately packaged gitstatus. Instead, treat Powerlevel10k and gitstatus as independent
+projects that don't depend on each other.
## License