Browse Source

gitRepo: Improve the packaging

Improvements:
- Use a versioned URL
  - The build won't break anymore (due to a wrong hash) after a new
    version is being released
  - It will be possible to build older versions
- Add (hopefully all) runtime dependencies (Git, GnuPG and less (for
  "repo help"))
- Add the upstream license
- Add a long description
- Use the name of the Git tag for the version
  - The version number from the script (currently 1.23) is only
    incremented after "important" changes (i.e. there are slightly
    different different scripts with "VERSION = (1, 23)")
nixos-19.03
Michael Weiss 5 years ago
parent
commit
175ecbab91
  1. 45
      pkgs/applications/version-management/git-repo/default.nix

45
pkgs/applications/version-management/git-repo/default.nix

@ -1,24 +1,41 @@
{ stdenv, fetchurl, python }:
{ stdenv, fetchFromGitHub, makeWrapper
, python, git, gnupg1compat, less }:
stdenv.mkDerivation {
name = "git-repo-1.23";
src = fetchurl {
# I could not find a versioned url for the 1.21 version. In case
# the sha mismatches, check the homepage for new version and sha.
url = "http://commondatastorage.googleapis.com/git-repo-downloads/repo";
sha256 = "1i8xymxh630a7d5nkqi49nmlwk77dqn36vsygpyhri464qwz0iz1";
stdenv.mkDerivation rec {
name = "git-repo-${version}";
version = "1.12.37";
src = fetchFromGitHub {
owner = "android";
repo = "tools_repo";
rev = "v${version}";
sha256 = "0qp7jqhblv7xblfgpcq4n18dyjdv8shz7r60c3vnjxx2fngkj2jd";
};
unpackPhase = "true";
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ python git gnupg1compat less ];
installPhase = ''
mkdir -p $out/bin
sed -e 's,!/usr/bin/env python,!${python}/bin/python,' < $src > $out/bin/repo
chmod +x $out/bin/repo
cp $src/repo $out/bin/repo
'';
postFixup = ''
wrapProgram $out/bin/repo --prefix PATH ":" \
"${stdenv.lib.makeBinPath [ git gnupg1compat less ]}"
'';
meta = {
homepage = "http://source.android.com/source/downloading.html";
meta = with stdenv.lib; {
description = "Android's repo management tool";
platforms = stdenv.lib.platforms.unix;
longDescription = ''
Repo is a Python script based on Git that helps manage many Git
repositories, does the uploads to revision control systems, and automates
parts of the development workflow. Repo is not meant to replace Git, only
to make it easier to work with Git.
'';
homepage = "https://android.googlesource.com/tools/repo";
license = licenses.asl20;
maintainers = [ maintainers.primeos ];
platforms = platforms.unix;
};
}

Loading…
Cancel
Save