mirror of
https://github.com/xxh/xxh
synced 2024-11-24 04:43:09 +00:00
commit
184bd0c0f0
6 changed files with 18 additions and 58 deletions
10
README.md
10
README.md
|
@ -91,7 +91,7 @@ xxh arguments:
|
||||||
|
|
||||||
The xxh xonsh will use pip and python from `xonsh.AppImage` by default. You can install pip packages ordinally with `pip install`. They will appear in `$XXH_HOME/pip`.
|
The xxh xonsh will use pip and python from `xonsh.AppImage` by default. You can install pip packages ordinally with `pip install`. They will appear in `$XXH_HOME/pip`.
|
||||||
|
|
||||||
## How it works?
|
### How it works?
|
||||||
|
|
||||||
When you run `xxh <server>` command:
|
When you run `xxh <server>` command:
|
||||||
|
|
||||||
|
@ -104,13 +104,13 @@ When you run `xxh <server>` command:
|
||||||
## Development
|
## Development
|
||||||
Use [xxh-tests](https://github.com/xonssh/xxh-tests) environment for development and contribution.
|
Use [xxh-tests](https://github.com/xonssh/xxh-tests) environment for development and contribution.
|
||||||
|
|
||||||
## Known Issues
|
### Known Issues
|
||||||
|
|
||||||
### GLIBs versions
|
#### GLIBs versions
|
||||||
|
|
||||||
Current method to make xonsh portable is using an [AppImage](https://appimage.org/) which was built on [manylinux2010 (PEP 571)](https://github.com/niess/linuxdeploy-plugin-python/issues/12). In case you see the error like ``/xonsh-x86_64.AppImage: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.25 not found (required by /ppp/xonsh-x86_64.AppImage)`` this means you should rebuild the AppImage for older version of linux distributive. Try [linuxdeploy-plugin-python](https://github.com/niess/linuxdeploy-plugin-python/).
|
Current method to make xonsh portable is using an [AppImage](https://appimage.org/) which was built on [manylinux2010 (PEP 571)](https://github.com/niess/linuxdeploy-plugin-python/issues/12). In case you see the error like ``/xonsh-x86_64.AppImage: /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.25 not found (required by /ppp/xonsh-x86_64.AppImage)`` this means you should rebuild the AppImage for older version of linux distributive. Try [linuxdeploy-plugin-python](https://github.com/niess/linuxdeploy-plugin-python/).
|
||||||
|
|
||||||
### WSL1: ^Z
|
#### WSL1: ^Z
|
||||||
|
|
||||||
```
|
```
|
||||||
# xxh YT-1300
|
# xxh YT-1300
|
||||||
|
@ -121,7 +121,7 @@ This issue was addressed to Xonsh team in [3367](https://github.com/xonsh/xonsh/
|
||||||
|
|
||||||
WSL2 is not tested yet.
|
WSL2 is not tested yet.
|
||||||
|
|
||||||
### Related issues
|
#### Related issues
|
||||||
|
|
||||||
What will make xxh more universal and stable in the future:
|
What will make xxh more universal and stable in the future:
|
||||||
* [AppImages run on Alpine](https://github.com/AppImage/AppImageKit/issues/1015)
|
* [AppImages run on Alpine](https://github.com/AppImage/AppImageKit/issues/1015)
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
**xxh plugin** — is the set of files which will be run when xonsh will be installed or started though xxh.
|
|
||||||
|
|
||||||
## xxh plugins list
|
|
||||||
|
|
||||||
[Search xxh plugins on Github](https://github.com/search?q=xxh-plugin&type=Repositories)
|
|
||||||
|
|
||||||
Pinned plugins:
|
|
||||||
|
|
||||||
* [Pipe Liner](https://github.com/xonssh/xxh-plugin-pipe-liner)
|
|
||||||
* [Bar Theme](https://github.com/xonssh/xxh-plugin-theme-bar)
|
|
||||||
* [Autojump](https://github.com/xonssh/xxh-plugin-autojump)
|
|
||||||
|
|
||||||
## Install xxh plugin
|
|
||||||
|
|
||||||
To install xxh plugin just place the plugin directory to the `plugins` in xxh home path. Example:
|
|
||||||
```
|
|
||||||
cd ~/.xxh/plugins/
|
|
||||||
git clone --depth 1 https://github.com/xonssh/xxh-plugin-theme-bar
|
|
||||||
```
|
|
||||||
Then run:
|
|
||||||
```
|
|
||||||
xxh <server>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Create xxh plugin
|
|
||||||
|
|
||||||
To create xxh plugin you can create `your_plugin` directory in `~/.xxh/plugins/your_plugin` (by default) on your home host with files:
|
|
||||||
* `install.xsh` will be executed once after xxh installation on the host
|
|
||||||
* `xonshrc.xsh` will be executed every time you'll be connect via xxh to the host
|
|
|
@ -16,9 +16,5 @@ echo xxh_home_realpath=$xxh_home_realpath
|
||||||
echo xxh_version=$xxh_version
|
echo xxh_version=$xxh_version
|
||||||
echo xxh_home_writable=`[ -w $xxh_home_realpath ] && echo "1" ||echo "0"`
|
echo xxh_home_writable=`[ -w $xxh_home_realpath ] && echo "1" ||echo "0"`
|
||||||
echo xxh_parent_home_writable=`[ -w $(dirname $xxh_home_realpath) ] && echo "1" ||echo "0"`
|
echo xxh_parent_home_writable=`[ -w $(dirname $xxh_home_realpath) ] && echo "1" ||echo "0"`
|
||||||
echo xxh_home_freespace=`[ -d $xxh_home_realpath ] && df -k --output=avail $xxh_home_realpath | tail -n1`
|
|
||||||
echo xxh_plugins_rc=`[ -d $xxh_plugins_path ] && find $xxh_plugins_path | grep xonshrc.xsh`
|
|
||||||
|
|
||||||
echo bash=`command -v bash`
|
|
||||||
echo rsync=`command -v rsync`
|
echo rsync=`command -v rsync`
|
||||||
echo scp=`command -v scp`
|
echo scp=`command -v scp`
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
global_settings = {
|
global_settings = {
|
||||||
'XXH_VERSION': '0.2.8'
|
'XXH_VERSION': '0.2.9'
|
||||||
}
|
}
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
import os, glob
|
|
||||||
|
|
||||||
import_path = os.path.join($XXH_HOME, 'plugins')
|
|
||||||
xonshrc_plugins_rc=[]
|
|
||||||
for rc in sorted(glob.glob(os.path.join(import_path, '*/xonshrc.xsh'))):
|
|
||||||
xonshrc_plugins_rc.append(rc)
|
|
||||||
|
|
||||||
# Prefix `xxh-plugins: ` is needed to workaround some cases when ssh write warnings to stdout and return before this
|
|
||||||
print(f"xxh-plugins# {' '.join(xonshrc_plugins_rc)}")
|
|
22
xxh
22
xxh
|
@ -246,7 +246,7 @@ if opt.install:
|
||||||
eprint(f'Method "{opt.method}" is not supported now')
|
eprint(f'Method "{opt.method}" is not supported now')
|
||||||
|
|
||||||
if opt.install_force:
|
if opt.install_force:
|
||||||
eprint(f'Before upload xxh remove host directory {host}:{host_xxh_home}')
|
eprint(f'Remove host xxh home {host}:{host_xxh_home}')
|
||||||
echo @(f"rm -rf {host_xxh_home}/*") | ssh @(ssh_v) @(ssh_arguments) @(host) -T "bash -s"
|
echo @(f"rm -rf {host_xxh_home}/*") | ssh @(ssh_v) @(ssh_arguments) @(host) -T "bash -s"
|
||||||
|
|
||||||
eprint(f"Install xxh to {host}:{host_xxh_home}" )
|
eprint(f"Install xxh to {host}:{host_xxh_home}" )
|
||||||
|
@ -269,16 +269,18 @@ if opt.install:
|
||||||
|
|
||||||
plugins_fullpath = os.path.join(local_xxh_home_path, 'plugins')
|
plugins_fullpath = os.path.join(local_xxh_home_path, 'plugins')
|
||||||
if os.path.exists(plugins_fullpath):
|
if os.path.exists(plugins_fullpath):
|
||||||
eprint(f'Run plugins post install on {host}')
|
plugin_post_installs = sorted(glob.glob(os.path.join(plugins_fullpath, os.path.join('*', 'post_install.xsh')), recursive=True))
|
||||||
scripts=''
|
if len(plugin_post_installs) > 0:
|
||||||
for script in sorted(glob.glob(os.path.join(plugins_fullpath, os.path.join('*','post_install.xsh')), recursive=True)):
|
eprint(f'Run plugins post install on {host}')
|
||||||
scripts += " && %s -i --rc %s -- %s" % (host_xonsh_bin, host_xonshrc, script.replace(local_xxh_home_path + os.sep, ''))
|
scripts=''
|
||||||
eprint(f' * {script}')
|
for script in plugin_post_installs:
|
||||||
|
scripts += " && %s -i --rc %s -- %s" % (host_xonsh_bin, host_xonshrc, script.replace(local_xxh_home_path + os.sep, ''))
|
||||||
|
eprint(f' * {script}')
|
||||||
|
|
||||||
if scripts:
|
if scripts:
|
||||||
echo @(f"cd {host_xxh_home} {scripts}" ) | ssh @(ssh_v) @(ssh_arguments) @(host) -T "bash -s" 1>&2
|
echo @(f"cd {host_xxh_home} {scripts}" ) | ssh @(ssh_v) @(ssh_arguments) @(host) -T "bash -s" 1>&2
|
||||||
|
|
||||||
eprint('Check xonsh')
|
eprint(f'Check {opt.method}')
|
||||||
host_settings_file = os.path.join(host_xxh_home, 'settings.py')
|
host_settings_file = os.path.join(host_xxh_home, 'settings.py')
|
||||||
check = $(ssh @(ssh_v) @(ssh_arguments) @(host) -t @(host_xonsh_bin) --no-script-cache -i --rc @(host_xonshrc) -- @(host_settings_file) )
|
check = $(ssh @(ssh_v) @(ssh_arguments) @(host) -t @(host_xonsh_bin) --no-script-cache -i --rc @(host_xonshrc) -- @(host_settings_file) )
|
||||||
|
|
||||||
|
@ -286,7 +288,7 @@ if opt.install:
|
||||||
eprint(f'Check xonsh result:\n{check}')
|
eprint(f'Check xonsh result:\n{check}')
|
||||||
|
|
||||||
if check == '' or 'AppImages require FUSE to run' in check:
|
if check == '' or 'AppImages require FUSE to run' in check:
|
||||||
eprint('Check failed. Unpack AppImage...')
|
eprint('AppImage is not supported by host. Trying to unpack and run...')
|
||||||
host_xonsh_bin_new = os.path.join(host_xxh_home, 'xonsh-squashfs/usr/python/bin/xonsh')
|
host_xonsh_bin_new = os.path.join(host_xxh_home, 'xonsh-squashfs/usr/python/bin/xonsh')
|
||||||
ssh @(ssh_v) @(ssh_arguments) @(host) -t @(f"cd {host_xxh_home} && ./{xonsh_bin_name} --appimage-extract | grep -E 'usr/python/bin/xonsh$' && mv squashfs-root xonsh-squashfs && mv {host_xonsh_bin} {host_xonsh_bin}-disabled && ln -s {host_xonsh_bin_new}") 1>&2
|
ssh @(ssh_v) @(ssh_arguments) @(host) -t @(f"cd {host_xxh_home} && ./{xonsh_bin_name} --appimage-extract | grep -E 'usr/python/bin/xonsh$' && mv squashfs-root xonsh-squashfs && mv {host_xonsh_bin} {host_xonsh_bin}-disabled && ln -s {host_xonsh_bin_new}") 1>&2
|
||||||
host_xonsh_bin = host_xonsh_bin_new
|
host_xonsh_bin = host_xonsh_bin_new
|
||||||
|
|
Loading…
Reference in a new issue