From 175ecbab9163fa6d5dc7481c6258301833e02042 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Fri, 26 May 2017 15:43:50 +0200 Subject: [PATCH] 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)") --- .../version-management/git-repo/default.nix | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/pkgs/applications/version-management/git-repo/default.nix b/pkgs/applications/version-management/git-repo/default.nix index 001aa0c5b097..886efefa8bbb 100644 --- a/pkgs/applications/version-management/git-repo/default.nix +++ b/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 ''; - meta = { - homepage = "http://source.android.com/source/downloading.html"; + postFixup = '' + wrapProgram $out/bin/repo --prefix PATH ":" \ + "${stdenv.lib.makeBinPath [ git gnupg1compat less ]}" + ''; + + 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; }; }