Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add gitlab and gitlab-shell. #4796

Closed
wants to merge 13 commits into from
Closed

Add gitlab and gitlab-shell. #4796

wants to merge 13 commits into from

Conversation

teh
Copy link
Contributor

@teh teh commented Nov 2, 2014

I had to make several adjustments to make it work with nixos:

  • Replace relative config file lookups with ENV variable.
  • Modify gitlab-shell to not clear then environment when running
    pre-receive.
  • Modify gitlab-shell to write some environment variables into
    the .authorized_keys file to make sure gitlab-shell reads the
    correct config file.

The current version requires the user to install the gitlab-shell
package into the systemPackages environment because
/run/current-system/sw/bin/gitlab-shell is hard-coded in the
.authorized_keys file.

@teh
Copy link
Contributor Author

teh commented Nov 2, 2014

This is much messier than I'd like it to be. Looking forward to learning how to improve from an experienced nix person :)

@domenkozar
Copy link
Member

Closes #2745

@offlinehacker
Copy link
Contributor

Why is gemfile.lock needed?

config = mkIf cfg.enable {

assertions = [
{ assertion = cfg.databasePassword != "";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could enable database by default using services.postgresql.enable = mkDefault true;. Users can still disable by setting it to false.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

@teh
Copy link
Contributor Author

teh commented Nov 3, 2014

For Gemfile.lock - I don't know I copied that from redmine. Checking in the gemfile seems to be the normal thing to do in the ruby world (e.g. http://stackoverflow.com/questions/4151495/should-gemfile-lock-be-included-in-gitignore)

@teh
Copy link
Contributor Author

teh commented Nov 3, 2014

(rebased against master)

@teh
Copy link
Contributor Author

teh commented Nov 8, 2014

I'm logging unicorn output to the syslog now in a really ugly way after wasting hours on trying to add a syslogger module: I just dumped a syslogger class directly in the unicorn config.

@offlinehacker
Copy link
Contributor

Looks good, are you ok if we merge this, or are you planning to add/change something else?

@teh
Copy link
Contributor Author

teh commented Nov 9, 2014

Patches: Very unlikely upstream would be interested. Running a binary from the git checkout (where all the relative imports work) seems to be the preferred mode of operation in ruby land.

I'd like to spend 2-3 more days cleaning it up a bit if that's OK?

@offlinehacker
Copy link
Contributor

yup, no problem, let me know and i review again and merge this.

@7c6f434c 7c6f434c added the 2.status: work-in-progress This PR isn't done label Nov 16, 2014
@gavinrogers
Copy link

@teh thanks for this. any updates? how did the cleaning up go? can i help? I've gone through similar pain myself (writing puppet module to install the omnibus versions of gitlab) so I know it might not ever be super clean :(

@teh
Copy link
Contributor Author

teh commented Nov 27, 2014

@gavinrogers - I'll do a rebase tonight after work and we can merge after.

@teh
Copy link
Contributor Author

teh commented Nov 29, 2014

Rebased but haven't tested latest rebase yet.

@offlinehacker
Copy link
Contributor

Here's patched and tested version https://github.com/offlinehacker/nixpkgs/tree/teh-gitlab, i've also added basic nixos test.


unicornConfig = builtins.readFile ./defaultUnicornConfig.rb;

gitlab-runner = pkgs.stdenv.mkDerivation rec {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where's this used and what was the idea behind?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gitlab has a few management commands that have to be run from the command line, e.g.

sudo -u gitlab -H bundle exec rake gitlab:app:status RAILS_ENV=production

gitlab-runner is a way to run bundle code with the correct environment.

@offlinehacker
Copy link
Contributor

@teh Besides these minor bugs/questions, great job, you've finished the work that many have failed before, it's not perfect, but currently good enough :) I would really like to get this into next nixos release, so with some help i can also fix and merge it myself. Currently patched version with simple nixos test is here https://github.com/offlinehacker/nixpkgs/tree/teh-gitlab

@teh
Copy link
Contributor Author

teh commented Dec 2, 2014

I've tested this on a pristine server and it worked. I'm giving it one more spin right now.

Generally I'm not sure this is ready for inclusion into a "stable" system. If we ship with the next release I'd prefer there to be a big "experimental" warning somewhere!

teh added 11 commits December 2, 2014 19:06
I tried various ways of adding a syslog package but the bundler would
not pick them up. Please fix in a better way if possible.
This is useful to run e.g. backups etc. with the correct
environment set up.
Fix sendmail location in the same patch.
This is required because gitlab's push depends on a .ssh/authorized_keys shell
override which needs to be a hardcoded-path.

If we use the nix path and ever update the gitlab-shell binary then all
existing authorized_keys entries will become invalid, or worse, call an old
gitlab-shell with a potential security bug.
gitlab-shell was failing silently on repository creation because
it didn't have permissions. It's unclear to me how this was working
until now...
@teh
Copy link
Contributor Author

teh commented Dec 2, 2014

Rebased and fixed one more issue (permissions on clean server were wrong).

@teh
Copy link
Contributor Author

teh commented Dec 2, 2014

@offlinehacker I'm away for a few days, let me know if I can do anything else!

@offlinehacker
Copy link
Contributor

It's merged in 59995e1 and 13e5878. I squashed commits and summary of descriptions, i needed to fix a few things and also added a simple test(that's why second commit). I'm closing this as it's merged in.

@teh thanks again!

@lucabrunox
Copy link
Contributor

Fails to build on i686: http://hydra.nixos.org/build/17868922

@domenkozar
Copy link
Member

@teh we also need to add 32bit version of v8, should that be just manually added or could we modify the automation?

@teh
Copy link
Contributor Author

teh commented Dec 13, 2014

Hm that's annoying. First I hadn't noticed that we pulled in a binary dependency specific to linux, but there also isn't a 32bit build: https://rubygems.org/gems/libv8/versions

Maybe we can disable gitlab if system is i686?

@domenkozar
Copy link
Member

Maybe we could use the version we have packaged ourselves?

On Sat, Dec 13, 2014 at 3:59 PM, teh [email protected] wrote:

Hm that's annoying. First I hadn't noticed that we pulled in a binary
dependency specific to linux, but there also isn't a 32bit build:
https://rubygems.org/gems/libv8/versions

Maybe we can disable gitlab if system is i686?


Reply to this email directly or view it on GitHub
#4796 (comment).

@teh
Copy link
Contributor Author

teh commented Dec 13, 2014

Looks like it's therubyracer which needs libv8.

https://github.com/cowboyd/libv8/tree/3.11#bring-your-own-v8 says we could use this:

gem install libv8 -- --with-system-v8

I'm out for today bad timing :( but will check when back tomorrow.

@offlinehacker
Copy link
Contributor

I will test this now, thanks!

@offlinehacker
Copy link
Contributor

Here, fix: #5323

environment.GITLAB_SHELL_SECRET_PATH = "${cfg.stateDir}/config/gitlab_shell_secret";
environment.GITLAB_HOST = "${cfg.host}";
environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}";
environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really, couldn't we load this value from a static file stored in /etc ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's been a few weeks so my memory is already hazy but I think I couldn't get bundler to read the whole rails config directory from anywhere else other than the execution point (i.e. in a read-only nix-store path).

I'd be super happy if someone knowledgeable would make this cleaner!

I packaged sentry for our website and it's just so much nicer because it takes single config file on execution. None of the relative importing that rails seems to do: https://github.com/WeAreWizards/website/tree/master/sentry

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@teh do you have any idea why gitlab startup is so super slow?
On Dec 16, 2014 11:57 AM, "teh" [email protected] wrote:

In nixos/modules/services/misc/gitlab.nix
#4796 (diff):

  •  wantedBy = [ "multi-user.target" ];
    
  •  environment.HOME = "${cfg.stateDir}/home";
    
  •  environment.UNICORN_PATH = "${cfg.stateDir}/";
    
  •  environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
    
  •  environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
    
  •  environment.GITLAB_SATELLITES_PATH = "${cfg.stateDir}/satellites";
    
  •  environment.GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
    
  •  environment.GITLAB_REPOSITORIES_PATH = "${cfg.stateDir}/repositories";
    
  •  environment.GITLAB_SHELL_HOOKS_PATH = "${cfg.stateDir}/shell/hooks";
    
  •  environment.BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
    
  •  environment.GITLAB_EMAIL_FROM = "${cfg.emailFrom}";
    
  •  environment.GITLAB_SHELL_CONFIG_PATH = "${cfg.stateDir}/shell/config.yml";
    
  •  environment.GITLAB_SHELL_SECRET_PATH = "${cfg.stateDir}/config/gitlab_shell_secret";
    
  •  environment.GITLAB_HOST = "${cfg.host}";
    
  •  environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}";
    
  •  environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}";
    

