mirror of
https://github.com/YunoHost-Apps/photoview_ynh.git
synced 2024-09-03 20:05:55 +02:00
Fix build
This commit is contained in:
parent
1ba884530a
commit
447e4f432f
2 changed files with 152 additions and 157 deletions
8
.vscode/settings.json
vendored
8
.vscode/settings.json
vendored
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"markdownlint.config": {
|
||||
"MD028": false,
|
||||
"MD025": {
|
||||
"front_matter_title": ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -25,16 +25,16 @@ function setup_sources {
|
|||
|
||||
function build_libheif {
|
||||
pushd "$final_path/libheif" || ynh_die
|
||||
chown -R $app:$app "$final_path/libheif"
|
||||
mkdir -p "$final_path/local"
|
||||
chown -R $app:$app "$final_path/libheif"
|
||||
chown -R $app:$app "$final_path/local"
|
||||
sudo -u $app "$final_path/libheif/autogen.sh" 2>&1
|
||||
sudo -u $app "$final_path/libheif/configure" --prefix="$final_path/local" --disable-gdk-pixbuf 2>&1
|
||||
make clean 2>&1
|
||||
make 2>&1
|
||||
make install 2>&1
|
||||
make clean 2>&1
|
||||
chown -R $app:$app "$final_path/libheif"
|
||||
mkdir -p "$final_path/local"
|
||||
chown -R $app:$app "$final_path/libheif"
|
||||
chown -R $app:$app "$final_path/local"
|
||||
sudo -u $app "$final_path/libheif/autogen.sh" 2>&1
|
||||
sudo -u $app "$final_path/libheif/configure" --prefix="$final_path/local" --disable-gdk-pixbuf 2>&1
|
||||
make clean 2>&1
|
||||
make 2>&1
|
||||
make install 2>&1
|
||||
make clean 2>&1
|
||||
popd || ynh_die
|
||||
|
||||
set_permissions
|
||||
|
@ -55,13 +55,15 @@ function build_api {
|
|||
set_go_vars
|
||||
|
||||
pushd "$final_path/api" || ynh_die
|
||||
chown -R $app:$app "$final_path"
|
||||
set +e ; for i in {1..5}; do
|
||||
sudo -u $app env "PATH=$go_path_full" "LIBRARY_PATH=$heif_lib_path" "LD_LIBRARY_PATH=$heif_ld_lib_path" "CGO_CFLAGS=$heif_cgo_cflags" GOENV_VERSION=$go_version CGO_ENABLED=1 go mod download 2>&1 && break
|
||||
sleep 5
|
||||
done; set -e
|
||||
sudo -u $app env "PATH=$go_path_full" "LIBRARY_PATH=$heif_lib_path" "LD_LIBRARY_PATH=$heif_ld_lib_path" "CGO_CFLAGS=$heif_cgo_cflags" GOENV_VERSION=$go_version CGO_ENABLED=1 go install github.com/mattn/go-sqlite3 github.com/Kagami/go-face 2>&1
|
||||
sudo -u $app env "PATH=$go_path_full" "LIBRARY_PATH=$heif_lib_path" "LD_LIBRARY_PATH=$heif_ld_lib_path" "CGO_CFLAGS=$heif_cgo_cflags" GOENV_VERSION=$go_version go build -o photoview "$final_path/api" 2>&1
|
||||
chown -R $app:$app "$final_path"
|
||||
set +e
|
||||
for i in {1..5}; do
|
||||
sudo -u $app env "PATH=$go_path_full" "LIBRARY_PATH=$heif_lib_path" "LD_LIBRARY_PATH=$heif_ld_lib_path" "CGO_CFLAGS=$heif_cgo_cflags" GOENV_VERSION=$go_version CGO_ENABLED=1 go mod download 2>&1 && break
|
||||
sleep 5
|
||||
done
|
||||
set -e
|
||||
sudo -u $app env "PATH=$go_path_full" "LIBRARY_PATH=$heif_lib_path" "LD_LIBRARY_PATH=$heif_ld_lib_path" "CGO_CFLAGS=$heif_cgo_cflags" GOENV_VERSION=$go_version CGO_ENABLED=1 go install github.com/mattn/go-sqlite3 github.com/Kagami/go-face 2>&1
|
||||
sudo -u $app env "PATH=$go_path_full" "LIBRARY_PATH=$heif_lib_path" "LD_LIBRARY_PATH=$heif_ld_lib_path" "CGO_CFLAGS=$heif_cgo_cflags" GOENV_VERSION=$go_version go build -o photoview "$final_path/api" 2>&1
|
||||
popd || ynh_die
|
||||
|
||||
cp -T "$final_path/api/photoview" "$final_path/output/photoview"
|
||||
|
@ -71,7 +73,7 @@ function build_api {
|
|||
|
||||
function build_ui {
|
||||
set_node_vars
|
||||
|
||||
|
||||
ui_path="$final_path/ui"
|
||||
|
||||
ynh_replace_string -m "npm" -r "yarn" -f "$ui_path/package.json"
|
||||
|
@ -81,17 +83,23 @@ function build_ui {
|
|||
pushd "$ui_path" || ynh_die
|
||||
chown -R $app:$app $final_path
|
||||
sudo -u $app touch $ui_path/.yarnrc
|
||||
sudo -u $app env "PATH=$node_path" yarn --cache-folder "$ui_path/yarn-cache" --use-yarnrc "$ui_path/.yarnrc" import 2>&1
|
||||
sudo -u $app env "PATH=$node_path" yarn --cache-folder "$ui_path/yarn-cache" --use-yarnrc "$ui_path/.yarnrc" add husky 2>&1
|
||||
sudo -u $app env "PATH=$node_path" yarn --cache-folder "$ui_path/yarn-cache" --use-yarnrc "$ui_path/.yarnrc" install 2>&1
|
||||
sudo -u $app env "PATH=$node_path" yarn --cache-folder "$ui_path/yarn-cache" --use-yarnrc "$ui_path/.yarnrc" add graphql --ignore-engines 2>&1
|
||||
grep -q "build complete" <((sudo -u $app env "PATH=$node_path" yarn --cache-folder "$ui_path/yarn-cache" --use-yarnrc "$ui_path/.yarnrc" run build -- --public-url "$path_url" 2>&1 & echo $! >&3 ) 3>pid) ; kill "$(<pid)"
|
||||
sudo -u $app env "PATH=$node_path" yarn --cache-folder "$ui_path/yarn-cache" --use-yarnrc "$ui_path/.yarnrc" run build --public-url "$path_url" 2>&1
|
||||
popd || ynh_die
|
||||
|
||||
cp -rT "$final_path/ui/dist" "$final_path/output/ui"
|
||||
cp -rT "$final_path/ui/build" "$final_path/output/ui"
|
||||
|
||||
set_permissions
|
||||
}
|
||||
|
||||
function set_node_vars {
|
||||
nodejs_version=$(ynh_app_setting_get --app=$app --key=nodejs_version)
|
||||
if [ $nodejs_version -ne 16 ]; then
|
||||
ynh_exec_warn_less ynh_remove_nodejs
|
||||
fi
|
||||
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=16
|
||||
ynh_use_nodejs
|
||||
node_path=$nodejs_path:$(sudo -u $app sh -c 'echo $PATH')
|
||||
|
@ -166,30 +174,30 @@ export GOENV_ROOT="$goenv_install_dir"
|
|||
# usage: ynh_use_go
|
||||
#
|
||||
# Requires YunoHost version 3.2.2 or higher.
|
||||
ynh_use_go () {
|
||||
go_version=$(ynh_app_setting_get --app=$app --key=go_version)
|
||||
ynh_use_go() {
|
||||
go_version=$(ynh_app_setting_get --app=$app --key=go_version)
|
||||
|
||||
# Get the absolute path of this version of Go
|
||||
go_path="$go_version_path/$go_version/bin"
|
||||
# Get the absolute path of this version of Go
|
||||
go_path="$go_version_path/$go_version/bin"
|
||||
|
||||
# Allow alias to be used into bash script
|
||||
shopt -s expand_aliases
|
||||
# Allow alias to be used into bash script
|
||||
shopt -s expand_aliases
|
||||
|
||||
# Create an alias for the specific version of Go and a variable as fallback
|
||||
ynh_go="$go_path/go"
|
||||
alias ynh_go="$ynh_go"
|
||||
# Create an alias for the specific version of Go and a variable as fallback
|
||||
ynh_go="$go_path/go"
|
||||
alias ynh_go="$ynh_go"
|
||||
|
||||
# Load the path of this version of Go in $PATH
|
||||
if [[ :$PATH: != *":$go_path"* ]]; then
|
||||
PATH="$go_path:$PATH"
|
||||
fi
|
||||
# Create an alias to easily load the PATH
|
||||
ynh_go_load_path="PATH=$PATH"
|
||||
# Load the path of this version of Go in $PATH
|
||||
if [[ :$PATH: != *":$go_path"* ]]; then
|
||||
PATH="$go_path:$PATH"
|
||||
fi
|
||||
# Create an alias to easily load the PATH
|
||||
ynh_go_load_path="PATH=$PATH"
|
||||
|
||||
# Sets the local application-specific Go version
|
||||
pushd $final_path
|
||||
$goenv_install_dir/bin/goenv local $go_version
|
||||
popd
|
||||
# Sets the local application-specific Go version
|
||||
pushd $final_path
|
||||
$goenv_install_dir/bin/goenv local $go_version
|
||||
popd
|
||||
}
|
||||
|
||||
# Install a specific version of Go
|
||||
|
@ -208,94 +216,94 @@ ynh_use_go () {
|
|||
# | arg: -v, --go_version= - Version of go to install.
|
||||
#
|
||||
# Requires YunoHost version 3.2.2 or higher.
|
||||
ynh_install_go () {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=v
|
||||
local -A args_array=( [v]=go_version= )
|
||||
local go_version
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
ynh_install_go() {
|
||||
# Declare an array to define the options of this helper.
|
||||
local legacy_args=v
|
||||
local -A args_array=([v]=go_version=)
|
||||
local go_version
|
||||
# Manage arguments with getopts
|
||||
ynh_handle_getopts_args "$@"
|
||||
|
||||
# Load goenv path in PATH
|
||||
local CLEAR_PATH="$goenv_install_dir/bin:$PATH"
|
||||
# Load goenv path in PATH
|
||||
local CLEAR_PATH="$goenv_install_dir/bin:$PATH"
|
||||
|
||||
# Remove /usr/local/bin in PATH in case of Go prior installation
|
||||
PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
|
||||
# Remove /usr/local/bin in PATH in case of Go prior installation
|
||||
PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
|
||||
|
||||
# Move an existing Go binary, to avoid to block goenv
|
||||
test -x /usr/bin/go && mv /usr/bin/go /usr/bin/go_goenv
|
||||
# Move an existing Go binary, to avoid to block goenv
|
||||
test -x /usr/bin/go && mv /usr/bin/go /usr/bin/go_goenv
|
||||
|
||||
# Install or update goenv
|
||||
goenv="$(command -v goenv $goenv_install_dir/bin/goenv | head -1)"
|
||||
if [ -n "$goenv" ]; then
|
||||
ynh_print_info --message="goenv already seems installed in \`$goenv'."
|
||||
pushd "${goenv%/*/*}"
|
||||
if git remote -v 2>/dev/null | grep "https://github.com/syndbg/goenv.git"; then
|
||||
echo "Trying to update with git..."
|
||||
git pull -q --tags origin master
|
||||
cd ..
|
||||
ynh_go_try_bash_extension
|
||||
fi
|
||||
popd
|
||||
else
|
||||
ynh_print_info --message="Installing goenv with git..."
|
||||
mkdir -p $goenv_install_dir
|
||||
pushd $goenv_install_dir
|
||||
git init -q
|
||||
git remote add -f -t master origin https://github.com/syndbg/goenv.git > /dev/null 2>&1
|
||||
git checkout -q -b master origin/master
|
||||
ynh_go_try_bash_extension
|
||||
goenv=$goenv_install_dir/bin/goenv
|
||||
popd
|
||||
# Install or update goenv
|
||||
goenv="$(command -v goenv $goenv_install_dir/bin/goenv | head -1)"
|
||||
if [ -n "$goenv" ]; then
|
||||
ynh_print_info --message="goenv already seems installed in \`$goenv'."
|
||||
pushd "${goenv%/*/*}"
|
||||
if git remote -v 2>/dev/null | grep "https://github.com/syndbg/goenv.git"; then
|
||||
echo "Trying to update with git..."
|
||||
git pull -q --tags origin master
|
||||
cd ..
|
||||
ynh_go_try_bash_extension
|
||||
fi
|
||||
popd
|
||||
else
|
||||
ynh_print_info --message="Installing goenv with git..."
|
||||
mkdir -p $goenv_install_dir
|
||||
pushd $goenv_install_dir
|
||||
git init -q
|
||||
git remote add -f -t master origin https://github.com/syndbg/goenv.git >/dev/null 2>&1
|
||||
git checkout -q -b master origin/master
|
||||
ynh_go_try_bash_extension
|
||||
goenv=$goenv_install_dir/bin/goenv
|
||||
popd
|
||||
fi
|
||||
|
||||
goenv_latest="$(command -v "$goenv_install_dir"/plugins/*/bin/goenv-latest goenv-latest | head -1)"
|
||||
if [ -n "$goenv_latest" ]; then
|
||||
ynh_print_info --message="\`goenv latest' command already available in \`$goenv_latest'."
|
||||
pushd "${goenv_latest%/*/*}"
|
||||
if git remote -v 2>/dev/null | grep "https://github.com/momo-lab/xxenv-latest.git"; then
|
||||
ynh_print_info --message="Trying to update xxenv-latest with git..."
|
||||
git pull -q origin master
|
||||
fi
|
||||
popd
|
||||
else
|
||||
ynh_print_info --message="Installing xxenv-latest with git..."
|
||||
mkdir -p "${goenv_install_dir}/plugins"
|
||||
git clone -q https://github.com/momo-lab/xxenv-latest.git "${goenv_install_dir}/plugins/xxenv-latest"
|
||||
goenv_latest="$(command -v "$goenv_install_dir"/plugins/*/bin/goenv-latest goenv-latest | head -1)"
|
||||
if [ -n "$goenv_latest" ]; then
|
||||
ynh_print_info --message="\`goenv latest' command already available in \`$goenv_latest'."
|
||||
pushd "${goenv_latest%/*/*}"
|
||||
if git remote -v 2>/dev/null | grep "https://github.com/momo-lab/xxenv-latest.git"; then
|
||||
ynh_print_info --message="Trying to update xxenv-latest with git..."
|
||||
git pull -q origin master
|
||||
fi
|
||||
popd
|
||||
else
|
||||
ynh_print_info --message="Installing xxenv-latest with git..."
|
||||
mkdir -p "${goenv_install_dir}/plugins"
|
||||
git clone -q https://github.com/momo-lab/xxenv-latest.git "${goenv_install_dir}/plugins/xxenv-latest"
|
||||
fi
|
||||
|
||||
# Enable caching
|
||||
mkdir -p "${goenv_install_dir}/cache"
|
||||
# Enable caching
|
||||
mkdir -p "${goenv_install_dir}/cache"
|
||||
|
||||
# Create shims directory if needed
|
||||
mkdir -p "${goenv_install_dir}/shims"
|
||||
# Create shims directory if needed
|
||||
mkdir -p "${goenv_install_dir}/shims"
|
||||
|
||||
# Restore /usr/local/bin in PATH
|
||||
PATH=$CLEAR_PATH
|
||||
# Restore /usr/local/bin in PATH
|
||||
PATH=$CLEAR_PATH
|
||||
|
||||
# And replace the old Go binary
|
||||
test -x /usr/bin/go_goenv && mv /usr/bin/go_goenv /usr/bin/go
|
||||
# And replace the old Go binary
|
||||
test -x /usr/bin/go_goenv && mv /usr/bin/go_goenv /usr/bin/go
|
||||
|
||||
# Install the requested version of Go
|
||||
local final_go_version=$(goenv latest --print $go_version)
|
||||
ynh_print_info --message="Installation of Go-$final_go_version"
|
||||
goenv install --skip-existing $final_go_version
|
||||
# Install the requested version of Go
|
||||
local final_go_version=$(goenv latest --print $go_version)
|
||||
ynh_print_info --message="Installation of Go-$final_go_version"
|
||||
goenv install --skip-existing $final_go_version
|
||||
|
||||
# Store go_version into the config of this app
|
||||
ynh_app_setting_set --app=$YNH_APP_INSTANCE_NAME --key=go_version --value=$final_go_version
|
||||
# Store go_version into the config of this app
|
||||
ynh_app_setting_set --app=$YNH_APP_INSTANCE_NAME --key=go_version --value=$final_go_version
|
||||
|
||||
# Cleanup Go versions
|
||||
ynh_cleanup_go
|
||||
# Cleanup Go versions
|
||||
ynh_cleanup_go
|
||||
|
||||
# Set environment for Go users
|
||||
echo "#goenv
|
||||
# Set environment for Go users
|
||||
echo "#goenv
|
||||
export GOENV_ROOT=$goenv_install_dir
|
||||
export PATH=\"$goenv_install_dir/bin:$PATH\"
|
||||
eval \"\$(goenv init -)\"
|
||||
#goenv" > /etc/profile.d/goenv.sh
|
||||
#goenv" >/etc/profile.d/goenv.sh
|
||||
|
||||
# Load the environment
|
||||
eval "$(goenv init -)"
|
||||
# Load the environment
|
||||
eval "$(goenv init -)"
|
||||
}
|
||||
|
||||
# Remove the version of Go used by the app.
|
||||
|
@ -303,20 +311,20 @@ eval \"\$(goenv init -)\"
|
|||
# This helper will also cleanup Go versions
|
||||
#
|
||||
# usage: ynh_remove_go
|
||||
ynh_remove_go () {
|
||||
local go_version=$(ynh_app_setting_get --app=$YNH_APP_INSTANCE_NAME --key=go_version)
|
||||
ynh_remove_go() {
|
||||
local go_version=$(ynh_app_setting_get --app=$YNH_APP_INSTANCE_NAME --key=go_version)
|
||||
|
||||
# Load goenv path in PATH
|
||||
local CLEAR_PATH="$goenv_install_dir/bin:$PATH"
|
||||
# Load goenv path in PATH
|
||||
local CLEAR_PATH="$goenv_install_dir/bin:$PATH"
|
||||
|
||||
# Remove /usr/local/bin in PATH in case of Go prior installation
|
||||
PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
|
||||
# Remove /usr/local/bin in PATH in case of Go prior installation
|
||||
PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
|
||||
|
||||
# Remove the line for this app
|
||||
ynh_app_setting_delete --app=$YNH_APP_INSTANCE_NAME --key=go_version
|
||||
# Remove the line for this app
|
||||
ynh_app_setting_delete --app=$YNH_APP_INSTANCE_NAME --key=go_version
|
||||
|
||||
# Cleanup Go versions
|
||||
ynh_cleanup_go
|
||||
# Cleanup Go versions
|
||||
ynh_cleanup_go
|
||||
}
|
||||
|
||||
# Remove no more needed versions of Go used by the app.
|
||||
|
@ -326,39 +334,34 @@ ynh_remove_go () {
|
|||
# If no app uses Go, goenv will be also removed.
|
||||
#
|
||||
# usage: ynh_cleanup_go
|
||||
ynh_cleanup_go () {
|
||||
ynh_cleanup_go() {
|
||||
|
||||
# List required Go versions
|
||||
local installed_apps=$(yunohost app list | grep -oP 'id: \K.*$')
|
||||
local required_go_versions=""
|
||||
for installed_app in $installed_apps
|
||||
do
|
||||
local installed_app_go_version=$(ynh_app_setting_get --app=$installed_app --key="go_version")
|
||||
if [[ $installed_app_go_version ]]
|
||||
then
|
||||
required_go_versions="${installed_app_go_version}\n${required_go_versions}"
|
||||
fi
|
||||
done
|
||||
|
||||
# Remove no more needed Go versions
|
||||
local installed_go_versions=$(goenv versions --bare --skip-aliases | grep -Ev '/')
|
||||
for installed_go_version in $installed_go_versions
|
||||
do
|
||||
if ! `echo ${required_go_versions} | grep "${installed_go_version}" 1>/dev/null 2>&1`
|
||||
then
|
||||
ynh_print_info --message="Removing of Go-$installed_go_version"
|
||||
$goenv_install_dir/bin/goenv uninstall --force $installed_go_version
|
||||
fi
|
||||
done
|
||||
|
||||
# If none Go version is required
|
||||
if [[ ! $required_go_versions ]]
|
||||
then
|
||||
# Remove goenv environment configuration
|
||||
ynh_print_info --message="Removing of goenv"
|
||||
ynh_secure_remove --file="$goenv_install_dir"
|
||||
ynh_secure_remove --file="/etc/profile.d/goenv.sh"
|
||||
# List required Go versions
|
||||
local installed_apps=$(yunohost app list | grep -oP 'id: \K.*$')
|
||||
local required_go_versions=""
|
||||
for installed_app in $installed_apps; do
|
||||
local installed_app_go_version=$(ynh_app_setting_get --app=$installed_app --key="go_version")
|
||||
if [[ $installed_app_go_version ]]; then
|
||||
required_go_versions="${installed_app_go_version}\n${required_go_versions}"
|
||||
fi
|
||||
done
|
||||
|
||||
# Remove no more needed Go versions
|
||||
local installed_go_versions=$(goenv versions --bare --skip-aliases | grep -Ev '/')
|
||||
for installed_go_version in $installed_go_versions; do
|
||||
if ! $(echo ${required_go_versions} | grep "${installed_go_version}" 1>/dev/null 2>&1); then
|
||||
ynh_print_info --message="Removing of Go-$installed_go_version"
|
||||
$goenv_install_dir/bin/goenv uninstall --force $installed_go_version
|
||||
fi
|
||||
done
|
||||
|
||||
# If none Go version is required
|
||||
if [[ ! $required_go_versions ]]; then
|
||||
# Remove goenv environment configuration
|
||||
ynh_print_info --message="Removing of goenv"
|
||||
ynh_secure_remove --file="$goenv_install_dir"
|
||||
ynh_secure_remove --file="/etc/profile.d/goenv.sh"
|
||||
fi
|
||||
}
|
||||
|
||||
#=================================================
|
||||
|
|
Loading…
Add table
Reference in a new issue