{"action":"created","comment":{"url":"https://api.github.com/repos/ESMCI/cime/pulls/comments/52691209","id":52691209,"diff_hunk":"@@ -0,0 +1,508 @@\n+#!/usr/bin/env python\n+\n+\"\"\"\n+Script to build a case.\n+\"\"\"\n+\n+from standard_script_setup import *\n+\n+from CIME.utils import expect, run_cmd\n+from CIME.case import Case\n+from CIME.env_module import EnvModule\n+\n+import argparse, doctest, shutil, glob\n+\n+###############################################################################\n+def parse_command_line(args, description):\n+###############################################################################\n+    parser = argparse.ArgumentParser(\n+        usage=\"\"\"\\n%s [<casedir>] [--verbose]\n+OR\n+%s --help\n+OR\n+%s --test\n+\n+\\033[1mEXAMPLES:\\033[0m\n+    \\033[1;32m# Build case \\033[0m\n+    > %s\n+\"\"\" % ((os.path.basename(args[0]), ) * 4),\n+\n+description=description,\n+\n+formatter_class=argparse.ArgumentDefaultsHelpFormatter\n+)\n+\n+    CIME.utils.setup_standard_logging_options(parser)\n+\n+    parser.add_argument(\"caseroot\", nargs=\"?\", default=os.getcwd(),\n+                        help=\"Case directory to build\")\n+\n+    parser.add_argument(\"-t\", \"--testmode\", action=\"store_true\",\n+                        help=\"Unknown TODO\")\n+\n+    args = parser.parse_args(args[1:])\n+\n+    CIME.utils.handle_standard_logging_options(args)\n+\n+    return args.caseroot, args.testmode\n+\n+###############################################################################\n+def check_input_data(case):\n+###############################################################################\n+    run_cmd(\"./check_input_data --download\")\n+\n+    get_refcase  = case.get_value(\"GET_REFCASE\")\n+    run_type     = case.get_value(\"RUN_TYPE\")\n+    continue_run = case.get_value(\"CONTINUE_RUN\")\n+\n+    # JGF - I don't have the foggiest idea what this is for so this is just\n+    # a 1-1 perl->python conversion\n+    if (get_refcase == \"TRUE\" and run_type != \"startup\" and continue_run == \"FALSE\"):\n+        din_loc_root = case.get_value(\"DIN_LOC_ROOT\")\n+        run_refdate  = case.get_value(\"RUN_REFDATE\")\n+        run_refcase  = case.get_value(\"RUN_REFCASE\")\n+        run_refdir   = case.get_value(\"RUN_REFDIR\")\n+        rundir       = case.get_value(\"RUNDIR\")\n+\n+        refdir = os.path.join(run_refdir, run_refcase, run_refdate)\n+        expect(os.path.isdir(refdir),\n+\"\"\"\n+*****************************************************************\n+ccsm_prestage ERROR: $refdir is not on local disk\n+obtain this data from the svn input data repository\n+> mkdir -p %s\n+> cd %s\n+> cd ..\n+> svn export --force https://svn-ccsm-inputdata.cgd.ucar.edu/trunk/inputdata/%s\n+or set GET_REFCASE to FALSE in env_run.xml\n+and prestage the restart data to $RUNDIR manually\n+*****************************************************************\"\"\" % (refdir, refdir, refdir))\n+\n+        logging.info(\" - Prestaging REFCASE (%s) to %s\" % (refdir, rundir))\n+\n+        # prestage the reference case's files.\n+\n+        if (not os.path.exists(rundir)):\n+            os.makedirs(rundir)\n+\n+        refcasefiles = glob.glob(\"%s/%s/*%s*\" % (din_loc_root, refdir, run_refcase))\n+        for rcfile in refcasefiles:\n+            rcbaseline = os.path.basename(rcfile)\n+            if (not os.path.exists(\"%s/%s\" % (rundir, rcbaseline))):\n+                os.symlink(rcfile, \"%s/%s\" % ((rundir, rcbaseline)))\n+\n+            # copy the refcases' rpointer files to the run directory\n+            rpointerfiles = glob.glob(\"%s/%s/*rpointer*\" % (din_loc_root, refdir))\n+            for rpointerfile in rpointerfiles:\n+                shutil.copy(rpointerfile, rundir)\n+\n+            cam2_list = glob.glob(\"%s/*.cam2.*\" % rundir)\n+            for cam2file in cam2_list:\n+                camfile = cam2file.replace(\"cam2\", \"cam\")\n+                os.symlink(cam2file, camfile)\n+\n+            allrundirfiles = glob.glob(\"%s/*\" % rundir)\n+            for runfile in allrundirfiles:\n+                os.chmod(runfile, 0755)\n+\n+###############################################################################\n+def build_checks(case, build_threaded, comp_interface, use_esmf_lib, mpilib,\n+                 nthrds_cpl, nthrds_atm, nthrds_lnd, nthrds_ice, nthrds_ocn, nthrds_glc, nthrds_wav, nthrds_rof, ninst_build, smp_value):\n+###############################################################################\n+    ninst_atm    = int(case.get_value(\"NINST_ATM\"))\n+    ninst_lnd    = int(case.get_value(\"NINST_LND\"))\n+    ninst_ice    = int(case.get_value(\"NINST_ICE\"))\n+    ninst_ocn    = int(case.get_value(\"NINST_OCN\"))\n+    ninst_glc    = int(case.get_value(\"NINST_GLC\"))\n+    ninst_wav    = int(case.get_value(\"NINST_WAV\"))\n+    ninst_rof    = int(case.get_value(\"NINST_ROF\"))\n+    ninst_value  = case.get_value(\"NINST_VALUE\")\n+    smp_build    = int(case.get_value(\"SMP_BUILD\"))\n+    build_status = int(case.get_value(\"BUILD_STATUS\"))\n+\n+    atmstr = 1 if (build_threaded == \"TRUE\" or nthrds_atm > 1) else 0\n+    lndstr = 1 if (build_threaded == \"TRUE\" or nthrds_lnd > 1) else 0\n+    icestr = 1 if (build_threaded == \"TRUE\" or nthrds_ice > 1) else 0 # not in perl\n+    ocnstr = 1 if (build_threaded == \"TRUE\" or nthrds_ocn > 1) else 0\n+    rofstr = 1 if (build_threaded == \"TRUE\" or nthrds_rof > 1) else 0\n+    glcstr = 1 if (build_threaded == \"TRUE\" or nthrds_glc > 1) else 0\n+    wavstr = 1 if (build_threaded == \"TRUE\" or nthrds_wav > 1) else 0\n+    cplstr = 1 if (build_threaded == \"TRUE\" or nthrds_cpl > 1) else 0\n+\n+    if (nthrds_atm > 1 or nthrds_lnd > 1 or nthrds_ice > 1 or nthrds_ocn > 1 or\n+        nthrds_rof > 1 or nthrds_glc > 1 or nthrds_wav > 1 or nthrds_cpl > 1):\n+        os.environ[\"SMP\"] = \"TRUE\"\n+    else:\n+        os.environ[\"SMP\"] = \"FALSE\"\n+\n+    smpstr = \"a%dl%dr%di%do%dg%dw%dc%d\" % \\\n+        (atmstr, lndstr, rofstr, icestr, ocnstr,  glcstr, wavstr, cplstr)\n+\n+    case.set_value(\"SMP_VALUE\", smpstr)\n+    os.environ[\"SMP_VALUE\"] = smpstr\n+\n+    inststr = \"a%dl%dr%di%do%dg%dw%d\" % \\\n+        (ninst_atm, ninst_lnd, ninst_rof, ninst_ice, ninst_ocn, ninst_glc, ninst_wav)\n+\n+    case.set_value(\"NINST_VALUE\", inststr)\n+    os.environ[\"NINST_VALUE\"] = inststr\n+\n+    expect( ninst_build == ninst_value or ninst_build == \"0\",\n+            \"\"\"\n+ERROR, NINST VALUES HAVE CHANGED\n+  NINST_BUILD = %s\n+  NINST_VALUE = %s\n+  A manual clean of your obj directories is strongly recommended\n+  You should execute the following:\n+    ./case.clean_build\n+  Then rerun the build script interactively\n+  ---- OR ----\n+  You can override this error message at your own risk by executing:\n+    ./xmlchange -file env_build.xml -id NINST_BUILD -val 0\n+  Then rerun the build script interactively\n+\"\"\" % (ninst_build, ninst_value))\n+\n+    expect( smp_build == smpstr or smp_build == 0,\n+            \"\"\"\n+ERROR, SMP VALUES HAVE CHANGED\n+  SMP_BUILD = %s\n+  SMP_VALUE = %s\n+  A manual clean of your obj directories is strongly recommended\n+  You should execute the following:\n+    ./case.clean_build\n+  Then rerun the build script interactively\n+  ---- OR ----\n+  You can override this error message at your own risk by executing:\n+    ./xmlchange -file env_build.xml -id SMP_BUILD -val 0\n+  Then rerun the build script interactively\n+\"\"\" % (smp_build, smp_value))\n+\n+    expect(build_status == 0,\n+           \"\"\"\n+ERROR env_build HAS CHANGED\n+  A manual clean of your obj directories is required\n+  You should execute the following:\n+    ./case.clean_build all\n+\"\"\")\n+\n+    expect(comp_interface != \"ESMF\" or use_esmf_lib == \"TRUE\",\n+           \"\"\"\n+ERROR COMP_INTERFACE IS ESMF BUT USE_ESMF_LIB IS NOT TRUE\n+  SET USE_ESMF_LIB to TRUE with:\n+    ./xmlchange -file env_build.xml -id USE_ESMF_LIB -value TRUE\n+\"\"\")\n+\n+    expect(mpilib != \"mpi-serial\" or use_esmf_lib != \"TRUE\",\n+           \"\"\"\n+ERROR MPILIB is mpi-serial and USE_ESMF_LIB IS TRUE\n+  MPILIB can only be used with an ESMF library built with mpiuni on\n+  Set USE_ESMF_LIB to FALSE with\n+    ./xmlchange -file env_build.xml -id USE_ESMF_LIB -val FALSE\n+  ---- OR ----\n+  Make sure the ESMF_LIBDIR used was built with mipuni (or change it to one that was)\n+  And comment out this if block in Tools/models_buildexe\n+\"\"\")\n+\n+    case.set_value(\"BUILD_COMPLETE\", \"FALSE\")\n+\n+    case.flush()\n+\n+###############################################################################\n+def build_libraries(exeroot, caseroot, cimeroot, libroot, sharedlibroot, compiler, mpilib, build_threaded, debug, lid, machines_file):\n+###############################################################################\n+\n+    if (mpilib == \"mpi-serial\"):\n+        for header_to_copy in glob.glob(os.path.join(cimeroot, \"externals/mct/mpi-serial/*.h\")):\n+            shutil.copy(header_to_copy, os.path.join(libroot, \"include\"))\n+\n+    debugdir = \"debug\" if debug else \"nodebug\"\n+\n+    threaddir = \"threads\" if os.environ[\"SMP\"] == \"TRUE\" or build_threaded == \"TRUE\" else \"nothreads\"\n+\n+    sharedpath = os.path.join(sharedlibroot, compiler, mpilib, debugdir, threaddir)\n+    os.environ[\"SHAREDPATH\"] = sharedpath\n+    shared_lib = os.path.join(sharedpath, \"lib\")\n+    shared_inc = os.path.join(sharedpath, \"include\")\n+    for shared_item in [shared_lib, shared_inc]:\n+        if (not os.path.exists(shared_item)):\n+            os.makedirs(shared_item)\n+\n+    libs = [\"mct\", \"gptl\", \"pio\", \"csm_share\"]\n+    logs = []\n+\n+    for lib in libs:\n+        full_lib_path = os.path.join(sharedpath, lib)\n+        if (not os.path.exists(full_lib_path)):\n+            os.makedirs(full_lib_path)\n+\n+        file_build = os.path.join(sharedpath, \"%s.bldlog.%s\" % (lib, lid))\n+        with open(file_build, \"w\") as fd:\n+            fd.write(\"Current env:\\n%s\" % \"\\n\".join([\"  %s = %s\" % (env, os.environ[env]) for env in sorted(os.environ)]))\n+\n+        my_file = os.path.join(os.path.dirname(machines_file), \"buildlib.%s\" % lib)\n+        stat = run_cmd(\"%s %s %s >> %s 2>&1\" % (my_file, sharedpath, caseroot, file_build), from_dir=exeroot, ok_to_fail=True)[0]\n+        expect(stat == 0, \"ERROR: buildlib.%s failed, cat %s\" % (lib, file_build))\n+        logs.append(file_build)\n+\n+    return logs\n+\n+###############################################################################\n+def build_model(case, build_threaded, exeroot, clm_config_opts, incroot,\n+                comp_atm,   comp_lnd,   comp_ice,   comp_ocn,   comp_glc,   comp_wav,   comp_rof,\n+                nthrds_atm, nthrds_lnd, nthrds_ice, nthrds_ocn, nthrds_glc, nthrds_wav, nthrds_rof, lid, caseroot, cimeroot):\n+###############################################################################\n+    config_atm_dir = os.path.dirname(case.get_value(\"CONFIG_ATM_FILE\"))\n+    config_lnd_dir = os.path.dirname(case.get_value(\"CONFIG_LND_FILE\"))\n+    config_ice_dir = os.path.dirname(case.get_value(\"CONFIG_ICE_FILE\"))\n+    config_ocn_dir = os.path.dirname(case.get_value(\"CONFIG_OCN_FILE\"))\n+    config_glc_dir = os.path.dirname(case.get_value(\"CONFIG_GLC_FILE\"))\n+    config_wav_dir = os.path.dirname(case.get_value(\"CONFIG_WAV_FILE\"))\n+    config_rof_dir = os.path.dirname(case.get_value(\"CONFIG_ROF_FILE\"))\n+\n+    # Also defines build order\n+    models_build_data = [(\"atm\", comp_atm, config_atm_dir, nthrds_atm),\n+                         (\"lnd\", comp_lnd, config_lnd_dir, nthrds_lnd),\n+                         (\"ice\", comp_ice, config_ice_dir, nthrds_ice),\n+                         (\"ocn\", comp_ocn, config_ocn_dir, nthrds_ocn),\n+                         (\"glc\", comp_glc, config_glc_dir, nthrds_glc),\n+                         (\"wav\", comp_wav, config_wav_dir, nthrds_wav),\n+                         (\"rof\", comp_rof, config_rof_dir, nthrds_rof)]\n+\n+    logs = []\n+    overall_smp = os.environ[\"SMP\"]\n+\n+    for model, comp, config_dir, nthrds in models_build_data:\n+        os.environ[\"MODEL\"] = model\n+        if (nthrds > 1 or build_threaded == \"TRUE\"):\n+            os.environ[\"SMP\"] = \"TRUE\"\n+        else:\n+            os.environ[\"SMP\"] = \"FALSE\"\n+","path":"scripts-python/case.build","position":280,"original_position":280,"commit_id":"eac282451d8101a6107ae23d8a79984937e73d87","original_commit_id":"eac282451d8101a6107ae23d8a79984937e73d87","user":{"login":"jedwards4b","id":6126104,"avatar_url":"https://avatars.githubusercontent.com/u/6126104?v=3","gravatar_id":"","url":"https://api.github.com/users/jedwards4b","html_url":"https://github.com/jedwards4b","followers_url":"https://api.github.com/users/jedwards4b/followers","following_url":"https://api.github.com/users/jedwards4b/following{/other_user}","gists_url":"https://api.github.com/users/jedwards4b/gists{/gist_id}","starred_url":"https://api.github.com/users/jedwards4b/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jedwards4b/subscriptions","organizations_url":"https://api.github.com/users/jedwards4b/orgs","repos_url":"https://api.github.com/users/jedwards4b/repos","events_url":"https://api.github.com/users/jedwards4b/events{/privacy}","received_events_url":"https://api.github.com/users/jedwards4b/received_events","type":"User","site_admin":false},"body":"clm4.0 build differently than clm4.5 and clm5.0, we need to support both cases.   ","created_at":"2016-02-12T00:33:31Z","updated_at":"2016-02-12T00:33:31Z","html_url":"https://github.com/ESMCI/cime/pull/61#discussion_r52691209","pull_request_url":"https://api.github.com/repos/ESMCI/cime/pulls/61","_links":{"self":{"href":"https://api.github.com/repos/ESMCI/cime/pulls/comments/52691209"},"html":{"href":"https://github.com/ESMCI/cime/pull/61#discussion_r52691209"},"pull_request":{"href":"https://api.github.com/repos/ESMCI/cime/pulls/61"}}},"pull_request":{"url":"https://api.github.com/repos/ESMCI/cime/pulls/61","id":59105574,"html_url":"https://github.com/ESMCI/cime/pull/61","diff_url":"https://github.com/ESMCI/cime/pull/61.diff","patch_url":"https://github.com/ESMCI/cime/pull/61.patch","issue_url":"https://api.github.com/repos/ESMCI/cime/issues/61","number":61,"state":"open","locked":false,"title":"Major progress converting perl to python: case.build and check_input_…","user":{"login":"jgfouca","id":7292036,"avatar_url":"https://avatars.githubusercontent.com/u/7292036?v=3","gravatar_id":"","url":"https://api.github.com/users/jgfouca","html_url":"https://github.com/jgfouca","followers_url":"https://api.github.com/users/jgfouca/followers","following_url":"https://api.github.com/users/jgfouca/following{/other_user}","gists_url":"https://api.github.com/users/jgfouca/gists{/gist_id}","starred_url":"https://api.github.com/users/jgfouca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jgfouca/subscriptions","organizations_url":"https://api.github.com/users/jgfouca/orgs","repos_url":"https://api.github.com/users/jgfouca/repos","events_url":"https://api.github.com/users/jgfouca/events{/privacy}","received_events_url":"https://api.github.com/users/jgfouca/received_events","type":"User","site_admin":false},"body":"…data\r\n\r\nThings to note:\r\n1) Machines will now need to specific python information in the modules\r\nsection of config_machines.xml\r\n2) Fix a few mistakes in config_component.xml, errant \">\" character\r\n3) Implemented Case class from perl-OO branch\r\n       -This should replace xmlquery/xmlchange\r\n4) Had to get rid of XML version in xmlchange. This was causing XML\r\nfiles to diff between locked files. This restriction can go away\r\nonce everything is using Case.\r\n5) New python tools that need to be in caseroot are symlinked instead\r\nof copied. This makes it so all the python/utils don't have to be copied.\r\n6) Add classes for all the env*.xml files. They all inherit from a common\r\nbase class to reduce code duplication.\r\n7) Add new env_module module to replace ModuleLoader.pm","created_at":"2016-02-11T22:38:07Z","updated_at":"2016-02-12T00:33:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":{"login":"jedwards4b","id":6126104,"avatar_url":"https://avatars.githubusercontent.com/u/6126104?v=3","gravatar_id":"","url":"https://api.github.com/users/jedwards4b","html_url":"https://github.com/jedwards4b","followers_url":"https://api.github.com/users/jedwards4b/followers","following_url":"https://api.github.com/users/jedwards4b/following{/other_user}","gists_url":"https://api.github.com/users/jedwards4b/gists{/gist_id}","starred_url":"https://api.github.com/users/jedwards4b/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jedwards4b/subscriptions","organizations_url":"https://api.github.com/users/jedwards4b/orgs","repos_url":"https://api.github.com/users/jedwards4b/repos","events_url":"https://api.github.com/users/jedwards4b/events{/privacy}","received_events_url":"https://api.github.com/users/jedwards4b/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/ESMCI/cime/pulls/61/commits","review_comments_url":"https://api.github.com/repos/ESMCI/cime/pulls/61/comments","review_comment_url":"https://api.github.com/repos/ESMCI/cime/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ESMCI/cime/issues/61/comments","statuses_url":"https://api.github.com/repos/ESMCI/cime/statuses/eac282451d8101a6107ae23d8a79984937e73d87","head":{"label":"ESMCI:jgfouca/more_xml","ref":"jgfouca/more_xml","sha":"eac282451d8101a6107ae23d8a79984937e73d87","user":{"login":"ESMCI","id":10676238,"avatar_url":"https://avatars.githubusercontent.com/u/10676238?v=3","gravatar_id":"","url":"https://api.github.com/users/ESMCI","html_url":"https://github.com/ESMCI","followers_url":"https://api.github.com/users/ESMCI/followers","following_url":"https://api.github.com/users/ESMCI/following{/other_user}","gists_url":"https://api.github.com/users/ESMCI/gists{/gist_id}","starred_url":"https://api.github.com/users/ESMCI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ESMCI/subscriptions","organizations_url":"https://api.github.com/users/ESMCI/orgs","repos_url":"https://api.github.com/users/ESMCI/repos","events_url":"https://api.github.com/users/ESMCI/events{/privacy}","received_events_url":"https://api.github.com/users/ESMCI/received_events","type":"Organization","site_admin":false},"repo":{"id":31605662,"name":"cime","full_name":"ESMCI/cime","owner":{"login":"ESMCI","id":10676238,"avatar_url":"https://avatars.githubusercontent.com/u/10676238?v=3","gravatar_id":"","url":"https://api.github.com/users/ESMCI","html_url":"https://github.com/ESMCI","followers_url":"https://api.github.com/users/ESMCI/followers","following_url":"https://api.github.com/users/ESMCI/following{/other_user}","gists_url":"https://api.github.com/users/ESMCI/gists{/gist_id}","starred_url":"https://api.github.com/users/ESMCI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ESMCI/subscriptions","organizations_url":"https://api.github.com/users/ESMCI/orgs","repos_url":"https://api.github.com/users/ESMCI/repos","events_url":"https://api.github.com/users/ESMCI/events{/privacy}","received_events_url":"https://api.github.com/users/ESMCI/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ESMCI/cime","description":"Common Infrastructure for Modeling the Earth","fork":false,"url":"https://api.github.com/repos/ESMCI/cime","forks_url":"https://api.github.com/repos/ESMCI/cime/forks","keys_url":"https://api.github.com/repos/ESMCI/cime/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ESMCI/cime/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ESMCI/cime/teams","hooks_url":"https://api.github.com/repos/ESMCI/cime/hooks","issue_events_url":"https://api.github.com/repos/ESMCI/cime/issues/events{/number}","events_url":"https://api.github.com/repos/ESMCI/cime/events","assignees_url":"https://api.github.com/repos/ESMCI/cime/assignees{/user}","branches_url":"https://api.github.com/repos/ESMCI/cime/branches{/branch}","tags_url":"https://api.github.com/repos/ESMCI/cime/tags","blobs_url":"https://api.github.com/repos/ESMCI/cime/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ESMCI/cime/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ESMCI/cime/git/refs{/sha}","trees_url":"https://api.github.com/repos/ESMCI/cime/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ESMCI/cime/statuses/{sha}","languages_url":"https://api.github.com/repos/ESMCI/cime/languages","stargazers_url":"https://api.github.com/repos/ESMCI/cime/stargazers","contributors_url":"https://api.github.com/repos/ESMCI/cime/contributors","subscribers_url":"https://api.github.com/repos/ESMCI/cime/subscribers","subscription_url":"https://api.github.com/repos/ESMCI/cime/subscription","commits_url":"https://api.github.com/repos/ESMCI/cime/commits{/sha}","git_commits_url":"https://api.github.com/repos/ESMCI/cime/git/commits{/sha}","comments_url":"https://api.github.com/repos/ESMCI/cime/comments{/number}","issue_comment_url":"https://api.github.com/repos/ESMCI/cime/issues/comments{/number}","contents_url":"https://api.github.com/repos/ESMCI/cime/contents/{+path}","compare_url":"https://api.github.com/repos/ESMCI/cime/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ESMCI/cime/merges","archive_url":"https://api.github.com/repos/ESMCI/cime/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ESMCI/cime/downloads","issues_url":"https://api.github.com/repos/ESMCI/cime/issues{/number}","pulls_url":"https://api.github.com/repos/ESMCI/cime/pulls{/number}","milestones_url":"https://api.github.com/repos/ESMCI/cime/milestones{/number}","notifications_url":"https://api.github.com/repos/ESMCI/cime/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ESMCI/cime/labels{/name}","releases_url":"https://api.github.com/repos/ESMCI/cime/releases{/id}","deployments_url":"https://api.github.com/repos/ESMCI/cime/deployments","created_at":"2015-03-03T15:33:00Z","updated_at":"2016-01-13T00:35:02Z","pushed_at":"2016-02-12T00:13:02Z","git_url":"git://github.com/ESMCI/cime.git","ssh_url":"git@github.com:ESMCI/cime.git","clone_url":"https://github.com/ESMCI/cime.git","svn_url":"https://github.com/ESMCI/cime","homepage":"","size":14230,"stargazers_count":2,"watchers_count":2,"language":"FORTRAN","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":29,"mirror_url":null,"open_issues_count":12,"forks":29,"open_issues":12,"watchers":2,"default_branch":"master"}},"base":{"label":"ESMCI:master","ref":"master","sha":"bbe11687d2e9fc4d19469168750c6b0301b9105a","user":{"login":"ESMCI","id":10676238,"avatar_url":"https://avatars.githubusercontent.com/u/10676238?v=3","gravatar_id":"","url":"https://api.github.com/users/ESMCI","html_url":"https://github.com/ESMCI","followers_url":"https://api.github.com/users/ESMCI/followers","following_url":"https://api.github.com/users/ESMCI/following{/other_user}","gists_url":"https://api.github.com/users/ESMCI/gists{/gist_id}","starred_url":"https://api.github.com/users/ESMCI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ESMCI/subscriptions","organizations_url":"https://api.github.com/users/ESMCI/orgs","repos_url":"https://api.github.com/users/ESMCI/repos","events_url":"https://api.github.com/users/ESMCI/events{/privacy}","received_events_url":"https://api.github.com/users/ESMCI/received_events","type":"Organization","site_admin":false},"repo":{"id":31605662,"name":"cime","full_name":"ESMCI/cime","owner":{"login":"ESMCI","id":10676238,"avatar_url":"https://avatars.githubusercontent.com/u/10676238?v=3","gravatar_id":"","url":"https://api.github.com/users/ESMCI","html_url":"https://github.com/ESMCI","followers_url":"https://api.github.com/users/ESMCI/followers","following_url":"https://api.github.com/users/ESMCI/following{/other_user}","gists_url":"https://api.github.com/users/ESMCI/gists{/gist_id}","starred_url":"https://api.github.com/users/ESMCI/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ESMCI/subscriptions","organizations_url":"https://api.github.com/users/ESMCI/orgs","repos_url":"https://api.github.com/users/ESMCI/repos","events_url":"https://api.github.com/users/ESMCI/events{/privacy}","received_events_url":"https://api.github.com/users/ESMCI/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ESMCI/cime","description":"Common Infrastructure for Modeling the Earth","fork":false,"url":"https://api.github.com/repos/ESMCI/cime","forks_url":"https://api.github.com/repos/ESMCI/cime/forks","keys_url":"https://api.github.com/repos/ESMCI/cime/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ESMCI/cime/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ESMCI/cime/teams","hooks_url":"https://api.github.com/repos/ESMCI/cime/hooks","issue_events_url":"https://api.github.com/repos/ESMCI/cime/issues/events{/number}","events_url":"https://api.github.com/repos/ESMCI/cime/events","assignees_url":"https://api.github.com/repos/ESMCI/cime/assignees{/user}","branches_url":"https://api.github.com/repos/ESMCI/cime/branches{/branch}","tags_url":"https://api.github.com/repos/ESMCI/cime/tags","blobs_url":"https://api.github.com/repos/ESMCI/cime/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ESMCI/cime/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ESMCI/cime/git/refs{/sha}","trees_url":"https://api.github.com/repos/ESMCI/cime/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ESMCI/cime/statuses/{sha}","languages_url":"https://api.github.com/repos/ESMCI/cime/languages","stargazers_url":"https://api.github.com/repos/ESMCI/cime/stargazers","contributors_url":"https://api.github.com/repos/ESMCI/cime/contributors","subscribers_url":"https://api.github.com/repos/ESMCI/cime/subscribers","subscription_url":"https://api.github.com/repos/ESMCI/cime/subscription","commits_url":"https://api.github.com/repos/ESMCI/cime/commits{/sha}","git_commits_url":"https://api.github.com/repos/ESMCI/cime/git/commits{/sha}","comments_url":"https://api.github.com/repos/ESMCI/cime/comments{/number}","issue_comment_url":"https://api.github.com/repos/ESMCI/cime/issues/comments{/number}","contents_url":"https://api.github.com/repos/ESMCI/cime/contents/{+path}","compare_url":"https://api.github.com/repos/ESMCI/cime/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ESMCI/cime/merges","archive_url":"https://api.github.com/repos/ESMCI/cime/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ESMCI/cime/downloads","issues_url":"https://api.github.com/repos/ESMCI/cime/issues{/number}","pulls_url":"https://api.github.com/repos/ESMCI/cime/pulls{/number}","milestones_url":"https://api.github.com/repos/ESMCI/cime/milestones{/number}","notifications_url":"https://api.github.com/repos/ESMCI/cime/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ESMCI/cime/labels{/name}","releases_url":"https://api.github.com/repos/ESMCI/cime/releases{/id}","deployments_url":"https://api.github.com/repos/ESMCI/cime/deployments","created_at":"2015-03-03T15:33:00Z","updated_at":"2016-01-13T00:35:02Z","pushed_at":"2016-02-12T00:13:02Z","git_url":"git://github.com/ESMCI/cime.git","ssh_url":"git@github.com:ESMCI/cime.git","clone_url":"https://github.com/ESMCI/cime.git","svn_url":"https://github.com/ESMCI/cime","homepage":"","size":14230,"stargazers_count":2,"watchers_count":2,"language":"FORTRAN","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":29,"mirror_url":null,"open_issues_count":12,"forks":29,"open_issues":12,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ESMCI/cime/pulls/61"},"html":{"href":"https://github.com/ESMCI/cime/pull/61"},"issue":{"href":"https://api.github.com/repos/ESMCI/cime/issues/61"},"comments":{"href":"https://api.github.com/repos/ESMCI/cime/issues/61/comments"},"review_comments":{"href":"https://api.github.com/repos/ESMCI/cime/pulls/61/comments"},"review_comment":{"href":"https://api.github.com/repos/ESMCI/cime/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ESMCI/cime/pulls/61/commits"},"statuses":{"href":"https://api.github.com/repos/ESMCI/cime/statuses/eac282451d8101a6107ae23d8a79984937e73d87"}}}}