It's been a few weeks so my memory is already hazy but I think I couldn't
get bundler to read the whole rails config directory from anywhere else
other than the execution point (i.e. in a read-only nix-store path).

I'd be super happy if someone knowledgeable would make this cleaner!

I packaged sentry for our website and it's just so much nicer because it
takes single config file on execution. None of the relative importing that
rails seems to do:
https://github.com/WeAreWizards/website/tree/master/sentry


Reply to this email directly or view it on GitHub
https://github.com/NixOS/nixpkgs/pull/4796/files#r21890128.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@offlinehacker can you quantify "super slow"? E.g. we had a digital-ocean instance with gitlab and it took ~30 seconds to start on there. I think that counts as "normal" for gitlab.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@teh 5-10 minutes in tests
On Dec 16, 2014 12:38 PM, "teh" [email protected] wrote:

In nixos/modules/services/misc/gitlab.nix
#4796 (diff):

  •  wantedBy = [ "multi-user.target" ];
    
  •  environment.HOME = "${cfg.stateDir}/home";
    
  •  environment.UNICORN_PATH = "${cfg.stateDir}/";
    
  •  environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
    
  •  environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
    
  •  environment.GITLAB_SATELLITES_PATH = "${cfg.stateDir}/satellites";
    
  •  environment.GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
    
  •  environment.GITLAB_REPOSITORIES_PATH = "${cfg.stateDir}/repositories";
    
  •  environment.GITLAB_SHELL_HOOKS_PATH = "${cfg.stateDir}/shell/hooks";
    
  •  environment.BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
    
  •  environment.GITLAB_EMAIL_FROM = "${cfg.emailFrom}";
    
  •  environment.GITLAB_SHELL_CONFIG_PATH = "${cfg.stateDir}/shell/config.yml";
    
  •  environment.GITLAB_SHELL_SECRET_PATH = "${cfg.stateDir}/config/gitlab_shell_secret";
    
  •  environment.GITLAB_HOST = "${cfg.host}";
    
  •  environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}";
    
  •  environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}";
    

