From 688e6e099ab5a94ea0594d05ef574f098275f806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Val=C3=A9rian=20Galliat?= Date: Sun, 28 Feb 2016 23:00:45 -0500 Subject: [PATCH] Gogs: init at 20160227-d320915 --- .../version-management/gogs/default.nix | 445 ++++++++++++++++++ .../version-management/gogs/default.nix.patch | 22 + .../gogs/gogs-definition.nix | 74 +++ .../version-management/gogs/sqlite.awk | 21 + .../gogs/update-gogs-definition | 9 + pkgs/top-level/all-packages.nix | 2 + 6 files changed, 573 insertions(+) create mode 100644 pkgs/applications/version-management/gogs/default.nix create mode 100644 pkgs/applications/version-management/gogs/default.nix.patch create mode 100644 pkgs/applications/version-management/gogs/gogs-definition.nix create mode 100644 pkgs/applications/version-management/gogs/sqlite.awk create mode 100755 pkgs/applications/version-management/gogs/update-gogs-definition diff --git a/pkgs/applications/version-management/gogs/default.nix b/pkgs/applications/version-management/gogs/default.nix new file mode 100644 index 000000000000..a8ba49288726 --- /dev/null +++ b/pkgs/applications/version-management/gogs/default.nix @@ -0,0 +1,445 @@ +# This file was generated by go2nix. +{ stdenv, lib, makeWrapper, go, goPackages, git, fetchgit, sqliteSupport ? true }: + +with goPackages; + +buildGoPackage rec { + name = "gogs-${version}"; + version = "20160227-${stdenv.lib.strings.substring 0 7 rev}"; + rev = "d320915ad2a7b4bbab075b98890aa50f91f0ced5"; + + buildInputs = [ makeWrapper go ]; + buildFlags = lib.optional (sqliteSupport) "-tags sqlite"; + goPackagePath = "github.com/gogits/gogs"; + + postInstall = '' + wrapProgram $bin/bin/gogs \ + --prefix PATH : ${git}/bin \ + --run 'export GOGS_WORK_DIR=''${GOGS_WORK_DIR:-$PWD}' \ + --run 'cd "$GOGS_WORK_DIR"' \ + --run "ln -fs $out/share/go/src/${goPackagePath}/{public,templates} ." + ''; + + src = fetchgit { + inherit rev; + url = "https://github.com/gogits/gogs.git"; + sha256 = "0wpyn3linpb9jgqrpzbmmgn2s54rdhnqv286x2vj4lrngjc8xbc7"; + }; + + extraSrcs = [ + { + goPackagePath = "github.com/Unknwon/cae"; + + src = fetchgit { + url = "https://github.com/Unknwon/cae"; + rev = "7f5e046bc8a6c3cde743c233b96ee4fd84ee6ecd"; + sha256 = "1sp9mlm42r50ydsk1dyyhshrryy364pjdj8m275b5av8yg374dq2"; + }; + } + { + goPackagePath = "github.com/Unknwon/com"; + + src = fetchgit { + url = "https://github.com/Unknwon/com"; + rev = "28b053d5a2923b87ce8c5a08f3af779894a72758"; + sha256 = "1nq7pdjczgllm0yb2dlgr6zclwpwabl9a86dyw4bz0zd6qginfxy"; + }; + } + { + goPackagePath = "github.com/Unknwon/i18n"; + + src = fetchgit { + url = "https://github.com/Unknwon/i18n"; + rev = "3b48b6662051bed72d36efa3c1e897bdf96b2e37"; + sha256 = "1h18024641z473gx1ghwxd741c5sbhww4zsc0f3wwig6dghsfy0f"; + }; + } + { + goPackagePath = "github.com/Unknwon/paginater"; + + src = fetchgit { + url = "https://github.com/Unknwon/paginater"; + rev = "7748a72e01415173a27d79866b984328e7b0c12b"; + sha256 = "11lf3grqdr7ynhm39xp7siihf7b7v5p7r1vf9f3lbnyy99092v9p"; + }; + } + { + goPackagePath = "github.com/bradfitz/gomemcache"; + + src = fetchgit { + url = "https://github.com/bradfitz/gomemcache"; + rev = "fb1f79c6b65acda83063cbc69f6bba1522558bfc"; + sha256 = "0s4azbz3q681psi31r6z1697rkhqpaap8lif9yg85v6fc0zm7wvc"; + }; + } + { + goPackagePath = "github.com/codegangsta/cli"; + + src = fetchgit { + url = "https://github.com/codegangsta/cli"; + rev = "a2943485b110df8842045ae0600047f88a3a56a1"; + sha256 = "1hdbr6riv7j4all09w2a5zdc27fq11rf005v7v3wdccq07zmsmaa"; + }; + } + { + goPackagePath = "github.com/go-macaron/binding"; + + src = fetchgit { + url = "https://github.com/go-macaron/binding"; + rev = "a68f34212fe257219981e43adfe4c96ab48f42cd"; + sha256 = "00ny0khwbcv9n7kbnc2mfl07sp6dyp4xc5y4wiqvsgj66gb90yf7"; + }; + } + { + goPackagePath = "github.com/go-macaron/cache"; + + src = fetchgit { + url = "https://github.com/go-macaron/cache"; + rev = "56173531277692bc2925924d51fda1cd0a6b8178"; + sha256 = "05b2bbndkdr5z63f2xz4z1k8ls3zz7xi17vkhqnz0g0dvsx34l38"; + }; + } + { + goPackagePath = "github.com/go-macaron/captcha"; + + src = fetchgit { + url = "https://github.com/go-macaron/captcha"; + rev = "8aa5919789ab301e865595eb4b1114d6b9847deb"; + sha256 = "0wdihxbl7yw4wg2x0wb09kv9swfpr5j06wsj4hxn3xcbpqi9viwm"; + }; + } + { + goPackagePath = "github.com/go-macaron/csrf"; + + src = fetchgit { + url = "https://github.com/go-macaron/csrf"; + rev = "715bca06a911dbd91c4f1d9ec65fd329664b5211"; + sha256 = "1jljqv96ib5iih0jx7smsykbsfc0wy33salf19djad5xb64clpmi"; + }; + } + { + goPackagePath = "github.com/go-macaron/gzip"; + + src = fetchgit { + url = "https://github.com/go-macaron/gzip"; + rev = "cad1c6580a07c56f5f6bc52d66002a05985c5854"; + sha256 = "12mq3dd1vd0jbi80fxab4ysmipbz9zhbm9nw6y6a6bw3byc8w4jf"; + }; + } + { + goPackagePath = "github.com/go-macaron/i18n"; + + src = fetchgit { + url = "https://github.com/go-macaron/i18n"; + rev = "d2d3329f13b52314f3292c4cecb601fad13f02c8"; + sha256 = "18f59fkw3wy5b80x8jcqnywqscs7qvj7cnfi85d23m9kq353pifs"; + }; + } + { + goPackagePath = "github.com/go-macaron/inject"; + + src = fetchgit { + url = "https://github.com/go-macaron/inject"; + rev = "c5ab7bf3a307593cd44cb272d1a5beea473dd072"; + sha256 = "0v7plrgwx9qn9iknm7p5fr5c53zzx5aaqvdcgyh6hnfwjjf5zny4"; + }; + } + { + goPackagePath = "github.com/go-macaron/session"; + + src = fetchgit { + url = "https://github.com/go-macaron/session"; + rev = "66031fcb37a0fff002a1f028eb0b3a815c78306b"; + sha256 = "0h6l1af93cipcmy3p6asw79cbmhkl34rmf0nyzywpm2pmn7pqznc"; + }; + } + { + goPackagePath = "github.com/go-macaron/toolbox"; + + src = fetchgit { + url = "https://github.com/go-macaron/toolbox"; + rev = "82b511550b0aefc36b3a28062ad3a52e812bee38"; + sha256 = "1s2psf7sw3asag3hnw0n3ah6ywwghf2p4yn4m0pf5d9883sf4pgm"; + }; + } + { + goPackagePath = "github.com/go-sql-driver/mysql"; + + src = fetchgit { + url = "https://github.com/go-sql-driver/mysql"; + rev = "71f003c6e927d2550713e7637affb769977ece78"; + sha256 = "197x3hlmgaw736hyvyxla1m2c6bcwif68zjvk3qd7mxxbfi5ic6s"; + }; + } + { + goPackagePath = "github.com/go-xorm/core"; + + src = fetchgit { + url = "https://github.com/go-xorm/core"; + rev = "9ddf4ee12e7a370dacf0092d9896979ae6e3fb16"; + sha256 = "1qn7kgfyc7yv78ggwc8w2f75jklbm68a4wirglysf8kf70l3m773"; + }; + } + { + goPackagePath = "github.com/go-xorm/xorm"; + + src = fetchgit { + url = "https://github.com/go-xorm/xorm"; + rev = "67d038a63f23ce98f7fbc5ef3a87075d82d50f93"; + sha256 = "0qk1h3ihdl0mqmi28gljxx46lnngjh4l80zrxvlsqlwrlj95yw7k"; + }; + } + { + goPackagePath = "github.com/gogits/chardet"; + + src = fetchgit { + url = "https://github.com/gogits/chardet"; + rev = "2404f777256163ea3eadb273dada5dcb037993c0"; + sha256 = "1dki2pqhnzcmzlqrq4d4jwknnjxm82xqnmizjjdblb6h98ans1cd"; + }; + } + { + goPackagePath = "github.com/gogits/cron"; + + src = fetchgit { + url = "https://github.com/gogits/cron"; + rev = "3abc0f88f2062336bcc41b43a4febbd847a390ce"; + sha256 = "0y3z048wym595w8rgngz2mpd1bg8gc282li1l0bmg5q8a4hyb0x5"; + }; + } + { + goPackagePath = "github.com/gogits/git-module"; + + src = fetchgit { + url = "https://github.com/gogits/git-module"; + rev = "a1c50966a193fa4cfc9a9142c59189348c97387c"; + sha256 = "1xaffyzgbif84n73s79g8yynpp89d61lajn0y0vf4pnkh1j500v0"; + }; + } + { + goPackagePath = "github.com/gogits/go-gogs-client"; + + src = fetchgit { + url = "https://github.com/gogits/go-gogs-client"; + rev = "d584b1e0fb4d8ad0e8cf2fae2368838f2526b408"; + sha256 = "1g9kb0bj50dnwh261r3sq00jy1d8pyywh3ybav83lnmn95sbzsns"; + }; + } + { + goPackagePath = "github.com/gogits/gogs"; + + src = fetchgit { + url = "https://github.com/gogits/gogs.git"; + rev = "d320915ad2a7b4bbab075b98890aa50f91f0ced5"; + sha256 = "0wpyn3linpb9jgqrpzbmmgn2s54rdhnqv286x2vj4lrngjc8xbc7"; + }; + } + { + goPackagePath = "github.com/issue9/identicon"; + + src = fetchgit { + url = "https://github.com/issue9/identicon"; + rev = "f8c0d2ce04db79c663b1da33d3a9f62be753ee88"; + sha256 = "0zilbp4dqmbslhs9p10gb04xggf3z0xlr0vw2g7c5gyc2w02q27f"; + }; + } + { + goPackagePath = "github.com/klauspost/compress"; + + src = fetchgit { + url = "https://github.com/klauspost/compress"; + rev = "f9625351863b5e94c1da72862187b8fe9a91af90"; + sha256 = "0yjl58zk2dlb1jvgc3frnhgbsrc680ajkpb8bbyd9m5d21hmkq56"; + }; + } + { + goPackagePath = "github.com/klauspost/cpuid"; + + src = fetchgit { + url = "https://github.com/klauspost/cpuid"; + rev = "2c698c6aef5976c7860074cc7040e8af7866aa21"; + sha256 = "1gyxikc62ivs0yf6d4kpbj2038pwyziz47v1vn4qxg4phr2rd5h7"; + }; + } + { + goPackagePath = "github.com/klauspost/crc32"; + + src = fetchgit { + url = "https://github.com/klauspost/crc32"; + rev = "19b0b332c9e4516a6370a0456e6182c3b5036720"; + sha256 = "0r11v6vaqg49sa8zvxh2y6md4pp0sfh4ia43gsw1arwwlsah39vz"; + }; + } + { + goPackagePath = "github.com/lib/pq"; + + src = fetchgit { + url = "https://github.com/lib/pq"; + rev = "69552e54d2a9d4c6a2438926a774930f7bc398ec"; + sha256 = "1y9923j9yl1qqizsy80mzaylg4ysyqp6gyrf85x91x17p2adq2ll"; + }; + } + ] ++ (lib.optional (sqliteSupport) { + goPackagePath = "github.com/mattn/go-sqlite3"; + + src = fetchgit { + url = "https://github.com/mattn/go-sqlite3"; + rev = "09d5c451710ef887470709463f4f04ff83e1e039"; + sha256 = "16c8vl9j693gb0q2cqv5ijnxdvfgnpm1sgaicbpd25lbqningcfc"; + }; + }) ++ [ + { + goPackagePath = "github.com/mcuadros/go-version"; + + src = fetchgit { + url = "https://github.com/mcuadros/go-version"; + rev = "d52711f8d6bea8dc01efafdb68ad95a4e2606630"; + sha256 = "1b4h6557y5aar74bi1xqmpm4zr1kla95x9q49k48w99n3sis3h7m"; + }; + } + { + goPackagePath = "github.com/microcosm-cc/bluemonday"; + + src = fetchgit { + url = "https://github.com/microcosm-cc/bluemonday"; + rev = "4ac6f27528d0a3f2a59e0b0a6f6b3ff0bb89fe20"; + sha256 = "0xacnj369mhpff6zykm9rykh7r2i4c6mjfmg5cd1ra4irpskx5sb"; + }; + } + { + goPackagePath = "github.com/nfnt/resize"; + + src = fetchgit { + url = "https://github.com/nfnt/resize"; + rev = "4d93a29130b1b6aba503e2aa8b50f516213ea80e"; + sha256 = "1s6z241726nd1xd5rwlnj6l4p0na4v20ibfg5sh9cp7pl98mn5gv"; + }; + } + { + goPackagePath = "github.com/russross/blackfriday"; + + src = fetchgit { + url = "https://github.com/russross/blackfriday"; + rev = "006144af03eeeff1037240a71865a9fd61f1c25f"; + sha256 = "1z9zdkxgyk10xngyk55f0433ix6q9kwfrcyljj6xaqjb19wldz7j"; + }; + } + { + goPackagePath = "github.com/satori/go.uuid"; + + src = fetchgit { + url = "https://github.com/satori/go.uuid"; + rev = "e673fdd4dea8a7334adbbe7f57b7e4b00bdc5502"; + sha256 = "0nm2dqj87vvv1bmcfl3x9k6kal655yfamxnb7xkfzqkvldigy0qf"; + }; + } + { + goPackagePath = "github.com/sergi/go-diff"; + + src = fetchgit { + url = "https://github.com/sergi/go-diff"; + rev = "ec7fdbb58eb3e300c8595ad5ac74a5aa50019cc7"; + sha256 = "049xnl182h5q8fs5z70wb9yh9jvi98h4v3z13xps2rys9xl9rh5x"; + }; + } + { + goPackagePath = "github.com/shurcooL/sanitized_anchor_name"; + + src = fetchgit { + url = "https://github.com/shurcooL/sanitized_anchor_name"; + rev = "10ef21a441db47d8b13ebcc5fd2310f636973c77"; + sha256 = "1cnbzcf47cn796rcjpph1s64qrabhkv5dn9sbynsy7m9zdwr5f01"; + }; + } + { + goPackagePath = "golang.org/x/crypto"; + + src = fetchgit { + url = "https://go.googlesource.com/crypto"; + rev = "5dc8cb4b8a8eb076cbb5a06bc3b8682c15bdbbd3"; + sha256 = "0b2s9gidpy2r85z0n9w2knh3dkfhjg89z3lyi620vcf1li6qhdl3"; + }; + } + { + goPackagePath = "golang.org/x/net"; + + src = fetchgit { + url = "https://go.googlesource.com/net"; + rev = "6acef71eb69611914f7a30939ea9f6e194c78172"; + sha256 = "0vy75lfl2viiikp3k9626g3ncxq6vpnwmhkgyaxdnq14hb4xgw2k"; + }; + } + { + goPackagePath = "golang.org/x/text"; + + src = fetchgit { + url = "https://go.googlesource.com/text"; + rev = "a71fd10341b064c10f4a81ceac72bcf70f26ea34"; + sha256 = "1wm63llpn1ix85f47ac3c9jx92i9cfbdw2ih7p8gdq964k7px53c"; + }; + } + { + goPackagePath = "gopkg.in/asn1-ber.v1"; + + src = fetchgit { + url = "https://gopkg.in/asn1-ber.v1"; + rev = "4e86f4367175e39f69d9358a5f17b4dda270378d"; + sha256 = "13p8s74kzklb5lklfpxwxb78rknihawv1civ4s9bfqx565010fwk"; + }; + } + { + goPackagePath = "gopkg.in/bufio.v1"; + + src = fetchgit { + url = "https://gopkg.in/bufio.v1"; + rev = "567b2bfa514e796916c4747494d6ff5132a1dfce"; + sha256 = "1z5pj778hdianlfj14p0d67g69v4gc2kvn6jg27z5jf75a88l19b"; + }; + } + { + goPackagePath = "gopkg.in/gomail.v2"; + + src = fetchgit { + url = "https://gopkg.in/gomail.v2"; + rev = "fbb71ddc63acd07dd0ed49ababdf02c551e2539a"; + sha256 = "1q8xa51bxcmbwsww8s2x42152w1xn553xmmpyq5jz66a2vf1wlvl"; + }; + } + { + goPackagePath = "gopkg.in/ini.v1"; + + src = fetchgit { + url = "https://gopkg.in/ini.v1"; + rev = "776aa739ce9373377cd16f526cdf06cb4c89b40f"; + sha256 = "04pmr4mdvpzawpxinwqpas4ksjzq54q5a0qapw0kkb651p06vqhn"; + }; + } + { + goPackagePath = "gopkg.in/ldap.v2"; + + src = fetchgit { + url = "https://gopkg.in/ldap.v2"; + rev = "07a7330929b9ee80495c88a4439657d89c7dbd87"; + sha256 = "0qsy0ldvkd0rhh6wfdrm51145ps9sd8nc8qx3fw1f90irb3a71sh"; + }; + } + { + goPackagePath = "gopkg.in/macaron.v1"; + + src = fetchgit { + url = "https://gopkg.in/macaron.v1"; + rev = "b9eee382bef2f2f678fadbcf368fc1e52306bed1"; + sha256 = "1rbj1l8742vgar4zchf4r203qvids9vv0iz9a20l5585xz21cmsj"; + }; + } + { + goPackagePath = "gopkg.in/redis.v2"; + + src = fetchgit { + url = "https://gopkg.in/redis.v2"; + rev = "e6179049628164864e6e84e973cfb56335748dea"; + sha256 = "02hifpgak39y39lbn7v2ybbpk3rmb8nvmb3h3490frr8s4pfkb8h"; + }; + } + ]; +} diff --git a/pkgs/applications/version-management/gogs/default.nix.patch b/pkgs/applications/version-management/gogs/default.nix.patch new file mode 100644 index 000000000000..f9b6b3aafbc7 --- /dev/null +++ b/pkgs/applications/version-management/gogs/default.nix.patch @@ -0,0 +1,22 @@ +2,3c2 +< #with import {}; +< { stdenv, lib, go, goPackages, fetchgit, fetchhg, fetchbzr, fetchsvn }: +--- +> { stdenv, lib, makeWrapper, go, goPackages, git, fetchgit, sqliteSupport ? true }: +12,15c11,12 +< buildInputs = [ go ]; +< +< buildFlags = "--tags sqlite"; +< +--- +> buildInputs = [ makeWrapper go ]; +> buildFlags = lib.optional (sqliteSupport) "-tags sqlite"; +17a15,22 +> postInstall = '' +> wrapProgram $bin/bin/gogs \ +> --prefix PATH : ${git}/bin \ +> --run 'export GOGS_WORK_DIR=''${GOGS_WORK_DIR:-$PWD}' \ +> --run 'cd "$GOGS_WORK_DIR"' \ +> --run "ln -fs $out/share/go/src/${goPackagePath}/{public,templates} ." +> ''; +> diff --git a/pkgs/applications/version-management/gogs/gogs-definition.nix b/pkgs/applications/version-management/gogs/gogs-definition.nix new file mode 100644 index 000000000000..626986081977 --- /dev/null +++ b/pkgs/applications/version-management/gogs/gogs-definition.nix @@ -0,0 +1,74 @@ +with import {}; + +let + # My go2nix fork to be able to build in a pure environment, + # with build tags support, fixed bugs that affected Gogs + # and with latest nix-prefetch-git output style. + my-go2nix = lib.overrideDerivation go2nix (oldAttrs: { + src = fetchFromGitHub { + rev = "336ac3d93272860c9d8f518f43ce6f70c3b11bf4"; + owner = "valeriangalliat"; + repo = "go2nix"; + sha256 = "0m9srjcl9lrphl4gsrscibf2c7yz2kmmja9qylbli4lwjw53g7p7"; + }; + + buildInputs = [ makeWrapper ] ++ oldAttrs.buildInputs; + + preFixup = ""; + + postInstall = '' + wrapProgram $bin/bin/go2nix \ + --prefix PATH : ${nix-prefetch-git}/bin \ + --prefix PATH : ${git}/bin \ + ''; + + disallowedReferences = []; + }); + + # Fetch a Go tree from a Go package repository and build tags. + # All dependencies are fetched according to `go get` rules, so the + # output of this derivation is not deterministic (but that's the + # point since we use it to automatically update the package and its + # dependencies). + fetchgo = + { goPackagePath, url, rev ? "HEAD", tags ? [] }: + stdenv.mkDerivation { + name = builtins.replaceStrings ["/"] ["_"] goPackagePath; + buildInputs = [ go git ]; + phases = [ "installPhase" ]; + + installPhase = '' + export GOPATH=$out + repo=$out/src/${goPackagePath} + mkdir -p $repo + git clone ${url} $repo + cd $repo + git reset --hard ${rev} + go get -v -d -tags ${builtins.concatStringsSep "," tags} + ''; + }; + + goPackagePath = "github.com/gogits/gogs"; + url = "https://${goPackagePath}.git"; + rev = "d320915ad2a7b4bbab075b98890aa50f91f0ced5"; + tags = [ "sqlite" ]; + +in + +stdenv.mkDerivation { + name = "gogs-definition"; + + src = fetchgo { + inherit goPackagePath url rev tags; + }; + + buildInputs = [ nix my-go2nix.bin ]; + + installPhase = '' + export GOPATH=$PWD + cd src/${goPackagePath} + go2nix save --tags ${builtins.concatStringsSep "," tags} + patch default.nix < ${./default.nix.patch} + cat default.nix | awk -f ${./sqlite.awk} | sed '/# can be improved/d' > $out + ''; +} diff --git a/pkgs/applications/version-management/gogs/sqlite.awk b/pkgs/applications/version-management/gogs/sqlite.awk new file mode 100644 index 000000000000..40c73261cefa --- /dev/null +++ b/pkgs/applications/version-management/gogs/sqlite.awk @@ -0,0 +1,21 @@ +/goPackagePath/ && /sqlite/ { + sqlite=1 + prev=" ] ++ (lib.optional (sqliteSupport) {" +} + +sqlite && /}$/ { + sqlite=0 + $0=" }) ++ [" +} + +NR > 1 { + print prev +} + +{ + prev=$0 +} + +END { + print prev +} diff --git a/pkgs/applications/version-management/gogs/update-gogs-definition b/pkgs/applications/version-management/gogs/update-gogs-definition new file mode 100755 index 000000000000..b467af463f1b --- /dev/null +++ b/pkgs/applications/version-management/gogs/update-gogs-definition @@ -0,0 +1,9 @@ +#!/bin/sh -e +# +# Regenerates `default.nix` using `gogs-definition.nix`. +# +# The latter should be updated to a new revision of Gogs in order +# to update. +# + +cat "$(nix-build --no-out-link gogs-definition.nix)" > default.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e8b7341cd399..5250906c66f9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1865,6 +1865,8 @@ in gitstats = callPackage ../applications/version-management/gitstats { }; + gogs = callPackage ../applications/version-management/gogs { }; + git-latexdiff = callPackage ../tools/typesetting/git-latexdiff { }; glusterfs = callPackage ../tools/filesystems/glusterfs { };