Hi all,
I started to create a debian package of restic which builds and runs fine and is installable. In some weeks I will hopefully setup a debian wheezy repository. Currently I have my draft in my master branch, look at the debian folder and the Makefile deb target:
https://github.com/xor-gate/restic
The tests are disabled because I could not get them work.
Also when using build.go and /tmp is mounted as noexec it fails in a painfull way :_).
I'm no real debian developer but have many experience on linux and unix systems. So it is possible it doesn't meet the full debian packaging guidelines (yet).
Thanks for the effort. You can set the temporary directory via the environment variable TMPDIR.
I will look into it and when it is acceptable I will document, squash and create a pull request.
https://github.com/xor-gate/restic does no longer exist, is anyone (still) working on the Debian packaging?
A Debian repo for this would be great.
Mebus
@mika, i had screwed up the repository. Now it is "polished" and reproducable.
I also added a little documentation: https://github.com/xor-gate/restic/tree/debian#debian-packaging
https://github.com/xor-gate/restic/tree/debian
https://github.com/xor-gate/restic/blob/debian/Makefile
https://github.com/xor-gate/restic/releases/tag/v0.0.1-debian
Please use the makefile in a container or VM. No guarantees :-)
If @fd0 is interessted I can clean it up a bit and create a pull request of this ? Actual signing and setup of a repository can be done with e.g. http://bintray.com . It is not the nicest solution but it works and there doesn't need to be someone hosting a package repository (pain). Optional you could run the debian repository yourself without the nasty reprepro tools and stuffs: http://www.aptly.info/
@xor-gate Do you intend to push/maintain it into debian? Assuming my first test with restic work out nicely I'd be happy to sponsor an upload :)
@sjoerd-ccu i'm not a official debian developer and maintaining a package can be time consuming. My current debian packaging will need some love to actual make it into the debian packaging system.
I'm a Debian Developer, hence i can sponsor an upload and review your packaging. But yes the real choice you need to make is whether you want to maintain it properly :)
I was a Debian Developer myself once, but did not have the time any more.
I'd very much appreciate someone stepping up and maintaining a proper package, either inside of Debian or outside. I can also host a repository for packages outside of Debian (e.g. on GitHub), but this would need someone else to manage the packaging (I'll be glad to assist of course) :)
If there is interest, we can e.g. also add a repository for group-maintaining, e.g. at github.com/restic/pkg-debian or so.
I would like to maintain the package (outside of debian) but for having it upstream in Debian it would be much more effort and community contribution because of the guideliness and people not breaking their setups. Then I would setup it under http://bintray.com which just works out of the box and nobody needs to run their own server. Keep in mind that we maybe want a restic/packaging repository so also archlinux and other distros could benefit. Maybe also RPM specfile. I had a look at http://packager.io but the packages it emits are bloated.
Hi there,
As another Debian Developer with an eye put on restic, I can only urge you to reconsider your view of maintaining restic outside of Debian is much effort. It's basically the same effort, or in my experience, actually less effort.
Debian would give you visibility, mirrors, continous testing of upgrades, build reproducibilty, a gateway for inclusion in Ubuntu and so many other things I cannot list here.
You already have a Debian developer offering sponsorship. Here's another one.
I'd be glad to see your packaging effort in Debian officially. If it's not you, it's quite easy someone else will end up doing it sooner or later.
So, as far as I can see we have enough people who are interested in maintaining this for Debian. You can have a repository in the restic organisation if you like, e.g. github.com/restic/pkg-Debian, and have access to that repo. Are you interested in group-maintaining?
From my point of view (main author) It'd be awesome to have a group of people maintaining the packages for the different distributions, I'm glad to help :)
@fd0 a seperate repo would be handy. And I would like to kickstart it and with multiple people involved it would be nice as most people do this in their spare time (me) and quality will be better. Hopefully it will make it someday into the official debian infrastructure.
@xor-gate great, I've created https://github.com/restic/pkg-Debian and enabled push access for you. When you have someone else who should have write access, please let me know. PRs can be created, and I've enabled the issue tracker.
@xor-gate thanks for sharing your work! Sadly your approach with the "go get" inside the build process (https://github.com/xor-gate/restic/blob/debian/Makefile) isn't what's considered best practices for Debian packaging and has no chance in resulting in an _official_ Debian package (as in "within the Debian project"), especially since the official build infrastructure doesn't even allow network access during build time. Of course this shouldn't prevent anyone from providing Debian packages outside of Debian, so jftr && jfyi. :)
A few days ago I started to look at the Debian packaging of restic and this is what I have in my shell history what should be relevant as a starting point (disclaimer: that might not be 100% correct nor complete, consider it as a starting point where I just left off):
dh-make-golang github.com/restic/restic
dh-make-golang github.com/jessevdk/go-flags-dev
dh-make-golang github.com/juju/errors-dev
dh-make-golang github.com/restic/chunker
dh-make-golang github.com/juju/errors
dh-make-golang github.com/jessevdk/go-flags
dh-make-golang github.com/minio/minio-go
dh-make-golang github.com/juju/testing
dh-make-golang gopkg/check.v1 golang-gopkg-check.v1-dev
dh-make-golang github.com/juju/loggo
dh-make-golang github.com/juju/utils
JFTR: I'm a Debian Developer as well and would be happy to also sponsor any uploads (but I currently lack time to take care of the packaging and maintaining the packages properly myself).
@mika Yes I know, it was just a dirty fix to get it working. Can you point me to instructions how golang tags/commits could be used in the debian golang packaging process?
@xor-gate: check out dh-make-golang, it's supposed to make most of the work for you (PS: I'm mika, not mike, JFYI :))
Hello, guys. Any success? ;)
Hope this can help you a little bit
https://github.com/laher/goxc
Any news in here?
Is there a reliable source for a debian packe or is building your own the way to go?
Just to mention it here: An ITP has been filed to the debian bug tracker: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846176
Hi guys, sorry for my non-responsiveness as I'm the author if this "issue". I have not been using restic for a long time now (fairly because borgbackup is currently more stable, and has a same set of features). Therefor I have not invested time and effort to continue debian packaging. I was waiting to have some sort of stable restic release (which I use myself) to finish debian packaging and creating a repository.
If people don't want to maintain a debian repository (with own servers) it could be considered to use Bintray for repo/bandwidth hosting.
Again, I'm sorry for the silence on this topic and hopefully you understand.
Thanks for letting us know. I'm glad you found a backup solution that works for you :)
Woops, I had not seen this bug (and the packaging repository), I've started this from scratch, and sent an ITP yesterday (which resulted in a link to this bug :-)). I can share the result soon, and would be totally open to group maintenance.
I've packaged the two missing dependencies (golang-github-elithrar-simple-scrypt and golang-github-restic-chunker) and I'm looking for sponsors to get these in the archive before I can share the restic package, preferably in a working state :-).
Thanks @mika for sponsoring the packages :)
Update: golang-github-minio-minio-go seems too old for restic. At least the build fails with:
restic/backend/s3/s3.go:39: assignment count mismatch: 2 = 1
I'm trying to get 2.0.2 in Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846969 (I've also contacted the last uploader privately)
@legrostdg: Alternatively, you could try reverting 06b23edb for the debian package. Not nice, but may be a workaround if updating the minio package takes too long.
(See https://github.com/minio/minio-go/commit/56218997d01f6c8d77b91154079b57ccf8cf581a for the API change in minio. AFAIKT they only changed the way the result is reported back to the caller. But I didn't check if there are other incompatibilities between minio 2.0.1 and 2.0.2.)
I guess it won't be long to update minio, if I have no answer from the last uploader, I'll update the package myself and ask for a sponsor in the pkg-go team. What a weird numbering scheme, though! 2.0.1 not API compatible to 2.0.2... @jannic: Thanks for the suggestion!
What version number will the restic binary from the Debian package report? When compiled from source, the vendored dependencies are used, so the version number (which includes the Git commit and/or the contents of the VERSION file) exactly specifies which code has been compiled, including dependencies. How do we handle that for the Debian package? Use a suffix like 0.3.0-debian1?
I think it's important to decide early on, because once restic is in Debian, users will report bugs so we need to know which code they used...
@legrostdg I'm happy to sponsor the updated package, though never received a private mail about it if that was about me, ping me with the according URLs and I'd be happy to take care
@mika: no it's wasn't you I sent the email :-). Anyway the updated version is available there:
https://mentors.debian.net/debian/pool/main/g/golang-github-minio-minio-go/golang-github-minio-minio-go_2.0.2+dfsg-1.dsc
@fd0: the debian suffix is usually -$debian_version, so for example 0.3.0-1. The users should report bugs to the debian bts, which may be forwarded there (or not). Of course, a dependency of restic with a different version in debian that the ones in vendors may break the build, but it's the only way to get a DFSG compliant package... The package source will of course be available in a publicly accessible VCS.
@legrostdg, minio/minio-go is used by gitlab-ci-multi-runner already in the archive. Can you test build gitlab-ci-multi-runner with minio-go 2.0.2 to see if the build does not break with the new version?
Please also note the stretch freeze is looming on us, and if restic wants to have a chance of being in stretch it should be uploaded ASAP, as it'll have to pass the ftp-master manual checks being a new package, and then survive the 10 day transition period before it can land in Debian testing. The window closes on the 5th. If it's not there by then, it's out.
Thanks for the reminder. @legrostdg let me know if I can do anything to help here :)
@jmallach gitlab-ci-multi-runner builds with minio-go 2.0.2+dfsg-1 (the one on mentors). I can send the .build
I'm aware of the freeze, I'll do as fast as I can :-).
@fd0 for now, I'm not sure you could do much right now. It would help to only have the last releases (and not arbitrary git commits) of the dependencies in vendor/.
@legrostdg Could you please ensure that golang-github-elithrar-simple-scrypt-dev includes my fix in https://github.com/elithrar/simple-scrypt/commit/2325946f714c95de4a6088202c402fbdfa64163b? otherwise, restic is broken on 386 (see #676).
the golang-github-elithrar-simple-scrypt-dev now in debian sid is based on this (last) commit.
Ok, thanks for checking.
@legrostdg, has your package been sponsored already?
FYI: I've released restic 0.3.1 yesterday.
@jmallach I'm still waiting for golang-github-minio-minio-go-dev to be sponsored, but it should be done soon.
@fd0 I've imported restic 0.3.1
Right now, the build (with go run build.go and go run build.go --test) goes well, but the package creation fails at the end. I've asked pkg-go-maintainers about this, and I'm waiting for an anwser. It is probably an issue with dh-golang...
dpkg-buildpackage
-----------------
dpkg-buildpackage: info: source package restic
dpkg-buildpackage: info: source version 0.3.1-1
dpkg-buildpackage: info: source distribution UNRELEASED
dpkg-buildpackage: info: source changed by F茅lix Sipma <[email protected]>
dpkg-source --before-build restic-0.3.1
dpkg-buildpackage: info: host architecture amd64
fakeroot debian/rules clean
dh clean --buildsystem=golang --with=golang
dh_testdir -O--buildsystem=golang
dh_auto_clean -O--buildsystem=golang
dh_autoreconf_clean -O--buildsystem=golang
dh_clean -O--buildsystem=golang
dpkg-source -b restic-0.3.1
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building restic using existing ./restic_0.3.1.orig.tar.gz
dpkg-source: info: building restic in restic_0.3.1-1.debian.tar.xz
dpkg-source: info: building restic in restic_0.3.1-1.dsc
debian/rules build
dh build --buildsystem=golang --with=golang
dh_testdir -O--buildsystem=golang
dh_update_autotools_config -O--buildsystem=golang
dh_autoreconf -O--buildsystem=golang
dh_auto_configure -O--buildsystem=golang
debian/rules override_dh_auto_build
make[1]: Entering directory '/<<PKGBUILDDIR>>'
go run build.go
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
debian/rules override_dh_auto_test
make[1]: Entering directory '/<<PKGBUILDDIR>>'
go run build.go --test
ok restic 14.374s
ok restic/archiver 87.269s
ok restic/backend 2.500s
ok restic/backend/local 1.824s
ok restic/backend/mem 1.956s
ok restic/backend/rest 0.033s
ok restic/backend/s3 0.018s
ok restic/backend/sftp 0.004s
ok restic/backend/test 2.072s
ok restic/checker 8.874s
ok restic/crypto 0.814s
? restic/debug [no test files]
? restic/errors [no test files]
ok restic/filter 0.529s
? restic/fs [no test files]
ok restic/fuse 1.423s
ok restic/index 72.766s
? restic/list [no test files]
ok restic/location 0.005s
? restic/mock [no test files]
ok restic/pack 0.013s
ok restic/pipe 0.014s
ok restic/repository 6.332s
? restic/test [no test files]
ok restic/walk 1.685s
ok restic/worker 0.003s
ok cmds/restic 56.811s
ok cmds/restic-server 0.026s
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
fakeroot debian/rules binary
dh binary --buildsystem=golang --with=golang
dh_testroot -O--buildsystem=golang
dh_prep -O--buildsystem=golang
dh_auto_install -O--buildsystem=golang
mkdir -p /<<PKGBUILDDIR>>/debian/restic/usr/share/gocode/src/github.com/restic/restic
cp -r -T src/github.com/restic/restic /<<PKGBUILDDIR>>/debian/restic/usr/share/gocode/src/github.com/restic/restic
dh_install -O--buildsystem=golang
dh_installdocs -O--buildsystem=golang
dh_installchangelogs -O--buildsystem=golang
dh_perl -O--buildsystem=golang
dh_link -O--buildsystem=golang
dh_strip_nondeterminism -O--buildsystem=golang
dh_compress -O--buildsystem=golang
dh_fixperms -O--buildsystem=golang
dh_strip -O--buildsystem=golang
dh_makeshlibs -O--buildsystem=golang
dh_shlibdeps -O--buildsystem=golang
dh_installdeb -O--buildsystem=golang
dh_golang -O--buildsystem=golang
can't load package: package restic: cannot find package "restic" in any of:
/usr/lib/go-1.7/src/restic (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic (from $GOPATH)
can't load package: package restic/archiver: cannot find package "restic/archiver" in any of:
/usr/lib/go-1.7/src/restic/archiver (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/archiver (from $GOPATH)
can't load package: package restic/backend: cannot find package "restic/backend" in any of:
/usr/lib/go-1.7/src/restic/backend (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend (from $GOPATH)
can't load package: package restic/backend/local: cannot find package "restic/backend/local" in any of:
/usr/lib/go-1.7/src/restic/backend/local (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/local (from $GOPATH)
can't load package: package restic/backend/mem: cannot find package "restic/backend/mem" in any of:
/usr/lib/go-1.7/src/restic/backend/mem (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/mem (from $GOPATH)
can't load package: package restic/backend/rest: cannot find package "restic/backend/rest" in any of:
/usr/lib/go-1.7/src/restic/backend/rest (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/rest (from $GOPATH)
can't load package: package restic/backend/s3: cannot find package "restic/backend/s3" in any of:
/usr/lib/go-1.7/src/restic/backend/s3 (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/s3 (from $GOPATH)
can't load package: package restic/backend/sftp: cannot find package "restic/backend/sftp" in any of:
/usr/lib/go-1.7/src/restic/backend/sftp (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/backend/sftp (from $GOPATH)
can't load package: package restic/checker: cannot find package "restic/checker" in any of:
/usr/lib/go-1.7/src/restic/checker (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/checker (from $GOPATH)
can't load package: package restic/crypto: cannot find package "restic/crypto" in any of:
/usr/lib/go-1.7/src/restic/crypto (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/crypto (from $GOPATH)
can't load package: package restic/debug: cannot find package "restic/debug" in any of:
/usr/lib/go-1.7/src/restic/debug (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/debug (from $GOPATH)
can't load package: package restic/errors: cannot find package "restic/errors" in any of:
/usr/lib/go-1.7/src/restic/errors (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/errors (from $GOPATH)
can't load package: package restic/filter: cannot find package "restic/filter" in any of:
/usr/lib/go-1.7/src/restic/filter (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/filter (from $GOPATH)
can't load package: package restic/fs: cannot find package "restic/fs" in any of:
/usr/lib/go-1.7/src/restic/fs (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/fs (from $GOPATH)
can't load package: package restic/fuse: cannot find package "restic/fuse" in any of:
/usr/lib/go-1.7/src/restic/fuse (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/fuse (from $GOPATH)
can't load package: package restic/index: cannot find package "restic/index" in any of:
/usr/lib/go-1.7/src/restic/index (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/index (from $GOPATH)
can't load package: package restic/list: cannot find package "restic/list" in any of:
/usr/lib/go-1.7/src/restic/list (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/list (from $GOPATH)
can't load package: package restic/location: cannot find package "restic/location" in any of:
/usr/lib/go-1.7/src/restic/location (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/location (from $GOPATH)
can't load package: package restic/pack: cannot find package "restic/pack" in any of:
/usr/lib/go-1.7/src/restic/pack (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/pack (from $GOPATH)
can't load package: package restic/pipe: cannot find package "restic/pipe" in any of:
/usr/lib/go-1.7/src/restic/pipe (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/pipe (from $GOPATH)
can't load package: package restic/repository: cannot find package "restic/repository" in any of:
/usr/lib/go-1.7/src/restic/repository (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/repository (from $GOPATH)
can't load package: package restic/test: cannot find package "restic/test" in any of:
/usr/lib/go-1.7/src/restic/test (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/test (from $GOPATH)
can't load package: package restic/walk: cannot find package "restic/walk" in any of:
/usr/lib/go-1.7/src/restic/walk (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/walk (from $GOPATH)
can't load package: package restic/worker: cannot find package "restic/worker" in any of:
/usr/lib/go-1.7/src/restic/worker (from $GOROOT)
/<<PKGBUILDDIR>>/obj-x86_64-linux-gnu/src/restic/worker (from $GOPATH)
go list of dependencies failed with code 31488, at /usr/bin/dh_golang line 55.
debian/rules:8: recipe for target 'binary' failed
make: *** [binary] Error 123
dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
--------------------------------------------------------------------------------
Link to my messages to pkg-go-maintainers: https://lists.alioth.debian.org/pipermail/pkg-go-maintainers/Week-of-Mon-20161212/009670.html
@legrostdg this is #660 in effect. build.go uses tricks, mangles $GOPATH etc... and dh-golang probably expects a well laid out Go source to do its magic properly. Unfortunately, #660 was rejected...
The build.go program was meant for end-users, not necessarily for package maintainers. It is entirely possible to use the go tool for it:
$ GOPATH=$PWD:$GOPATH go build -ldflags "-s -w -X \"main.compiledAt=$(date '+%Y-%m-%d %H:%M:%S')\" -X \"main.version=$(cat VERSION)-debian1\"" -o restic cmds/restic
This sets the version fields in the binary accordingly. When the vendored dependencies should be used, the GOPATH given to go build must be slightly modified:
$ GOPATH=$PWD:$PWD/vendor go build -ldflags "-s -w -X \"main.compiledAt=$(date '+%Y-%m-%d %H:%M:%S')\" -X \"main.version=$(cat VERSION)-debian1\"" -o restic cmds/restic
This is basically what the build.go does.
The version command works then:
$ ./restic version
restic 0.3.1-debian1
compiled at 2016-12-14 18:53:38 with go1.7 on linux/amd64
Maybe @stapelberg can help? :)
I think the problem is on debian side (dh-golang, debian/rules, other?). go run build.go builds just fine.
You could try this hack:
ln -s ../src/restic vendor/restic
go install ./src/cmds/restic
I used to do this before, to be able to "go install" the binary. But, this will not add the tags @fd0 mentions few comments above, so it is just a hack.
@legrostdg does it help if I sponsor it ASAP?
@jmallach not so much... Once golang-github-minio-minio-go-dev is in sid, we'll still have the issue mentioned in my previous comment.
ok, I think I almost have a working package. I removed dh-golang, and used dh only.
@legrostdg but the faster golang-github-minio-minio-go-dev hits the NEW queue, hopefully faster it'll get cleared. Do you have a sponsor looking at this already, or should I have a look myself?
@jmallach See https://lists.debian.org/debian-mentors/2016/12/msg00154.html I'll contact you soon if I have no feedback from Gianfranco or Dmitry
@legrostdg ah, this package has already been uploaded, so we're all set. Is this the only missing dependency? https://ftp-master.debian.org/deferred.html
@jmallach oh, yes, I forgot: Gianfranco put it in deferred.
That's the only missing dependency. I've uploaded the restic package to mentors. (see RFS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848148)
I now need reviewers and sponsors for restic to enter in sid, if people want to have a look (see RFS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848148).
@jmallach still no answer from Gianfranco and Dmitry. Maybe you could upload to sid the latest version on mentors (the one in the deferred queue is not the latest revision)?
golang-github-minio-minio-go-dev 2.0.2 is in sid now. My package of restic still have no sponsor nor tester, so we'll probably have no restic in stretch, as the package would have to be sid before the 25th...
I鈥檓 replying to the RFS as we speak.
Did you see my comments on mentors.debian.net?
No. If you want to take this RFS, please assign it to you and reply on the bug.
That said, the comments themselves have merit; thanks for the review.
@legrostdg Unfortunately, restic 0.3.1 contains a bug which makes it panic whenever an error occurs while reading files during backup (details #699), so I've released 0.3.2 a few minutes ago, which includes nothing except the bugfix. Could you please upload that release? It would be very valuable to get 0.3.2 into the next stable, instead of 0.3.1. I'm sorry about the timing.
And regarding to the comment on the package: restic is not intended to be used as a library (at least not for now), so from my point of view it's not necessary to install the source code anywhere. When you have a new package ready I can also offer to have a look. After all, I was a Debian Developer once ;)
Further review comments from my side:
build.go as you do in 0001-replace-vendor-src-by-usr-share-gocode-src.patch is a bad idea: During build, the program creates a new GOPATH constructed from the restic source code and the vendor directory in a temporary directory. After the patch is applied, all the source code available in /usr/share/gocode/src is copied to the temp dir, that's unnecessary and slows down the build.0002-Debianize-doc-Manual.md.patch. I must say that I don't like this change at all. There's no reason to hide the installation instructions, and you also removed quite a lot of "getting started" text which shows the user how to get help for restic commands. If you do not like the section about Debian, I'm sure we can work something out.If you need help getting the binary to build with go build, please reach out, I'm glad to assist.
Here's a sample debian/rules: https://gist.github.com/fd0/c3ec442e3b77be0f959425469f6b7583
Please avoid including build dates and the like in binaries. They make it impossible to reproduce the build and obtain a byte-for-byte identical package. https://reproducible-builds.org/docs/timestamps/
Hi @stapelberg! I propose that when @legrostdg addresses the GPL-3 thing in debian/* (I also noticed, seems I forgot to add that one), the Manual.md thing, the install code bit and add the pristiner-tar bit, the first of us two who gets to re-review does the upload.
Switching to pkg-go can happen after restic has transitioned once to testing, and before February 5th. The less steps that can delay the upload, the better. @legrostdg, let us know if you can work on these in the short term.
I replied to @stapelberg concerns, on the debian bug report.
I also imported 0.3.2.
Concerning 0002-Debianize-doc-Manual.md.patch I did remove the installation paragraph because these manual installation instructions are not suitable for Debian, it is usual to remove these from Debian packages. I did also remove the end of the paragraph with the basic usage instructions because I felt like this was just the output of --help. I think this should probably in a new paragraph but in the meantime, I just renamed the paragraph "basic usage" and restored this part of the Manual.md.
Concerning 0001-replace-vendor-src-by-usr-share-gocode-src.patch, you are aware that the vendor/src dir has to be removed from the package, right? I added this patch because go run build.go failed if vendor/src was not existent. I'm of course open to something else. Do you think it would be better to remove everything which mentions vendor?
I just uploaded a new package to mentors. Thanks for your reviews!
@legrostdg For building, I'd suggest using go build with GOPATH set, see here: https://gist.github.com/fd0/c3ec442e3b77be0f959425469f6b7583
You can also leave the main.compiledAt variable unset, this will get you reproduceable builds, I'll remove the timestamp from restic shortly (as suggested by @jmallach).
Thanks, I've updated the package with your debian/rules, and removed my patch for modifying vendor in build.go.
Looks good from my side!
Same here!
I have signed & uploaded this. It will hopefully appear soon in the NEW queue. Good work F茅lix!
Thanks! I hope it will reach unstable within 5 days, so that restic can be in stretch. I would have preferred to get a feedback from @stapelberg but I guess you're right, we can fix the package to use dh-golang and set the maintainer to pkg-go later.
Yeah, I wanted to get the clock ticking, and the package is more than good enough for the archive already. I am strongly aligned with @stapelberg regarding debian/*'s GPL+3. It is becoming more and more standard practice that the packaging just follows the upstream license, or at least it is dual licensed, unless the upstream license is non-free, of course.
Regarding the manual.md patch, I also don't see the point in patching it, but I think it would be less of an issue if you could add a manpage for restic that can be even contributed upstream. Starting with what help2man outputs is a good start and gets rid of much of the grunt work.
I also noticed the source is in section utils, while the binary is in section misc. I'd settle for utils, or admin, or whatever, but not misc.
Finally, for the nitpicker in me, use https on the "Format" URL in d/copyright. :)
restic_0.3.2-2_amd64.changes ACCEPTED into unstable, unstable
The hardest is now over. Congrats @legrostdg and @fd0! Let's see if RC bugs leave us alone and we make it in testing before the 5th!
Awesome!
And to probably close this issue,
https://tracker.debian.org/news/829517
restic 0.3.2-2 MIGRATED to testing
@fd0, it'd be nice if a new release could be made during the next week or so, that includes the latest fixes, and in particular https://github.com/restic/restic/commit/e1fc455079f37b27e162d4fcab666da0caa5bc6e. Last restic updates can go into stretch in if uploaded around Jan 22th or so.
Cool, thanks for letting us know. I'll do a release next week, probably 0.3.3 (no larger changes, just bugfixes).
Done: restic 0.3.3
I've announced the debian package in the blog, together with the new release: https://restic.github.io/blog/2017-01-08/restic-0.3.3-released
I've seen that the code for rest-server has been moved to another directory. Unfortunately it won't be possible to have another package enter stretch.
What can be done is to add a patch to add rest-server back, or to have stretch without this functionality. What do you think?
The REST server is a separate package now. And it is not built automatically by build.go, so it technically wasn't in the package before. It is also not necessary for running restic, only if you want to use a different transport than sftp or s3.
I'd leave it out for now.
OK! I've pushed the updated package to mentors.
Hey, restic 0.4.0 was released recently and I think it should be uploaded to Debian ASAP. @legrostdg can you please have a look?
I also noticed that 0.3.3 wasn't uploaded either. Is there anything I can do to speed up uploading new versions?
I've seen the recent releases, but Debian has entered full freeze, so there won't be any non rc fixing upload to unstable, before stretch is released.
You could upload to experimental in the meantime.
Ah, that explains it. Hm, bummer.
BTW, 0.3.3 was uploaded and entered testing before full freeze:
https://tracker.debian.org/pkg/restic
Thanks for the correction, I just looked at the "news" box.
Is there a PPA I can use to install the latest version of restic on Ubuntu 16.04LTS ?
Not answering your question directly, but in case there is no PPA: the Debian package should be installable on Ubuntu without any issues. It only depends on libc6.
Most helpful comment
Is there a PPA I can use to install the latest version of restic on Ubuntu 16.04LTS ?