@offlinehacker https://github.com/offlinehacker can you quantify "super
slow"? E.g. we had a digital-ocean instance with gitlab and it took ~30
seconds to start on there. I think that counts as "normal" for gitlab.


Reply to this email directly or view it on GitHub
https://github.com/NixOS/nixpkgs/pull/4796/files#r21892023.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apologies, I don't know. Is there a lot of contention on the test machine? Can you strace to figure out where it gets stuck if anywhere? perf may also hint at issues.

We've decided not to use gitlab in the end because it feels way too fragile :(

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@teh, yeah, it's kinda fragile, but still, thanks for the service. Can i
ask what are you using instead?

On Tue, Dec 16, 2014 at 3:46 PM, teh [email protected] wrote:

In nixos/modules/services/misc/gitlab.nix
#4796 (diff):

  •  wantedBy = [ "multi-user.target" ];
    
  •  environment.HOME = "${cfg.stateDir}/home";
    
  •  environment.UNICORN_PATH = "${cfg.stateDir}/";
    
  •  environment.GITLAB_PATH = "${pkgs.gitlab}/share/gitlab/";
    
  •  environment.GITLAB_APPLICATION_LOG_PATH = "${cfg.stateDir}/log/application.log";
    
  •  environment.GITLAB_SATELLITES_PATH = "${cfg.stateDir}/satellites";
    
  •  environment.GITLAB_SHELL_PATH = "${pkgs.gitlab-shell}";
    
  •  environment.GITLAB_REPOSITORIES_PATH = "${cfg.stateDir}/repositories";
    
  •  environment.GITLAB_SHELL_HOOKS_PATH = "${cfg.stateDir}/shell/hooks";
    
  •  environment.BUNDLE_GEMFILE = "${pkgs.gitlab}/share/gitlab/Gemfile";
    
  •  environment.GITLAB_EMAIL_FROM = "${cfg.emailFrom}";
    
  •  environment.GITLAB_SHELL_CONFIG_PATH = "${cfg.stateDir}/shell/config.yml";
    
  •  environment.GITLAB_SHELL_SECRET_PATH = "${cfg.stateDir}/config/gitlab_shell_secret";
    
  •  environment.GITLAB_HOST = "${cfg.host}";
    
  •  environment.GITLAB_DATABASE_HOST = "${cfg.databaseHost}";
    
  •  environment.GITLAB_DATABASE_PASSWORD = "${cfg.databasePassword}";
    

