Add support for illumos/Solaris

This does come without xattr/fuse support at this point.

NB: not hooking up the integration tests as restic won't compile without
    cgo with Go < 1.10.
This commit is contained in:
Jasper Lievisse Adriaanse 2018-03-04 13:30:06 +00:00
parent f6890210aa
commit 96311d1a2b
18 changed files with 71 additions and 2 deletions

View file

@ -0,0 +1,3 @@
Enhancement: Add illumos/Solaris support.
https://github.com/restic/restic/pull/1649

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package main

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package main

View file

@ -63,7 +63,8 @@ command to serve the repository with FUSE:
Now serving /tmp/backup at /mnt/restic
Don't forget to umount after quitting!
Mounting repositories via FUSE is not possible on Windows and OpenBSD.
Mounting repositories via FUSE is not possible on OpenBSD, Solaris/illumos
and Windows.
Restic supports storage and preservation of hard links. However, since
hard links exist in the scope of a filesystem by definition, restoring

View file

@ -0,0 +1,25 @@
package sftp
import (
"os/exec"
"syscall"
"github.com/restic/restic/internal/errors"
)
func startForeground(cmd *exec.Cmd) (bg func() error, err error) {
// run the command in it's own process group so that SIGINT
// is not sent to it.
cmd.SysProcAttr = &syscall.SysProcAttr{
Setpgid: true,
}
// start the process
err = cmd.Start()
if err != nil {
return nil, errors.Wrap(err, "cmd.Start")
}
bg = func() error { return nil }
return bg, nil
}

View file

@ -1,3 +1,4 @@
// +build !solaris
// +build !windows
package sftp

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package fuse

View file

@ -0,0 +1,27 @@
package restic
import "syscall"
func (node Node) restoreSymlinkTimestamps(path string, utimes [2]syscall.Timespec) error {
return nil
}
func (s statUnix) atim() syscall.Timespec { return s.Atim }
func (s statUnix) mtim() syscall.Timespec { return s.Mtim }
func (s statUnix) ctim() syscall.Timespec { return s.Ctim }
// Getxattr retrieves extended attribute data associated with path.
func Getxattr(path, name string) ([]byte, error) {
return nil, nil
}
// Listxattr retrieves a list of names of extended attributes associated with the
// given path in the file system.
func Listxattr(path string) ([]string, error) {
return nil, nil
}
// Setxattr associates name and data together as an attribute of path.
func Setxattr(path, name string, data []byte) error {
return nil
}

View file

@ -1,4 +1,5 @@
// +build !openbsd
// +build !solaris
// +build !windows
package restic

View file

@ -1,4 +1,4 @@
// +build !windows,!darwin,!freebsd,!netbsd,!openbsd,!dragonfly
// +build !windows,!darwin,!freebsd,!netbsd,!openbsd,!dragonfly,!solaris
package restic