mirror of
https://github.com/abraunegg/onedrive
synced 2024-05-02 22:13:16 +02:00
parent
3b533894a2
commit
c8e47a47ff
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -5,3 +5,9 @@ onedrive.o
|
||||||
onedrive.service
|
onedrive.service
|
||||||
onedrive@.service
|
onedrive@.service
|
||||||
version
|
version
|
||||||
|
Makefile
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
autom4te.cache/
|
||||||
|
pacman/PKGBUILD
|
||||||
|
spec/onedrive.spec
|
||||||
|
|
|
@ -16,7 +16,7 @@ DEBIAN_MIRROR="http://httpredir.debian.org/debian"
|
||||||
HOST_DEPENDENCIES="qemu-user-static binfmt-support debootstrap sbuild wget"
|
HOST_DEPENDENCIES="qemu-user-static binfmt-support debootstrap sbuild wget"
|
||||||
|
|
||||||
# Debian package dependencies for the chrooted environment
|
# Debian package dependencies for the chrooted environment
|
||||||
GUEST_DEPENDENCIES="build-essential libcurl4-openssl-dev libsqlite3-dev libgnutls-openssl27 git libxml2"
|
GUEST_DEPENDENCIES="build-essential libcurl4-openssl-dev libsqlite3-dev libgnutls-openssl27 git pkg-config libxml2"
|
||||||
|
|
||||||
# LDC Version
|
# LDC Version
|
||||||
# Different versions due to https://github.com/ldc-developers/ldc/issues/3027
|
# Different versions due to https://github.com/ldc-developers/ldc/issues/3027
|
||||||
|
@ -122,16 +122,19 @@ function build_onedrive {
|
||||||
HOMEDIR=$(pwd)
|
HOMEDIR=$(pwd)
|
||||||
if [ "${ARCH}" = "x64" ]; then
|
if [ "${ARCH}" = "x64" ]; then
|
||||||
# Build on x86_64 as normal
|
# Build on x86_64 as normal
|
||||||
|
./configure
|
||||||
make clean; make;
|
make clean; make;
|
||||||
else
|
else
|
||||||
if [ "${ARCH}" = "x32" ]; then
|
if [ "${ARCH}" = "x32" ]; then
|
||||||
# 32Bit DMD Build
|
# 32Bit DMD Build
|
||||||
|
./configure DC=${HOMEDIR}/dlang-${ARCH}/linux/bin32/dmd
|
||||||
make clean;
|
make clean;
|
||||||
make DC=${HOMEDIR}/dlang-${ARCH}/linux/bin32/dmd
|
make
|
||||||
else
|
else
|
||||||
# LDC Build - ARM32, ARM64
|
# LDC Build - ARM32, ARM64
|
||||||
|
./configure DC=${HOMEDIR}/dlang-${ARCH}/bin/ldmd2
|
||||||
make clean;
|
make clean;
|
||||||
make DC=${HOMEDIR}/dlang-${ARCH}/bin/ldmd2
|
make
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# Functional testing of built application
|
# Functional testing of built application
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
FROM centos:7
|
FROM centos:7
|
||||||
ENV GOSU_VERSION=1.11
|
ENV GOSU_VERSION=1.11
|
||||||
|
|
||||||
RUN yum install -y make git gcc libcurl-devel sqlite-devel && \
|
RUN yum install -y make git gcc libcurl-devel sqlite-devel pkg-config && \
|
||||||
rm -rf /var/cache/yum/ && \
|
rm -rf /var/cache/yum/ && \
|
||||||
curl -fsS -o install.sh https://dlang.org/install.sh && \
|
curl -fsS -o install.sh https://dlang.org/install.sh && \
|
||||||
bash install.sh dmd && \
|
bash install.sh dmd && \
|
||||||
|
@ -17,7 +17,9 @@ RUN yum install -y make git gcc libcurl-devel sqlite-devel && \
|
||||||
RUN mkdir -p /onedrive/conf /onedrive/data
|
RUN mkdir -p /onedrive/conf /onedrive/data
|
||||||
COPY . /usr/src/onedrive
|
COPY . /usr/src/onedrive
|
||||||
RUN . "$(bash install.sh -a)" && \
|
RUN . "$(bash install.sh -a)" && \
|
||||||
make -C /usr/src/onedrive install.noservice && \
|
/usr/src/onedrive/configure && \
|
||||||
|
make -C /usr/src/onedrive && \
|
||||||
|
make -C /usr/src/onedrive install && \
|
||||||
make -C /usr/src/onedrive clean
|
make -C /usr/src/onedrive clean
|
||||||
COPY entrypoint.sh /entrypoint.sh
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
VOLUME ["/onedrive/conf"]
|
VOLUME ["/onedrive/conf"]
|
||||||
|
|
131
Makefile.in
Normal file
131
Makefile.in
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
package = @PACKAGE_NAME@
|
||||||
|
version = @PACKAGE_VERSION@
|
||||||
|
prefix = @prefix@
|
||||||
|
# we don't use @exec_prefix@ because it usually contains '${prefix}' literally
|
||||||
|
# but we use @prefix@/bin/onedrive in the systemd unit files which are generated
|
||||||
|
# from the configure script.
|
||||||
|
# Thus, set exec_prefix unconditionally to prefix
|
||||||
|
# Alternative approach would be add dep on sed, and do manual generation in the Makefile.
|
||||||
|
# exec_prefix = @exec_prefix@
|
||||||
|
exec_prefix = @prefix@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
datadir = @datadir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
bindir = @bindir@
|
||||||
|
mandir = @mandir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
docdir = $(datadir)/doc/$(package)
|
||||||
|
VPATH = @srcdir@
|
||||||
|
SED = @SED@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
|
||||||
|
NOTIFICATIONS = @NOTIFICATIONS@
|
||||||
|
HAVE_SYSTEMD = @HAVE_SYSTEMD@
|
||||||
|
systemduserunitdir = @systemduserunitdir@
|
||||||
|
systemdsystemunitdir = @systemdsystemunitdir@
|
||||||
|
curl_LIBS = @curl_LIBS@
|
||||||
|
sqlite_LIBS = @sqlite_LIBS@
|
||||||
|
notify_LIBS = @notify_LIBS@
|
||||||
|
COMPLETIONS = @COMPLETIONS@
|
||||||
|
BASH_COMPLETION_DIR = @BASH_COMPLETION_DIR@
|
||||||
|
ZSH_COMPLETION_DIR = @ZSH_COMPLETION_DIR@
|
||||||
|
DEBUG = @DEBUG@
|
||||||
|
|
||||||
|
DC = @DC@
|
||||||
|
DC_TYPE = @DC_TYPE@
|
||||||
|
DCFLAGS = @DCFLAGS@
|
||||||
|
DCFLAGS += -w -g -O -J.
|
||||||
|
ifeq ($(DEBUG),yes)
|
||||||
|
ifeq ($(DC_TYPE),dmd)
|
||||||
|
DCFLAGS += -debug -gs
|
||||||
|
else
|
||||||
|
DCFLAGS += -d-debug -gc
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(NOTIFICATIONS),yes)
|
||||||
|
NOTIF_VERSIONS=-version=NoPragma -version=NoGdk -version=Notifications
|
||||||
|
# support ldc2 which needs -d prefix for version specification
|
||||||
|
ifeq ($(DC_TYPE),ldc)
|
||||||
|
NOTIF_VERSIONS := $(addprefix -d,$(NOTIF_VERSIONS))
|
||||||
|
endif
|
||||||
|
DCFLAGS += $(NOTIF_VERSIONS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
system_unit_files = systemd.units/onedrive@.service
|
||||||
|
user_unit_files = systemd.units/onedrive.service
|
||||||
|
|
||||||
|
DOCFILES = README.md README.Office365.md config LICENSE CHANGELOG.md
|
||||||
|
|
||||||
|
SOURCES = \
|
||||||
|
src/config.d \
|
||||||
|
src/itemdb.d \
|
||||||
|
src/log.d \
|
||||||
|
src/main.d \
|
||||||
|
src/monitor.d \
|
||||||
|
src/onedrive.d \
|
||||||
|
src/qxor.d \
|
||||||
|
src/selective.d \
|
||||||
|
src/sqlite.d \
|
||||||
|
src/sync.d \
|
||||||
|
src/upload.d \
|
||||||
|
src/util.d \
|
||||||
|
src/progress.d
|
||||||
|
|
||||||
|
ifeq ($(NOTIFICATIONS),yes)
|
||||||
|
SOURCES += src/notifications/notify.d src/notifications/dnotify.d
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: onedrive
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f onedrive onedrive.o version
|
||||||
|
rm -rf autom4te.cache
|
||||||
|
rm -f config.log config.status
|
||||||
|
|
||||||
|
# also remove files generated via ./configure
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile pacman/PKGBUILD spec/onedrive.spec onedrive.1 \
|
||||||
|
systemd.units/onedrive.service systemd.units/onedrive@.service
|
||||||
|
|
||||||
|
onedrive: version $(SOURCES)
|
||||||
|
$(DC) $(DCFLAGS) $(addprefix -L,$(curl_LIBS)) $(addprefix -L,$(sqlite_LIBS)) $(addprefix -L,$(notify_LIBS)) -L-ldl $(SOURCES) -of$@
|
||||||
|
|
||||||
|
install: all
|
||||||
|
$(INSTALL) -d -o root -g users -m 0775 $(DESTDIR)/var/log/onedrive
|
||||||
|
$(INSTALL) -D onedrive $(DESTDIR)$(bindir)/onedrive
|
||||||
|
$(INSTALL) -D onedrive.1 $(DESTDIR)$(mandir)/man1/onedrive.1
|
||||||
|
$(INSTALL) -D -m 644 logrotate/onedrive.logrotate $(DESTDIR)$(sysconfdir)/logrotate.d/onedrive
|
||||||
|
for i in $(DOCFILES) ; do $(INSTALL) -D -m 644 $$i $(DESTDIR)$(docdir)/$$i ; done
|
||||||
|
ifeq ($(HAVE_SYSTEMD),yes)
|
||||||
|
$(INSTALL) -d -o root -g root -m 0755 $(DESTDIR)$(systemduserunitdir) $(DESTDIR)$(systemdsystemunitdir)
|
||||||
|
$(INSTALL) -m 0644 $(system_unit_files) $(DESTDIR)$(systemdsystemunitdir)
|
||||||
|
$(INSTALL) -m 0644 $(user_unit_files) $(DESTDIR)$(systemduserunitdir)
|
||||||
|
endif
|
||||||
|
ifeq ($(COMPLETIONS),yes)
|
||||||
|
$(INSTALL) -D -m 644 completions/complete.zsh $(DESTDIR)$(ZSH_COMPLETION_DIR)/_onedrive
|
||||||
|
$(INSTALL) -D -m 644 completions/complete.bash $(DESTDIR)$(BASH_COMPLETION_DIR)/onedrive
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -f $(DESTDIR)$(bindir)/onedrive
|
||||||
|
rm -f $(DESTDIR)$(mandir)/man1/onedrive.1
|
||||||
|
rm -f $(DESTDIR)$(sysconfdir)/logrotate.d/onedrive
|
||||||
|
ifeq ($(HAVE_SYSTEMD),yes)
|
||||||
|
for i in $(system_unit_files) ; do rm -f $(DESTDIR)$(systemdsystemunitdir)/$$i ; done
|
||||||
|
for i in $(user_unit_files) ; do rm -f $(DESTDIR)$(systemduserunitdir)/$$i ; done
|
||||||
|
endif
|
||||||
|
for i in $(DOCFILES) ; do rm -f $(DESTDIR)$(DOCDIR)/$$i ; done
|
||||||
|
ifeq ($(COMPLETIONS),yes)
|
||||||
|
rm -f $(DESTDIR)$(ZSH_COMPLETION_DIR)/_onedrive
|
||||||
|
rm -f $(DESTDIR)$(BASH_COMPLETION_DIR)/onedrive
|
||||||
|
endif
|
||||||
|
|
||||||
|
version:
|
||||||
|
if [ -f .git/HEAD ] ; then \
|
||||||
|
echo $(shell git describe --tags) > version ; \
|
||||||
|
else \
|
||||||
|
echo $(version) > version ; \
|
||||||
|
fi
|
||||||
|
|
32
README.md
32
README.md
|
@ -181,34 +181,38 @@ Without performing this step, the compilation process will fail.
|
||||||
```text
|
```text
|
||||||
git clone https://github.com/abraunegg/onedrive.git
|
git clone https://github.com/abraunegg/onedrive.git
|
||||||
cd onedrive
|
cd onedrive
|
||||||
|
./configure
|
||||||
make clean; make;
|
make clean; make;
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
### Build options
|
### Build options
|
||||||
|
|
||||||
By passing `PKGCONFIG=1` to the `make` call, necessary libraries (`sqlite3`,
|
Notifications can be enabled using the `configure` switch `--enable-notifications`.
|
||||||
`curl`, and `libnotify` for notifications) are searched for using `pkg-config`
|
|
||||||
instead of using the hard-coded values.
|
|
||||||
|
|
||||||
By passing `NOTIFICATIONS=1` to the `make` call, notifications via
|
Systemd service files are installed in the appropriate directories on the system,
|
||||||
libnotify are enabled. If `pkg-config` is not used (see above), the necessary
|
as provided by `pkg-config systemd` settings. If the need for overriding the
|
||||||
libraries are `gmodule-2.0`, `glib-2.0`, and `notify`.
|
deduced path are necessary, the two options `--with-systemdsystemunitdir` (for
|
||||||
|
the Systemd system unit location), and `--with-systemduserunitdir` (for the
|
||||||
|
Systemd user unit location) can be specified. Passing in `no` to one of these
|
||||||
|
options disabled service file installation.
|
||||||
|
|
||||||
By passing `DEBUG=1` to the `make` call, `onedrive` gets built with additional debug
|
By passing `--enable-debug` to the `configure` call, `onedrive` gets built with additional debug
|
||||||
information, useful (for example) to get `perf`-issued figures.
|
information, useful (for example) to get `perf`-issued figures.
|
||||||
|
|
||||||
By passing `COMPLETIONS=1` to the `make` call, shell completion functions are
|
By passing `--enable-completions` to the `configure` call, shell completion functions are
|
||||||
installed for `bash` and `zsh`. The installation directories are determined
|
installed for `bash` and `zsh`. The installation directories are determined
|
||||||
as far as possible automatically, but can be overridden by setting the
|
as far as possible automatically, but can be overridden by passing
|
||||||
environment variables `BASHCOMPLETIONDIR` and `ZSHCOMPLETIONDIR`.
|
`--with-bash-completion-dir=<DIR>` and
|
||||||
|
`--with-zsh-completion-dir=<DIR>` to `configure`.
|
||||||
|
|
||||||
### Building using a different compiler (for example [LDC](https://wiki.dlang.org/LDC))
|
### Building using a different compiler (for example [LDC](https://wiki.dlang.org/LDC))
|
||||||
#### Debian - i386 / i686
|
#### Debian - i386 / i686
|
||||||
```text
|
```text
|
||||||
git clone https://github.com/abraunegg/onedrive.git
|
git clone https://github.com/abraunegg/onedrive.git
|
||||||
cd onedrive
|
cd onedrive
|
||||||
make clean; make DC=/usr/bin/ldc2
|
./configure DC=ldc2
|
||||||
|
make clean; make
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -216,7 +220,8 @@ sudo make install
|
||||||
```text
|
```text
|
||||||
git clone https://github.com/abraunegg/onedrive.git
|
git clone https://github.com/abraunegg/onedrive.git
|
||||||
cd onedrive
|
cd onedrive
|
||||||
make clean; make DC=~/ldc2-1.13.0-linux-armhf/bin/ldmd2
|
./configure DC=~/ldc2-1.13.0-linux-armhf/bin/ldmd2
|
||||||
|
make clean; make
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -224,7 +229,8 @@ sudo make install
|
||||||
```text
|
```text
|
||||||
git clone https://github.com/abraunegg/onedrive.git
|
git clone https://github.com/abraunegg/onedrive.git
|
||||||
cd onedrive
|
cd onedrive
|
||||||
make clean; make DC=~/ldc2-1.14.0-linux-aarch64/bin/ldmd2
|
./configure DC=~/ldc2-1.14.0-linux-aarch64/bin/ldmd2
|
||||||
|
make clean; make
|
||||||
sudo make install
|
sudo make install
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
290
aclocal.m4
vendored
Normal file
290
aclocal.m4
vendored
Normal file
|
@ -0,0 +1,290 @@
|
||||||
|
# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
|
||||||
|
|
||||||
|
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
# This file is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||||
|
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||||
|
dnl serial 11 (pkg-config-0.29)
|
||||||
|
dnl
|
||||||
|
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||||
|
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||||
|
dnl
|
||||||
|
dnl This program is free software; you can redistribute it and/or modify
|
||||||
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation; either version 2 of the License, or
|
||||||
|
dnl (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl This program is distributed in the hope that it will be useful, but
|
||||||
|
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
dnl General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with this program; if not, write to the Free Software
|
||||||
|
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
dnl 02111-1307, USA.
|
||||||
|
dnl
|
||||||
|
dnl As a special exception to the GNU General Public License, if you
|
||||||
|
dnl distribute this file as part of a program that contains a
|
||||||
|
dnl configuration script generated by Autoconf, you may include it under
|
||||||
|
dnl the same distribution terms that you use for the rest of that
|
||||||
|
dnl program.
|
||||||
|
|
||||||
|
dnl PKG_PREREQ(MIN-VERSION)
|
||||||
|
dnl -----------------------
|
||||||
|
dnl Since: 0.29
|
||||||
|
dnl
|
||||||
|
dnl Verify that the version of the pkg-config macros are at least
|
||||||
|
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
|
||||||
|
dnl installed version of pkg-config, this checks the developer's version
|
||||||
|
dnl of pkg.m4 when generating configure.
|
||||||
|
dnl
|
||||||
|
dnl To ensure that this macro is defined, also add:
|
||||||
|
dnl m4_ifndef([PKG_PREREQ],
|
||||||
|
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
|
||||||
|
dnl
|
||||||
|
dnl See the "Since" comment for each macro you use to see what version
|
||||||
|
dnl of the macros you require.
|
||||||
|
m4_defun([PKG_PREREQ],
|
||||||
|
[m4_define([PKG_MACROS_VERSION], [0.29])
|
||||||
|
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||||
|
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||||
|
])dnl PKG_PREREQ
|
||||||
|
|
||||||
|
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||||
|
dnl ----------------------------------
|
||||||
|
dnl Since: 0.16
|
||||||
|
dnl
|
||||||
|
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
|
||||||
|
dnl first found in the path. Checks that the version of pkg-config found
|
||||||
|
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
|
||||||
|
dnl used since that's the first version where most current features of
|
||||||
|
dnl pkg-config existed.
|
||||||
|
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||||
|
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||||
|
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||||
|
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
|
||||||
|
|
||||||
|
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||||
|
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||||
|
fi
|
||||||
|
if test -n "$PKG_CONFIG"; then
|
||||||
|
_pkg_min_version=m4_default([$1], [0.9.0])
|
||||||
|
AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
|
||||||
|
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
PKG_CONFIG=""
|
||||||
|
fi
|
||||||
|
fi[]dnl
|
||||||
|
])dnl PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
|
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl -------------------------------------------------------------------
|
||||||
|
dnl Since: 0.18
|
||||||
|
dnl
|
||||||
|
dnl Check to see whether a particular set of modules exists. Similar to
|
||||||
|
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||||
|
dnl
|
||||||
|
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
dnl only at the first occurence in configure.ac, so if the first place
|
||||||
|
dnl it's called might be skipped (such as if it is within an "if", you
|
||||||
|
dnl have to call PKG_CHECK_EXISTS manually
|
||||||
|
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
if test -n "$PKG_CONFIG" && \
|
||||||
|
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
||||||
|
m4_default([$2], [:])
|
||||||
|
m4_ifvaln([$3], [else
|
||||||
|
$3])dnl
|
||||||
|
fi])
|
||||||
|
|
||||||
|
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||||
|
dnl ---------------------------------------------
|
||||||
|
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
|
||||||
|
dnl pkg_failed based on the result.
|
||||||
|
m4_define([_PKG_CONFIG],
|
||||||
|
[if test -n "$$1"; then
|
||||||
|
pkg_cv_[]$1="$$1"
|
||||||
|
elif test -n "$PKG_CONFIG"; then
|
||||||
|
PKG_CHECK_EXISTS([$3],
|
||||||
|
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
|
||||||
|
test "x$?" != "x0" && pkg_failed=yes ],
|
||||||
|
[pkg_failed=yes])
|
||||||
|
else
|
||||||
|
pkg_failed=untried
|
||||||
|
fi[]dnl
|
||||||
|
])dnl _PKG_CONFIG
|
||||||
|
|
||||||
|
dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
dnl ---------------------------
|
||||||
|
dnl Internal check to see if pkg-config supports short errors.
|
||||||
|
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||||
|
_pkg_short_errors_supported=yes
|
||||||
|
else
|
||||||
|
_pkg_short_errors_supported=no
|
||||||
|
fi[]dnl
|
||||||
|
])dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||||
|
dnl [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl --------------------------------------------------------------
|
||||||
|
dnl Since: 0.4.0
|
||||||
|
dnl
|
||||||
|
dnl Note that if there is a possibility the first call to
|
||||||
|
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||||
|
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||||
|
AC_DEFUN([PKG_CHECK_MODULES],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||||
|
AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
|
||||||
|
|
||||||
|
pkg_failed=no
|
||||||
|
AC_MSG_CHECKING([for $1])
|
||||||
|
|
||||||
|
_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
|
||||||
|
_PKG_CONFIG([$1][_LIBS], [libs], [$2])
|
||||||
|
|
||||||
|
m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
|
||||||
|
and $1[]_LIBS to avoid the need to call pkg-config.
|
||||||
|
See the pkg-config man page for more details.])
|
||||||
|
|
||||||
|
if test $pkg_failed = yes; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_PKG_SHORT_ERRORS_SUPPORTED
|
||||||
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||||
|
else
|
||||||
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||||
|
fi
|
||||||
|
# Put the nasty error message in config.log where it belongs
|
||||||
|
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||||
|
|
||||||
|
m4_default([$4], [AC_MSG_ERROR(
|
||||||
|
[Package requirements ($2) were not met:
|
||||||
|
|
||||||
|
$$1_PKG_ERRORS
|
||||||
|
|
||||||
|
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
||||||
|
installed software in a non-standard prefix.
|
||||||
|
|
||||||
|
_PKG_TEXT])[]dnl
|
||||||
|
])
|
||||||
|
elif test $pkg_failed = untried; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
m4_default([$4], [AC_MSG_FAILURE(
|
||||||
|
[The pkg-config script could not be found or is too old. Make sure it
|
||||||
|
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||||
|
path to pkg-config.
|
||||||
|
|
||||||
|
_PKG_TEXT
|
||||||
|
|
||||||
|
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||||
|
])
|
||||||
|
else
|
||||||
|
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||||
|
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
$3
|
||||||
|
fi[]dnl
|
||||||
|
])dnl PKG_CHECK_MODULES
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||||
|
dnl [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl ---------------------------------------------------------------------
|
||||||
|
dnl Since: 0.29
|
||||||
|
dnl
|
||||||
|
dnl Checks for existence of MODULES and gathers its build flags with
|
||||||
|
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
|
||||||
|
dnl and VARIABLE-PREFIX_LIBS from --libs.
|
||||||
|
dnl
|
||||||
|
dnl Note that if there is a possibility the first call to
|
||||||
|
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
|
||||||
|
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
|
||||||
|
dnl configure.ac.
|
||||||
|
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
_save_PKG_CONFIG=$PKG_CONFIG
|
||||||
|
PKG_CONFIG="$PKG_CONFIG --static"
|
||||||
|
PKG_CHECK_MODULES($@)
|
||||||
|
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
|
||||||
|
])dnl PKG_CHECK_MODULES_STATIC
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_INSTALLDIR([DIRECTORY])
|
||||||
|
dnl -------------------------
|
||||||
|
dnl Since: 0.27
|
||||||
|
dnl
|
||||||
|
dnl Substitutes the variable pkgconfigdir as the location where a module
|
||||||
|
dnl should install pkg-config .pc files. By default the directory is
|
||||||
|
dnl $libdir/pkgconfig, but the default can be changed by passing
|
||||||
|
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||||
|
dnl parameter.
|
||||||
|
AC_DEFUN([PKG_INSTALLDIR],
|
||||||
|
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
|
||||||
|
m4_pushdef([pkg_description],
|
||||||
|
[pkg-config installation directory @<:@]pkg_default[@:>@])
|
||||||
|
AC_ARG_WITH([pkgconfigdir],
|
||||||
|
[AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
|
||||||
|
[with_pkgconfigdir=]pkg_default)
|
||||||
|
AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
|
||||||
|
m4_popdef([pkg_default])
|
||||||
|
m4_popdef([pkg_description])
|
||||||
|
])dnl PKG_INSTALLDIR
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
|
||||||
|
dnl --------------------------------
|
||||||
|
dnl Since: 0.27
|
||||||
|
dnl
|
||||||
|
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||||
|
dnl module should install arch-independent pkg-config .pc files. By
|
||||||
|
dnl default the directory is $datadir/pkgconfig, but the default can be
|
||||||
|
dnl changed by passing DIRECTORY. The user can override through the
|
||||||
|
dnl --with-noarch-pkgconfigdir parameter.
|
||||||
|
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
|
||||||
|
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
|
||||||
|
m4_pushdef([pkg_description],
|
||||||
|
[pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
|
||||||
|
AC_ARG_WITH([noarch-pkgconfigdir],
|
||||||
|
[AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
|
||||||
|
[with_noarch_pkgconfigdir=]pkg_default)
|
||||||
|
AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
|
||||||
|
m4_popdef([pkg_default])
|
||||||
|
m4_popdef([pkg_description])
|
||||||
|
])dnl PKG_NOARCH_INSTALLDIR
|
||||||
|
|
||||||
|
|
||||||
|
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
|
||||||
|
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
|
dnl -------------------------------------------
|
||||||
|
dnl Since: 0.28
|
||||||
|
dnl
|
||||||
|
dnl Retrieves the value of the pkg-config variable for the given module.
|
||||||
|
AC_DEFUN([PKG_CHECK_VAR],
|
||||||
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
|
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
|
||||||
|
|
||||||
|
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
|
||||||
|
AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||||
|
|
||||||
|
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||||
|
])dnl PKG_CHECK_VAR
|
||||||
|
|
178
configure.ac
Normal file
178
configure.ac
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
dnl configure.ac for OneDrive Linux Client
|
||||||
|
dnl Copyright 2019 Norbert Preining
|
||||||
|
dnl Licensed GPL v3 or later
|
||||||
|
|
||||||
|
dnl How to make a release
|
||||||
|
dnl - increase the version number in the AC_INIT call below
|
||||||
|
dnl - run autoconf which generates configure
|
||||||
|
dnl - commit the changed files (configure.ac, configure)
|
||||||
|
dnl - tag the release
|
||||||
|
|
||||||
|
AC_PREREQ([2.69])
|
||||||
|
AC_INIT([onedrive],[2.3.2], [https://github.com/abraunegg/onedrive], [onedrive])
|
||||||
|
AC_CONFIG_SRCDIR([src/main.d])
|
||||||
|
|
||||||
|
|
||||||
|
AC_ARG_VAR([DC], [D compiler executable])
|
||||||
|
AC_ARG_VAR([DCFLAGS], [flags for D compiler])
|
||||||
|
|
||||||
|
dnl necessary programs: install, pkg-config
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
|
dnl Determine D compiler
|
||||||
|
dnl we check for dmd, dmd2, and ldc2 in this order
|
||||||
|
dnl furthermore, we set DC_TYPE to either dmd or ldc and export this into the
|
||||||
|
dnl Makefile so that we can adjust command line arguments
|
||||||
|
AC_CHECK_PROGS([DC], [dmd ldmd2 ldc2], NOT_FOUND)
|
||||||
|
DC_TYPE=
|
||||||
|
case $(basename $DC) in
|
||||||
|
dmd) DC_TYPE=dmd ;;
|
||||||
|
ldmd2) DC_TYPE=dmd ;;
|
||||||
|
ldc2) DC_TYPE=ldc ;;
|
||||||
|
NOT_FOUND) AC_MSG_ERROR(Could not find any compatible D compiler, 1)
|
||||||
|
esac
|
||||||
|
AC_SUBST([DC_TYPE])
|
||||||
|
dnl In case the environment variable DCFLAGS is set, we export it to the
|
||||||
|
dnl generated Makefile at configure run:
|
||||||
|
AC_SUBST([DCFLAGS])
|
||||||
|
|
||||||
|
dnl The package date is only used in the man page onedrive.1.in
|
||||||
|
dnl we generate onedrive.1 from it during configure run, but we want
|
||||||
|
dnl to have the same date, namely the one when the configure script
|
||||||
|
dnl was generated from the configure.ac (i.e., on release time).
|
||||||
|
dnl this uses a call to the underlying m4 engine to call an external cmd
|
||||||
|
PACKAGE_DATE="m4_esyscmd([date "+%B %Y" | tr -d '\n'])"
|
||||||
|
AC_SUBST([PACKAGE_DATE])
|
||||||
|
|
||||||
|
dnl Check for required modules: curl and sqlite at the moment
|
||||||
|
PKG_CHECK_MODULES([curl],[libcurl])
|
||||||
|
PKG_CHECK_MODULES([sqlite],[sqlite3])
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl systemd and unit file directories
|
||||||
|
dnl This is a bit tricky, because we want to allow for
|
||||||
|
dnl --with-systemdsystemunitdir=auto
|
||||||
|
dnl as well as =/path/to/dir
|
||||||
|
dnl The first step is that we check whether the --with options is passed to configure run
|
||||||
|
dnl if yes, we don't do anything (the ,, at the end of the next line), and if not, we
|
||||||
|
dnl set with_systemdsystemunitdir=auto, meaning we will try pkg-config to find the correct
|
||||||
|
dnl value.
|
||||||
|
AC_ARG_WITH([systemdsystemunitdir],
|
||||||
|
[AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd system service files])],,
|
||||||
|
[with_systemdsystemunitdir=auto])
|
||||||
|
dnl If no value is passed in (or auto/yes is passed in), then we try to find the correct
|
||||||
|
dnl value via pkg-config and put it into $def_systemdsystemunitdir
|
||||||
|
AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"],
|
||||||
|
[ dnl true part, so try to determine with pkg-config
|
||||||
|
def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
|
||||||
|
dnl if we cannot find it via pkg-config, *and* the user explicitely passed it in with,
|
||||||
|
dnl we warn, and in all cases we unset (set to no) the respective variable
|
||||||
|
AS_IF([test "x$def_systemdsystemunitdir" = "x"],
|
||||||
|
[ dnl we couldn't find the default value via pkg-config
|
||||||
|
AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
|
||||||
|
[AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
|
||||||
|
with_systemdsystemunitdir=no
|
||||||
|
],
|
||||||
|
[ dnl pkg-config found the value, use it
|
||||||
|
with_systemdsystemunitdir="$def_systemdsystemunitdir"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
dnl finally, if we found a value, put it into the generated Makefile
|
||||||
|
AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
|
||||||
|
[AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
|
||||||
|
|
||||||
|
dnl Now do the same as above for systemduserunitdir!
|
||||||
|
AC_ARG_WITH([systemduserunitdir],
|
||||||
|
[AS_HELP_STRING([--with-systemduserunitdir=DIR], [Directory for systemd user service files])],,
|
||||||
|
[with_systemduserunitdir=auto])
|
||||||
|
AS_IF([test "x$with_systemduserunitdir" = "xyes" -o "x$with_systemduserunitdir" = "xauto"],
|
||||||
|
[
|
||||||
|
def_systemduserunitdir=$($PKG_CONFIG --variable=systemduserunitdir systemd)
|
||||||
|
AS_IF([test "x$def_systemduserunitdir" = "x"],
|
||||||
|
[
|
||||||
|
AS_IF([test "x$with_systemduserunitdir" = "xyes"],
|
||||||
|
[AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
|
||||||
|
with_systemduserunitdir=no
|
||||||
|
],
|
||||||
|
[
|
||||||
|
with_systemduserunitdir="$def_systemduserunitdir"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
AS_IF([test "x$with_systemduserunitdir" != "xno"],
|
||||||
|
[AC_SUBST([systemduserunitdir], [$with_systemduserunitdir])])
|
||||||
|
|
||||||
|
dnl We enable systemd integration only if we have found both user/system unit dirs
|
||||||
|
AS_IF([test "x$with_systemduserunitdir" != "xno" -a "x$with_systemdsystemunitdir" != "xno"],
|
||||||
|
[havesystemd=yes], [havesystemd=no])
|
||||||
|
AC_SUBST([HAVE_SYSTEMD], $havesystemd)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl Notification support
|
||||||
|
dnl only check for libnotify if --enable-notifications is given
|
||||||
|
AC_ARG_ENABLE(notifications,
|
||||||
|
[AS_HELP_STRING([--enable-notifications],
|
||||||
|
[Enable desktop notifications via libnotify])],
|
||||||
|
enable_notifications=yes,
|
||||||
|
enable_notifications=no)
|
||||||
|
dnl if --enable-notifications was given, check for libnotify, and disable if not found
|
||||||
|
dnl otherwise substitute the notifu
|
||||||
|
AS_IF([test "x$enable_notifications" = "xyes"],
|
||||||
|
[PKG_CHECK_MODULES(notify,libnotify,,enable_notifications=no)],
|
||||||
|
[AC_SUBST([notify_LIBS],"")])
|
||||||
|
AC_SUBST([NOTIFICATIONS],$enable_notifications)
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl Completion support
|
||||||
|
dnl First determine whether completions are requested, pass that to Makefile
|
||||||
|
AC_ARG_ENABLE(completions,
|
||||||
|
[AS_HELP_STRING([--enable-completions],
|
||||||
|
[Install shell completions for bash and zsh])],
|
||||||
|
enable_completions=yes,
|
||||||
|
enable_completions=no)
|
||||||
|
AC_SUBST([COMPLETIONS],$enable_completions)
|
||||||
|
|
||||||
|
|
||||||
|
dnl if completions are enabled, search for the bash/zsh completion directory in the
|
||||||
|
dnl similar way as we did for the systemd directories
|
||||||
|
AS_IF([test "x$enable_completions" = "xyes"],[
|
||||||
|
AC_ARG_WITH([bash-completion-dir],
|
||||||
|
[AS_HELP_STRING([--with-bash-completion-dir=DIR], [Directory for bash completion files])],
|
||||||
|
,
|
||||||
|
[with_bash_completion_dir=auto])
|
||||||
|
AS_IF([test "x$with_bash_completion_dir" = "xyes" -o "x$with_bash_completion_dir" = "xauto"],
|
||||||
|
[
|
||||||
|
PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir], ,
|
||||||
|
bashcompdir="${sysconfdir}/bash_completion.d")
|
||||||
|
with_bash_completion_dir=$bashcompdir
|
||||||
|
])
|
||||||
|
AC_SUBST([BASH_COMPLETION_DIR], $with_bash_completion_dir)
|
||||||
|
|
||||||
|
AC_ARG_WITH([zsh-completion-dir],
|
||||||
|
[AS_HELP_STRING([--with-zsh-completion-dir=DIR], [Directory for zsh completion files])],,
|
||||||
|
[with_zsh_completion_dir=auto])
|
||||||
|
AS_IF([test "x$with_zsh_completion_dir" = "xyes" -o "x$with_zsh_completion_dir" = "xauto"],
|
||||||
|
[
|
||||||
|
with_zsh_completion_dir="/usr/local/share/zsh/site-functions"
|
||||||
|
])
|
||||||
|
AC_SUBST([ZSH_COMPLETION_DIR], $with_zsh_completion_dir)
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl Debug support
|
||||||
|
AC_ARG_ENABLE(debug,
|
||||||
|
[AS_HELP_STRING([--enable-debug],
|
||||||
|
[Pass debug option to the compiler])],
|
||||||
|
AC_SUBST([DEBUG],yes),
|
||||||
|
AC_SUBST([DEBUG],no))
|
||||||
|
|
||||||
|
dnl generate necessary files
|
||||||
|
AC_CONFIG_FILES([Makefile pacman/PKGBUILD spec/onedrive.spec onedrive.1 systemd.units/onedrive.service systemd.units/onedrive@.service])
|
||||||
|
AC_OUTPUT
|
518
install-sh
Executable file
518
install-sh
Executable file
|
@ -0,0 +1,518 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2018-03-11.20; # UTC
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# 'make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
|
||||||
|
tab=' '
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" $tab$nl"
|
||||||
|
|
||||||
|
# Set DOITPROG to "echo" to test this script.
|
||||||
|
|
||||||
|
doit=${DOITPROG-}
|
||||||
|
doit_exec=${doit:-exec}
|
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path;
|
||||||
|
# or use environment vars.
|
||||||
|
|
||||||
|
chgrpprog=${CHGRPPROG-chgrp}
|
||||||
|
chmodprog=${CHMODPROG-chmod}
|
||||||
|
chownprog=${CHOWNPROG-chown}
|
||||||
|
cmpprog=${CMPPROG-cmp}
|
||||||
|
cpprog=${CPPROG-cp}
|
||||||
|
mkdirprog=${MKDIRPROG-mkdir}
|
||||||
|
mvprog=${MVPROG-mv}
|
||||||
|
rmprog=${RMPROG-rm}
|
||||||
|
stripprog=${STRIPPROG-strip}
|
||||||
|
|
||||||
|
posix_mkdir=
|
||||||
|
|
||||||
|
# Desired mode of installed file.
|
||||||
|
mode=0755
|
||||||
|
|
||||||
|
chgrpcmd=
|
||||||
|
chmodcmd=$chmodprog
|
||||||
|
chowncmd=
|
||||||
|
mvcmd=$mvprog
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
stripcmd=
|
||||||
|
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dst_arg=
|
||||||
|
|
||||||
|
copy_on_change=false
|
||||||
|
is_target_a_directory=possibly
|
||||||
|
|
||||||
|
usage="\
|
||||||
|
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
-c (ignored)
|
||||||
|
-C install only if different (preserve the last data modification time)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||||
|
RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test $# -ne 0; do
|
||||||
|
case $1 in
|
||||||
|
-c) ;;
|
||||||
|
|
||||||
|
-C) copy_on_change=true;;
|
||||||
|
|
||||||
|
-d) dir_arg=true;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) mode=$2
|
||||||
|
case $mode in
|
||||||
|
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
|
-t)
|
||||||
|
is_target_a_directory=always
|
||||||
|
dst_arg=$2
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
shift;;
|
||||||
|
|
||||||
|
-T) is_target_a_directory=never;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# We allow the use of options -d and -T together, by making -d
|
||||||
|
# take the precedence; this is for compatibility with GNU install.
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
echo "$0: target directory not allowed when installing a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||||
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dst_arg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dst_arg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call 'install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||||
|
if test ! -d "$dst_arg"; then
|
||||||
|
echo "$0: $dst_arg: Is not a directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
case $mode in
|
||||||
|
# Optimize common cases.
|
||||||
|
*644) cp_umask=133;;
|
||||||
|
*755) cp_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw='% 200'
|
||||||
|
fi
|
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
|
*)
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw=,u+rw
|
||||||
|
fi
|
||||||
|
cp_umask=$mode$u_plus_rw;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names problematic for 'test' and other utilities.
|
||||||
|
case $src in
|
||||||
|
-* | [=\(\)!]) src=./$src;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
dstdir=$dst
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dst_arg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dst=$dst_arg
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test "$is_target_a_directory" = never; then
|
||||||
|
echo "$0: $dst_arg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dstbase=`basename "$src"`
|
||||||
|
case $dst in
|
||||||
|
*/) dst=$dst$dstbase;;
|
||||||
|
*) dst=$dst/$dstbase;;
|
||||||
|
esac
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
dstdir=`dirname "$dst"`
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
*/) dstdirslash=$dstdir;;
|
||||||
|
*) dstdirslash=$dstdir/;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
|
if test $dstdir_status != 0; then
|
||||||
|
case $posix_mkdir in
|
||||||
|
'')
|
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
|
umask=`umask`
|
||||||
|
case $stripcmd.$umask in
|
||||||
|
# Optimize common cases.
|
||||||
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
mkdir_umask=`expr $umask + 22 \
|
||||||
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
|
- $umask % 10 % 4 + $umask % 2
|
||||||
|
`;;
|
||||||
|
*) mkdir_umask=$umask,go-w;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode.
|
||||||
|
# Otherwise, rely on $mkdir_umask.
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
mkdir_mode=-m$mode
|
||||||
|
else
|
||||||
|
mkdir_mode=
|
||||||
|
fi
|
||||||
|
|
||||||
|
posix_mkdir=false
|
||||||
|
case $umask in
|
||||||
|
*[123567][0-7][0-7])
|
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Note that $RANDOM variable is not portable (e.g. dash); Use it
|
||||||
|
# here however when possible just to lower collision chance.
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||||
|
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||||
|
# directory is successfully created first before we actually test
|
||||||
|
# 'mkdir -p' feature.
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
if test -z "$dir_arg" || {
|
||||||
|
# Check for POSIX incompatibilities with -m.
|
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
|
# other-writable bit of parent directory when it shouldn't.
|
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
|
test_tmpdir="$tmpdir/a"
|
||||||
|
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if
|
||||||
|
$posix_mkdir && (
|
||||||
|
umask $mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
|
)
|
||||||
|
then :
|
||||||
|
else
|
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||||
|
# or it failed possibly due to a race condition. Create the
|
||||||
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
/*) prefix='/';;
|
||||||
|
[-=\(\)!]*) prefix='./';;
|
||||||
|
*) prefix='';;
|
||||||
|
esac
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
set +f
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
prefixes=
|
||||||
|
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
test X"$d" = X && continue
|
||||||
|
|
||||||
|
prefix=$prefix$d
|
||||||
|
if test -d "$prefix"; then
|
||||||
|
prefixes=
|
||||||
|
else
|
||||||
|
if $posix_mkdir; then
|
||||||
|
(umask=$mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
test -d "$prefix" || exit 1
|
||||||
|
else
|
||||||
|
case $prefix in
|
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
|
*) qprefix=$prefix;;
|
||||||
|
esac
|
||||||
|
prefixes="$prefixes '$qprefix'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
prefix=$prefix/
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$prefixes"; then
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
(umask $mkdir_umask &&
|
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
|
test -d "$dstdir" || exit 1
|
||||||
|
obsolete_mkdir_used=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=${dstdirslash}_inst.$$_
|
||||||
|
rmtmp=${dstdirslash}_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||||
|
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# If -C, don't bother to copy if it wouldn't change the file.
|
||||||
|
if $copy_on_change &&
|
||||||
|
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||||
|
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||||
|
set -f &&
|
||||||
|
set X $old && old=:$2:$4:$5:$6 &&
|
||||||
|
set X $new && new=:$2:$4:$5:$6 &&
|
||||||
|
set +f &&
|
||||||
|
test "$old" = "$new" &&
|
||||||
|
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
rm -f "$dsttmp"
|
||||||
|
else
|
||||||
|
# Rename the file to the real destination.
|
||||||
|
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||||
|
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
{
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
test ! -f "$dst" ||
|
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||||
|
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||||
|
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||||
|
} ||
|
||||||
|
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
|
}
|
||||||
|
fi || exit 1
|
||||||
|
|
||||||
|
trap '' 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-time-zone: "UTC0"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
|
# End:
|
|
@ -1,4 +1,4 @@
|
||||||
.TH ONEDRIVE "1" "April 2019" "2.3.3" "User Commands"
|
.TH ONEDRIVE "1" "@PACKAGE_DATE@" "@PACKAGE_VERSION@" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
onedrive \- folder synchronization with OneDrive
|
onedrive \- folder synchronization with OneDrive
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -276,5 +276,5 @@ for a user via the \fBonedrive@<username>\fP service.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
|
||||||
Further examples and documentation is available in
|
Further examples and documentation is available in
|
||||||
\f[C]@DOCDIR@/README.md\f[]
|
\f[C]README.md\f[]
|
||||||
\f[C]@DOCDIR@/README.Office365.md\f[]
|
\f[C]README.Office365.md\f[]
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
pkgname=onedrive
|
pkgname=onedrive
|
||||||
pkgver=2.3.3
|
pkgver=@PACKAGE_VERSION@
|
||||||
pkgrel=1 #patch-level (Increment this when patch is applied)
|
pkgrel=1 #patch-level (Increment this when patch is applied)
|
||||||
pkgdesc="A free OneDrive Client for Linux. This is a fork of the https://github.com/skilion/onedrive repository"
|
pkgdesc="A free OneDrive Client for Linux. This is a fork of the https://github.com/skilion/onedrive repository"
|
||||||
license=("unknown")
|
license=("unknown")
|
|
@ -6,7 +6,7 @@
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: onedrive
|
Name: onedrive
|
||||||
Version: 2.3.3
|
Version: @PACKAGE_VERSION@
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Microsoft OneDrive Client
|
Summary: Microsoft OneDrive Client
|
||||||
Group: System Environment/Network
|
Group: System Environment/Network
|
|
@ -5,7 +5,7 @@ After=network-online.target
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=@PREFIX@/bin/onedrive --monitor
|
ExecStart=@prefix@/bin/onedrive --monitor
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=3
|
RestartSec=3
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ After=network-online.target
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=@PREFIX@/bin/onedrive --monitor --confdir=/home/%i/.config/onedrive
|
ExecStart=@prefix@/bin/onedrive --monitor --confdir=/home/%i/.config/onedrive
|
||||||
User=%i
|
User=%i
|
||||||
Group=users
|
Group=users
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
|
|
Loading…
Reference in a new issue