Apologies, I don't know. Is there a lot of contention on the test machine?
Can you strace to figure out where it gets stuck if anywhere? perf may also
hint at issues.

We've decided not to use gitlab in the end because it feels way too
fragile :(


Reply to this email directly or view it on GitHub
https://github.com/NixOS/nixpkgs/pull/4796/files#r21901594.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

mQENBFEY1PEBCADPOfERF2wo4qeoq9L1m2z4pKfWqNd4B6BsoFUWPNd7BXmY+9JG
jJddSkmYobWec7XjAFTBL0Xbttt+rK9SIED2dCOmU1FYMQElhGlM3PNA3kaiQFeV
ijgH318GCfZzDd0dWa5TN/IshVeWXwgngsIEmZTVf1VSeb3eO3B8Fxe3zsSLUq0b
71MmU5eLVP9pMkm5V5BTYp+lV70FIekKygkKq+uTDo1csWUatbs4Qvgv37Bymy2t
oTwOBXGoinQk5N/6asR1jWs3vKv0L0SruoZy/kEG/jXb4l2OZUP85EVMganYKouE
OchVmcmhBdWV+t3HK4r2ATfyEcMRzvzSflA1ABEBAAG0Jkpha2EgSHVkb2tsaW4g
PGpha2FodWRva2xpbkBnbWFpbC5jb20+iQE+BBMBAgAoBQJRGNTxAhsDBQkB4TOA
BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRD6Zxi5hZclKnXNCACLOKa8abQp
eTWv9SXUwC7LVM5pP2mXcgn+Ipqr6YWBdLx4Iij0YlvUok9VeKvwTpUlT+cx++o3
wCM3AYrUyJE+zrtw49lInUmutz9seqJLU895oq+D+UuGoORrLBpEZrYR5f83uUmQ
E3Z1ZmWrNGXYtITWDtVZD/KauMF2nkPcmy/XaYXhd4WHD81DGNlKtGAHig6A3Phc
8Mr0A4yLDeRQJm8lCFEsxMJUNTupgY+ybbsMfVGx1gQvvGOTioV8CLCoRchUCCcm
YPArFg40KzIDSNjwdo9EVZDnlPx1hbOppfQydxP+JVnZsqoYmVY4UhIWi/NfOl3V
UMjl338INW1zuQENBFEY1PEBCADRSIfelOMjaTH7IfpMFFUc5Gys//njFnW9QAUg
wyfs2AFxUp6vKQ7nxXQiJXVhKTwe9iqo+oGxaHp4AeTjC7vXsfMuF5g5lfttbAo3
YEobEe6OG5so41nbwan6SyeIIQ2AmQqJBw8TKKMSec2qUN0Pw7iZRs0o9uJM/obG
DPsAsMOQgNLxJyMCP7X2jBtDXxkMFVHMmk50Tl3h3Fi9qWuNxgTXjs0tUvKkXiu2
Pco952jnm7HpCIKBek2pqR/UJXXb5qxy5G6Lc0qaMWZ5GKnSMTJmTY6Xl44EnaLK
zh0rqgF9qpoWck470ZbiGASMtB008hy2l0cyxUfvDaS3tY4hABEBAAGJASUEGAEC
AA8FAlEY1PECGwwFCQHhM4AACgkQ+mcYuYWXJSoT6AgAkvzvC0EGmeCR3cn9O3Gf
yG00Kqk9/1gJvlphis7AAce8iUgU+4xd94Vp0u8rghpdy88xKN5lF1W2YZQmmBaf
AVe6b7TOg6kxc3GKkVsWDxNyQKkpB46BwefIGaSljH7502X9aEWosrqWyJJNYCtt
QDit4BysX0Ww3Ka5Rx6ZFhC9ybPKoW2i8JwpyBaXDt7R2k+PC/ClBf9qzL+sb2es
zh/zCMVKNdm8KUITHU/5lgn2qZpUFZwiASPCMGGFP9u8g6UKeUTYTPD+GWaHIW63
RAgNIAffxx0M1r3P/2ipkAdI3NX/1iBKDQNG8Odsf+BswFKrNCnyUDdLPvJAhODS
gw==
=tmrm
-----END PGP PUBLIC KEY BLOCK-----

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're on github for now. We're also going to have a look at gogs (https://github.com/gogits/gogs) at some point.

For gogs I couldn't find anything on how they're updating their database on a version bump so I need to check the code. (for sentry I just run migrate before each start which takes a few seconds but that's fine).

mweinelt added a commit to mweinelt/nixpkgs that referenced this pull request Mar 8, 2020
Version 1.1.11 (2020-03-08)

Compatibility notes:

    When upgrading from borg 1.0.x to 1.1.x, please note:
        read all the compatibility notes for 1.1.0*, starting from 1.1.0b1.
        borg upgrade: you do not need to and you also should not run it.
        borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time.
        your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the --files-cache mode change (and happens every time you change mode). You can avoid the one-time slowdown by using the pre-1.1.0rc4-compatible mode (but that is less safe for detecting changed files than the default). See the --files-cache docs for details.
    1.1.11 removes WSL autodetection (Windows 10 Subsystem for Linux). If WSL still has a problem with sync_file_range, you need to set BORG_WORKAROUNDS=basesyncfile in the borg process environment to work around the WSL issue.

Fixes:

    fixed potential index corruption / data loss issue due to bug in hashindex_set, NixOS#4829 Please read and follow the more detailled notes close to the top of this document.
    upgrade bundled xxhash to 0.7.3, NixOS#4891 0.7.2 is the minimum requirement for correct operations on ARMv6 in non-fixup mode, where unaligned memory accesses cause bus errors. 0.7.3 adds some speedups and libxxhash 0.7.3 even has a pkg-config file now.
    upgrade bundled lz4 to 1.9.2
    upgrade bundled zstd to 1.4.4
    fix crash when upgrading erroneous hints file, NixOS#4922
    extract:
        fix KeyError for "partial" extraction, NixOS#4607
        fix "partial" extract for hardlinked contentless file types, NixOS#4725
        fix preloading for old (0.xx) remote servers, NixOS#4652
        fix confusing output of borg extract --list --strip-components, NixOS#4934
    delete: after double-force delete, warn about necessary repair, NixOS#4704
    create: give invalid repo error msg if repo config not found, NixOS#4411
    mount: fix FUSE mount missing st_birthtime, NixOS#4763 NixOS#4767
    check: do not stumble over invalid item key, NixOS#4845
    info: if the archive doesn't exist, print a pretty message, NixOS#4793
    SecurityManager.known(): check all files, NixOS#4614
    Repository.open: use stat() to check for repo dir, NixOS#4695
    Repository.check_can_create_repository: use stat() to check, NixOS#4695
    fix invalid archive error message
    fix optional/non-optional location arg, NixOS#4541
    commit-time free space calc: ignore bad compact map entries, NixOS#4796
    ignore EACCES (errno 13) when hardlinking the old config, NixOS#4730
    --prefix / -P: fix processing, avoid argparse issue, NixOS#4769

New features:

    enable placeholder usage in all extra archive arguments
    new BORG_WORKAROUNDS mechanism, basesyncfile, NixOS#4710
    recreate: support --timestamp option, NixOS#4745
    support platforms without os.link (e.g. Android with Termux), NixOS#4901 if we don't have os.link, we just extract another copy instead of making a hardlink.
    support linux platforms without sync_file_range (e.g. Android 7 with Termux), NixOS#4905

Other:

    ignore --stats when given with --dry-run, but continue, NixOS#4373
    add some ProgressIndicator msgids to code / fix docs, NixOS#4935
    elaborate on "Calculating size" message
    argparser: always use REPOSITORY in metavar, also use more consistent help phrasing.
    check: improve error output for matching index size, see NixOS#4829
    docs:
        changelog: add advisory about hashindex_set bug NixOS#4829
        better describe BORG_SECURITY_DIR, BORG_CACHE_DIR, NixOS#4919
        infos about cache security assumptions, NixOS#4900
        add FAQ describing difference between a local repo vs. repo on a server.
        document how to test exclusion patterns without performing an actual backup
        timestamps in the files cache are now usually ctime, NixOS#4583
        fix bad reference to borg compact (does not exist in 1.1), NixOS#4660
        create: borg 1.1 is not future any more
        extract: document limitation "needs empty destination", NixOS#4598
        how to supply a passphrase, use crypto devices, NixOS#4549
        fix osxfuse github link in installation docs
        add example of exclude-norecurse rule in help patterns
        update macOS Brew link
        add note about software for automating backups, NixOS#4581
        AUTHORS: mention copyright+license for bundled msgpack
        fix various code blocks in the docs, NixOS#4708
        updated docs to cover use of temp directory on remote, NixOS#4545
        add restore docs, NixOS#4670
        add a pull backup / push restore how-to, NixOS#1552
        add FAQ how to retain original paths, NixOS#4532
        explain difference between --exclude and --pattern, NixOS#4118
        add FAQs for SSH connection issues, NixOS#3866
        improve password FAQ, NixOS#4591
        reiterate that 'file cache names are absolute' in FAQ
    tests:
        cope with ANY error when importing pytest into borg.testsuite, NixOS#4652
        fix broken test that relied on improper zlib assumptions
        test_fuse: filter out selinux xattrs, NixOS#4574
    travis / vagrant:
        misc python versions removed / changed (due to openssl 1.1 compatibility) or added (3.7 and 3.8, for better borg compatibility testing)
        binary building is on python 3.5.9 now
    vagrant:
        add new boxes: ubuntu 18.04 and 20.04, debian 10
        update boxes: openindiana, darwin, netbsd
        remove old boxes: centos 6
        darwin: updated osxfuse to 3.10.4
        use debian/ubuntu pip/virtualenv packages
        rather use python 3.6.2 than 3.6.0, fixes coverage/sqlite3 issue
        use requirements.d/development.lock.txt to avoid compat issues
    travis:
        darwin: backport some install code / order from master
        remove deprecated keyword "sudo" from travis config
        allow osx builds to fail, NixOS#4955 this is due to travis-ci frequently being so slow that the OS X builds just fail because they exceed 50 minutes and get killed by travis.
mweinelt added a commit to mweinelt/nixpkgs that referenced this pull request Mar 8, 2020
Version 1.1.11 (2020-03-08)

Compatibility notes:

    When upgrading from borg 1.0.x to 1.1.x, please note:
        read all the compatibility notes for 1.1.0*, starting from 1.1.0b1.
        borg upgrade: you do not need to and you also should not run it.
        borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time.
        your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the --files-cache mode change (and happens every time you change mode). You can avoid the one-time slowdown by using the pre-1.1.0rc4-compatible mode (but that is less safe for detecting changed files than the default). See the --files-cache docs for details.
    1.1.11 removes WSL autodetection (Windows 10 Subsystem for Linux). If WSL still has a problem with sync_file_range, you need to set BORG_WORKAROUNDS=basesyncfile in the borg process environment to work around the WSL issue.

Fixes:

    fixed potential index corruption / data loss issue due to bug in hashindex_set, NixOS#4829 Please read and follow the more detailled notes close to the top of this document.
    upgrade bundled xxhash to 0.7.3, NixOS#4891 0.7.2 is the minimum requirement for correct operations on ARMv6 in non-fixup mode, where unaligned memory accesses cause bus errors. 0.7.3 adds some speedups and libxxhash 0.7.3 even has a pkg-config file now.
    upgrade bundled lz4 to 1.9.2
    upgrade bundled zstd to 1.4.4
    fix crash when upgrading erroneous hints file, NixOS#4922
    extract:
        fix KeyError for "partial" extraction, NixOS#4607
        fix "partial" extract for hardlinked contentless file types, NixOS#4725
        fix preloading for old (0.xx) remote servers, NixOS#4652
        fix confusing output of borg extract --list --strip-components, NixOS#4934
    delete: after double-force delete, warn about necessary repair, NixOS#4704
    create: give invalid repo error msg if repo config not found, NixOS#4411
    mount: fix FUSE mount missing st_birthtime, NixOS#4763 NixOS#4767
    check: do not stumble over invalid item key, NixOS#4845
    info: if the archive doesn't exist, print a pretty message, NixOS#4793
    SecurityManager.known(): check all files, NixOS#4614
    Repository.open: use stat() to check for repo dir, NixOS#4695
    Repository.check_can_create_repository: use stat() to check, NixOS#4695
    fix invalid archive error message
    fix optional/non-optional location arg, NixOS#4541
    commit-time free space calc: ignore bad compact map entries, NixOS#4796
    ignore EACCES (errno 13) when hardlinking the old config, NixOS#4730
    --prefix / -P: fix processing, avoid argparse issue, NixOS#4769

New features:

    enable placeholder usage in all extra archive arguments
    new BORG_WORKAROUNDS mechanism, basesyncfile, NixOS#4710
    recreate: support --timestamp option, NixOS#4745
    support platforms without os.link (e.g. Android with Termux), NixOS#4901 if we don't have os.link, we just extract another copy instead of making a hardlink.
    support linux platforms without sync_file_range (e.g. Android 7 with Termux), NixOS#4905

Other:

    ignore --stats when given with --dry-run, but continue, NixOS#4373
    add some ProgressIndicator msgids to code / fix docs, NixOS#4935
    elaborate on "Calculating size" message
    argparser: always use REPOSITORY in metavar, also use more consistent help phrasing.
    check: improve error output for matching index size, see NixOS#4829
    docs:
        changelog: add advisory about hashindex_set bug NixOS#4829
        better describe BORG_SECURITY_DIR, BORG_CACHE_DIR, NixOS#4919
        infos about cache security assumptions, NixOS#4900
        add FAQ describing difference between a local repo vs. repo on a server.
        document how to test exclusion patterns without performing an actual backup
        timestamps in the files cache are now usually ctime, NixOS#4583
        fix bad reference to borg compact (does not exist in 1.1), NixOS#4660
        create: borg 1.1 is not future any more
        extract: document limitation "needs empty destination", NixOS#4598
        how to supply a passphrase, use crypto devices, NixOS#4549
        fix osxfuse github link in installation docs
        add example of exclude-norecurse rule in help patterns
        update macOS Brew link
        add note about software for automating backups, NixOS#4581
        AUTHORS: mention copyright+license for bundled msgpack
        fix various code blocks in the docs, NixOS#4708
        updated docs to cover use of temp directory on remote, NixOS#4545
        add restore docs, NixOS#4670
        add a pull backup / push restore how-to, NixOS#1552
        add FAQ how to retain original paths, NixOS#4532
        explain difference between --exclude and --pattern, NixOS#4118
        add FAQs for SSH connection issues, NixOS#3866
        improve password FAQ, NixOS#4591
        reiterate that 'file cache names are absolute' in FAQ
    tests:
        cope with ANY error when importing pytest into borg.testsuite, NixOS#4652
        fix broken test that relied on improper zlib assumptions
        test_fuse: filter out selinux xattrs, NixOS#4574
    travis / vagrant:
        misc python versions removed / changed (due to openssl 1.1 compatibility) or added (3.7 and 3.8, for better borg compatibility testing)
        binary building is on python 3.5.9 now
    vagrant:
        add new boxes: ubuntu 18.04 and 20.04, debian 10
        update boxes: openindiana, darwin, netbsd
        remove old boxes: centos 6
        darwin: updated osxfuse to 3.10.4
        use debian/ubuntu pip/virtualenv packages
        rather use python 3.6.2 than 3.6.0, fixes coverage/sqlite3 issue
        use requirements.d/development.lock.txt to avoid compat issues
    travis:
        darwin: backport some install code / order from master
        remove deprecated keyword "sudo" from travis config
        allow osx builds to fail, NixOS#4955 this is due to travis-ci frequently being so slow that the OS X builds just fail because they exceed 50 minutes and get killed by travis.

(cherry picked from commit dbff9b5)
mweinelt added a commit to mweinelt/nixpkgs that referenced this pull request Mar 8, 2020
Version 1.1.11 (2020-03-08)

Compatibility notes:

    When upgrading from borg 1.0.x to 1.1.x, please note:
        read all the compatibility notes for 1.1.0*, starting from 1.1.0b1.
        borg upgrade: you do not need to and you also should not run it.
        borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time.
        your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the --files-cache mode change (and happens every time you change mode). You can avoid the one-time slowdown by using the pre-1.1.0rc4-compatible mode (but that is less safe for detecting changed files than the default). See the --files-cache docs for details.
    1.1.11 removes WSL autodetection (Windows 10 Subsystem for Linux). If WSL still has a problem with sync_file_range, you need to set BORG_WORKAROUNDS=basesyncfile in the borg process environment to work around the WSL issue.

Fixes:

    fixed potential index corruption / data loss issue due to bug in hashindex_set, NixOS#4829 Please read and follow the more detailled notes close to the top of this document.
    upgrade bundled xxhash to 0.7.3, NixOS#4891 0.7.2 is the minimum requirement for correct operations on ARMv6 in non-fixup mode, where unaligned memory accesses cause bus errors. 0.7.3 adds some speedups and libxxhash 0.7.3 even has a pkg-config file now.
    upgrade bundled lz4 to 1.9.2
    upgrade bundled zstd to 1.4.4
    fix crash when upgrading erroneous hints file, NixOS#4922
    extract:
        fix KeyError for "partial" extraction, NixOS#4607
        fix "partial" extract for hardlinked contentless file types, NixOS#4725
        fix preloading for old (0.xx) remote servers, NixOS#4652
        fix confusing output of borg extract --list --strip-components, NixOS#4934
    delete: after double-force delete, warn about necessary repair, NixOS#4704
    create: give invalid repo error msg if repo config not found, NixOS#4411
    mount: fix FUSE mount missing st_birthtime, NixOS#4763 NixOS#4767
    check: do not stumble over invalid item key, NixOS#4845
    info: if the archive doesn't exist, print a pretty message, NixOS#4793
    SecurityManager.known(): check all files, NixOS#4614
    Repository.open: use stat() to check for repo dir, NixOS#4695
    Repository.check_can_create_repository: use stat() to check, NixOS#4695
    fix invalid archive error message
    fix optional/non-optional location arg, NixOS#4541
    commit-time free space calc: ignore bad compact map entries, NixOS#4796
    ignore EACCES (errno 13) when hardlinking the old config, NixOS#4730
    --prefix / -P: fix processing, avoid argparse issue, NixOS#4769

New features:

    enable placeholder usage in all extra archive arguments
    new BORG_WORKAROUNDS mechanism, basesyncfile, NixOS#4710
    recreate: support --timestamp option, NixOS#4745
    support platforms without os.link (e.g. Android with Termux), NixOS#4901 if we don't have os.link, we just extract another copy instead of making a hardlink.
    support linux platforms without sync_file_range (e.g. Android 7 with Termux), NixOS#4905

Other:

    ignore --stats when given with --dry-run, but continue, NixOS#4373
    add some ProgressIndicator msgids to code / fix docs, NixOS#4935
    elaborate on "Calculating size" message
    argparser: always use REPOSITORY in metavar, also use more consistent help phrasing.
    check: improve error output for matching index size, see NixOS#4829
    docs:
        changelog: add advisory about hashindex_set bug NixOS#4829
        better describe BORG_SECURITY_DIR, BORG_CACHE_DIR, NixOS#4919
        infos about cache security assumptions, NixOS#4900
        add FAQ describing difference between a local repo vs. repo on a server.
        document how to test exclusion patterns without performing an actual backup
        timestamps in the files cache are now usually ctime, NixOS#4583
        fix bad reference to borg compact (does not exist in 1.1), NixOS#4660
        create: borg 1.1 is not future any more
        extract: document limitation "needs empty destination", NixOS#4598
        how to supply a passphrase, use crypto devices, NixOS#4549
        fix osxfuse github link in installation docs
        add example of exclude-norecurse rule in help patterns
        update macOS Brew link
        add note about software for automating backups, NixOS#4581
        AUTHORS: mention copyright+license for bundled msgpack
        fix various code blocks in the docs, NixOS#4708
        updated docs to cover use of temp directory on remote, NixOS#4545
        add restore docs, NixOS#4670
        add a pull backup / push restore how-to, NixOS#1552
        add FAQ how to retain original paths, NixOS#4532
        explain difference between --exclude and --pattern, NixOS#4118
        add FAQs for SSH connection issues, NixOS#3866
        improve password FAQ, NixOS#4591
        reiterate that 'file cache names are absolute' in FAQ
    tests:
        cope with ANY error when importing pytest into borg.testsuite, NixOS#4652
        fix broken test that relied on improper zlib assumptions
        test_fuse: filter out selinux xattrs, NixOS#4574
    travis / vagrant:
        misc python versions removed / changed (due to openssl 1.1 compatibility) or added (3.7 and 3.8, for better borg compatibility testing)
        binary building is on python 3.5.9 now
    vagrant:
        add new boxes: ubuntu 18.04 and 20.04, debian 10
        update boxes: openindiana, darwin, netbsd
        remove old boxes: centos 6
        darwin: updated osxfuse to 3.10.4
        use debian/ubuntu pip/virtualenv packages
        rather use python 3.6.2 than 3.6.0, fixes coverage/sqlite3 issue
        use requirements.d/development.lock.txt to avoid compat issues
    travis:
        darwin: backport some install code / order from master
        remove deprecated keyword "sudo" from travis config
        allow osx builds to fail, NixOS#4955 this is due to travis-ci frequently being so slow that the OS X builds just fail because they exceed 50 minutes and get killed by travis.

(cherry picked from commit dbff9b5)
@Janik-Haag Janik-Haag added the 12. first-time contribution This PR is the author's first one; please be gentle! label Jun 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.status: work-in-progress This PR isn't done 12. first-time contribution This PR is the author's first one; please be gentle!
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants