gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-deployment] branch master updated: WIP: build system


From: gnunet
Subject: [GNUnet-SVN] [taler-deployment] branch master updated: WIP: build system
Date: Fri, 11 Oct 2019 12:18:38 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository deployment.

The following commit(s) were added to refs/heads/master by this push:
     new a976769  WIP: build system
a976769 is described below

commit a976769c5aba89444a162c18f940fc49f57321d2
Author: Florian Dold <address@hidden>
AuthorDate: Fri Oct 11 15:48:31 2019 +0530

    WIP: build system
---
 bin/taler-deployment | 144 +++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 129 insertions(+), 15 deletions(-)

diff --git a/bin/taler-deployment b/bin/taler-deployment
index 05a6f3b..79f251c 100755
--- a/bin/taler-deployment
+++ b/bin/taler-deployment
@@ -1,5 +1,20 @@
 #!/usr/bin/env python3
 
+# This file is part of GNU Taler.
+#
+# GNU Taler is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GNU Taler is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Taler.  If not, see <https://www.gnu.org/licenses/>.
+
 import click
 import types
 import os
@@ -44,6 +59,7 @@ class Repo:
     name: str
     url: str
     deps: List[str]
+    builder: Callable
 
 
 @click.group()
@@ -54,19 +70,117 @@ def cli():
 # map from environment name to currenct
 currmap = {"test": "TESTKUDOS", "demo": "KUDOS", "int": "INTKUDOS"}
 
+
+def update_checkout(p: Path):
+    """Clean the repository's working directory and
+    update it to the match the latest version of the upstream branch
+    that we are tracking."""
+    subprocess.run(["git", "-C", p.as_posix(), "clean", "-fdx"], check=True)
+    subprocess.run(["git", "-C", p.as_posix(), "fetch"], check=True)
+    subprocess.run(["git", "-C", p.as_posix(), "reset"], check=True)
+    res = subprocess.run(
+        [
+            "git",
+            "-C",
+            p.as_posix(),
+            "rev-parse",
+            "--abbrev-ref",
+            "--symbolic-full-name",
+            "@{u}",
+        ],
+        stderr=subprocess.DEVNULL,
+        stdout=subprocess.PIPE,
+        encoding="utf-8",
+    )
+    if res.returncode != 0:
+        ref = "HEAD"
+    else:
+        ref = res.stdout.strip("\n ")
+    print(f"resetting to ref {ref}")
+    subprocess.run(["git", "-C", p.as_posix(), "reset", "--hard", ref], 
check=True)
+
+
+def default_configure(*extra):
+    pfx = Path.home() / "local"
+    subprocess.run(["./configure", f"--prefix={pfx.as_posix}"] + extra, 
check=True)
+
+
+def build_libmicrohttpd(p):
+    update_checkout(p)
+    subprocess.run(["./bootstrap"], check=True)
+    # Debian gnutls packages are too old ...
+    default_configure("--with-gnutls=/usr/local")
+    subprocess.run(["make"], check=True)
+    subprocess.run(["make", "install"], check=True)
+
+
+def build_gnunet(p):
+    update_checkout(p)
+
+
+def build_exchange(p):
+    update_checkout(p)
+
+
+def build_twister(p):
+    update_checkout(p)
+
+
+def build_merchant(p):
+    update_checkout(p)
+
+
+def build_bank(p):
+    update_checkout(p)
+
+
+def build_landing(p):
+    update_checkout(p)
+
+
+def build_donations(p):
+    update_checkout(p)
+
+
+def build_blog(p):
+    update_checkout(p)
+
+
+def build_survey(p):
+    update_checkout(p)
+
+
+def build_backoffice(p):
+    update_checkout(p)
+
+
 # Our repositories, *must* be topologically sorted
 repos = [
-    Repo("libmicrohttpd", "git://gnunet.org/libmicrohttpd.git", []),
-    Repo("gnunet", "git://gnunet.org/gnunet.git", []),
-    Repo("exchange", "git://git.taler.net/exchange", ["gnunet", 
"libmicrohttpd"]),
-    Repo("twister", "git://git.taler.net/twister", ["gnunet", "exchange"]),
-    Repo("merchant", "git://git.taler.net/merchant", ["exchange", 
"libmicrohttpd"]),
-    Repo("bank", "git://git.taler.net/bank", []),
-    Repo("landing", "git://git.taler.net/landing", []),
-    Repo("donations", "git://git.taler.net/donations", []),
-    Repo("blog", "git://git.taler.net/blog", []),
-    Repo("survey", "git://git.taler.net/survey", []),
-    Repo("backoffice", "git://git.taler.net/backoffice", []),
+    Repo(
+        "libmicrohttpd", "git://gnunet.org/libmicrohttpd.git", [], 
build_libmicrohttpd
+    ),
+    Repo("gnunet", "git://gnunet.org/gnunet.git", [], build_gnunet),
+    Repo(
+        "exchange",
+        "git://git.taler.net/exchange",
+        ["gnunet", "libmicrohttpd"],
+        build_exchange,
+    ),
+    Repo(
+        "twister", "git://git.taler.net/twister", ["gnunet", "exchange"], 
build_twister
+    ),
+    Repo(
+        "merchant",
+        "git://git.taler.net/merchant",
+        ["exchange", "libmicrohttpd"],
+        build_merchant,
+    ),
+    Repo("bank", "git://git.taler.net/bank", [], build_bank),
+    Repo("landing", "git://git.taler.net/landing", [], build_landing),
+    Repo("donations", "git://git.taler.net/donations", [], build_donations),
+    Repo("blog", "git://git.taler.net/blog", [], build_blog),
+    Repo("survey", "git://git.taler.net/survey", [], build_survey),
+    Repo("backoffice", "git://git.taler.net/backoffice", [], build_backoffice),
 ]
 
 
@@ -90,10 +204,6 @@ def ensure_activated():
         sys.exit(1)
 
 
-def build_repo(r):
-    pass
-
-
 def update_repos():
     for r in repos:
         r_dir = Path.home() / "sources" / r.name
@@ -136,6 +246,10 @@ def build():
     update_repos()
     stale = get_stale_repos()
     print(f"found stale repos: {stale}")
+    for r in stale:
+        p = Path.home() / "sources" / r.name
+        p.chdir()
+        r.builder(p)
 
 
 @cli.command()

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]