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 !openbsd
// +build !solaris
// +build !windows // +build !windows
package main package main

View file

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

View file

@ -63,7 +63,8 @@ command to serve the repository with FUSE:
Now serving /tmp/backup at /mnt/restic Now serving /tmp/backup at /mnt/restic
Don't forget to umount after quitting! 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 Restic supports storage and preservation of hard links. However, since
hard links exist in the scope of a filesystem by definition, restoring 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 // +build !windows
package sftp package sftp

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,5 @@
// +build !openbsd // +build !openbsd
// +build !solaris
// +build !windows // +build !windows
package fuse 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 !openbsd
// +build !solaris
// +build !windows // +build !windows
package restic 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 package restic