Skip to content
Snippets Groups Projects
This project is mirrored from https://git.savannah.gnu.org/git/guix/guix-cuirass.git/. Pull mirroring updated .
  1. Apr 21, 2021
  2. Apr 14, 2021
  3. Apr 08, 2021
    • Mathieu Othacehe's avatar
      Add specification period support. · d86c4ede
      Mathieu Othacehe authored
      * src/sql/upgrade-4.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Specifications)[period]: New field.
      * src/cuirass/base.scm (process-specs): Honor the specification period.
      * src/cuirass/database.scm (db-get-time-since-previous-build): Rename it into ...
      (db-get-time-since-previous-eval): ... this new procedure.
      * src/cuirass/specification.scm (<specification>)[period]: New field.
      (specification->sexp, sexp->specification): Adapt accordingly.
      * src/cuirass/templates.scm (specification-edit): Ditto.
      * tests/database.scm ("db-get-time-since-previous-build"): Remame it into ...
      ("db-get-time-since-previous-eval"): ... this new procedure.
      Unverified
      d86c4ede
    • Mathieu Othacehe's avatar
      Use the Build id as Jobs foreign key. · 2c3440de
      Mathieu Othacehe authored
      Join Build and Jobs tables using the build id instead of the build derivation
      to speed queries.
      
      * src/sql/upgrade-3.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Jobs)[derivation]: Replace it by ...
      [build]: this new column.
      * src/cuirass/database.scm (db-add-job, db-get-jobs): Adapt them.
      Unverified
      2c3440de
  4. Apr 06, 2021
    • Mathieu Othacehe's avatar
      Add jobs support. · bba13114
      Mathieu Othacehe authored
      Each evaluation registration produces a list of new jobs. Until now, only the
      jobs which build outputs were not stored in the "Outputs" table were added to
      the "Builds" table.
      
      It means that Cuirass looses track of the job list associated to a given
      evaluation.  This is problematic to provide the overall build status of an
      evaluation or to find the evaluation providing the best build coverage.
      
      Add a new "Jobs" table that stores the job list of each evaluation.  Also add
      a new "/api/jobs" API to consult it.
      
      * src/sql/upgrade-2.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Jobs): New table.
      * src/cuirass/database.scm (db-add-job, db-get-jobs): New procedures.
      (db-register-builds): Call db-add-job.
      * src/cuirass/http.scm (url-handler): New "/api/jobs" route.
      * tests/database.scm ("db-get-jobs", "db-get-jobs names"): New tests.
      * doc/cuirass.texi (Web API, Database): Document it.
      Unverified
      bba13114
  5. Mar 11, 2021
  6. Mar 10, 2021
  7. Mar 05, 2021
  8. Feb 22, 2021
  9. Feb 21, 2021
    • Mathieu Othacehe's avatar
      Add notifications support. · 4495e085
      Mathieu Othacehe authored
      * src/cuirass/mail.scm: New file.
      * src/cuirass/notification.scm: New file.
      * src/sql/upgrade-5.sql: New file.
      * Makefile.am (dist_pkgmodule_DATA, dist_sql_DATA): Add them.
      * src/schema.sql (Specifications)[notifications]: New field.
      * bin/cuirass.in: Wrap inside the "with-notification" macro.
      * src/cuirass/remote-server.scm (remote-server): Ditto.
      * src/cuirass/database.scm (db-add-specification): Add notifications field.
      (db-get-specifications): Ditto.
      (db-update-build-status!): Send notifications.
      * tests/mail.sh: New file.
      * tests/database.scm (mu-debug, tmp-mail): New variables.
      (mailer): New procedure.
      (example-spec): Add an email notification.
      ("mail-notification"): New test case.
      Unverified
      4495e085
  10. Feb 02, 2021
    • Mathieu Othacehe's avatar
      Move weather field to database. · 4f4d7ff7
      Mathieu Othacehe authored
      * src/sql/upgrade-4.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds)[weather]: New field.
      (Builds_weather_evaluation): New index.
      * src/cuirass/database.scm (db-get-last-status): New procedure.
      (db-update-build-status!): Use it and update the new weather field.
      (db-get-builds): Adapt it.
      * tests/http.scm (build-query-result): Ditto.
      Unverified
      4f4d7ff7
  11. Feb 01, 2021
    • Mathieu Othacehe's avatar
      Introduce build "last_status" field. · 74c1a94a
      Mathieu Othacehe authored
      * src/sql/upgrade-3.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds)[last_status]: New field.
      * src/cuirass/database.scm (db-update-build-status!): Honor it.
      (db-get-builds): Return it.
      * tests/database.scm ("db-update-build-status!"): New test.
      Unverified
      74c1a94a
  12. Jan 30, 2021
    • Mathieu Othacehe's avatar
      Add machine field to Worker table. · 1271b117
      Mathieu Othacehe authored
      * src/sql/upgrade-2.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Workers): Add "machine field".
      * src/cuirass/database.scm (db-get-builds): Return "worker" field.
      (db-add-worker): Honor new "machine" field.
      (db-get-workers): Ditto.
      * src/cuirass/remote-worker.scm (remote-worker): Adapt it.
      * src/cuirass/remote.scm (<worker>)[machine]: New field.
      (worker-machine): New procedure.
      (worker->sexp, sexp->worker): Adapt accordingly.
      (generate-worker-name): Ditto.
      * tests/database.scm (%dummy-worker): Add "machine" field.
      Unverified
      1271b117
  13. Jan 11, 2021
  14. Jan 07, 2021
    • Mathieu Othacehe's avatar
      Add remote build support. · ca7a7ca9
      Mathieu Othacehe authored
      * src/cuirass/remote.scm: New file.
      * src/cuirass/remote-server.scm: New file.
      * src/cuirass/remote-worker.scm: New file.
      * bin/remote-server.in: New file.
      * bin/remote-worker.in: New file.
      * Makefile.am (bin_SCRIPTS): Add new binaries,
      (dist_pkgmodule_DATA): add new files,
      (EXTRA_DIST): add new binaries,
      (bin/remote-server, bin/remote-worker): new targets.
      * .gitignore: Add new binaries.
      * bin/cuirass.in (%options): Add "--build-remote" option,
      (show-help): document it,
      (main): honor it.
      * src/cuirass/base.scm (with-build-offload-thread): New macro,
      (%build-remote?, %build-offload-channel): new parameters,
      (make-build-offload-thread): new procedure,
      (build-derivations/offload): new procedure,
      (restart-builds): use it to offload builds when %build-remote? is set,
      (build-packages): ditto.
      Unverified
      ca7a7ca9
  15. Dec 09, 2020
    • Mathieu Othacehe's avatar
      Save the build machine. · 3673fc31
      Mathieu Othacehe authored
      * src/sql/upgrade-17.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds): Add "machine" field.
      * src/cuirass/database.scm (db-update-build-machine!): New procedure.
      * src/cuirass/base.scm (handle-build-event): Use it to record the machine
      performing the build.
      Unverified
      3673fc31
  16. Nov 25, 2020
    • Mathieu Othacehe's avatar
      Use specification for periodic builds. · fd432b8e
      Mathieu Othacehe authored
      When the periodic argument is passed to a job, it will be registered only if
      the time difference between the current time and the registration time of the
      last build is greater than the specified period. Make sure that the last job
      that is searched is part of the same specification.
      
      * src/sql/upgrade-16.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds_job_name_timestamp): New index.
      * src/cuirass/database.scm (db-get-time-since-previous-build): Add
      "specification" argument,
      (db-register-builds): pass it.
      Unverified
      fd432b8e
  17. Oct 07, 2020
    • Mathieu Othacehe's avatar
      Optimize build query. · cb2c4e3d
      Mathieu Othacehe authored
      Make sure that db-get-builds only performs one query and add build products to
      the result. Also add indexes so that all "order" filters are covered.
      
      Limit the maximum of build objects returned in "/api/latestbuilds" and
      "/api/queue" to 1000.
      
      Fixes: <https://issues.guix.gnu.org/43826>.
      
      * src/sql/upgrade-15.sql: New file.
      * Makefile (dist_sql_DATA): Add it.
      * src/cuirass/database.scm (db-get-builds-by-search): Add "buildproducts" to
      the returned build objects.
      (db-get-builds): Remove unused filters. Join Outputs and BuildProducts table
      in the query. Add "buildproducts" to the returned build objects.
      * src/cuirass/http.scm (build->hydra-build): Use "buildproducts" from
      "db-get-builds" procedure.
      (url-handler): Forbid limit parameters greater than 1000 and use
      "buildproducts" from "db-get-builds" procedure.
      * src/schema.sql (Builds_stoptime, Builds_stoptime_id, Builds_status_ts_id):
      New indexes.
      Unverified
      cb2c4e3d
    • Mathieu Othacehe's avatar
      Add index on builds table. · 04e95afa
      Mathieu Othacehe authored
      * src/sql/upgrade-14.sql: New file.
      * src/schema.sql (dist_sql_DATA): Add it.
      * src/schema.sql (Builds_timestamp_stoptime): New index.
      Unverified
      04e95afa
  18. Oct 05, 2020
    • Mathieu Othacehe's avatar
      Do not allow full search on nix_name field. · 930c2f31
      Mathieu Othacehe authored
      Searching for something like "%a%" can take up to ten minutes. Remove the
      usage of special characters "^" and "$" in queries. Instead, always add a "%"
      character at the end of the query. Also add an index on the nix_name field.
      
      Fixes: <https://issues.guix.gnu.org/43791>.
      
      * src/sql/upgrade-13.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds_nix_name): New index.
      * src/cuirass/database.scm (query->bind-arguments): Remove support for "^" and
      "$" special characters. Instead make sure that the query does not contain any
      "%" character and prefix the query by "%".
      (db-get-builds-by-search): Remove an useless query nesting level.
      * src/cuirass/templates.scm (search-form): Adapt the search help message
      accordingly.
      Unverified
      930c2f31
  19. Sep 28, 2020
    • Mathieu Othacehe's avatar
      Optimize database queries. · 0ffcb80e
      Mathieu Othacehe authored
      Avoid full scans of Builds table that can be very time consuming by rewriting
      some queries and using new indexes.
      
      * src/sql/upgrade-12.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      * src/schema.sql (Builds_evaluation_index, Evaluations_status_index,
      Evaluations_specification_index): New indexes.
      * src/cuirass/database.scm (db-get-evaluations-build-summary,
      db-get-evaluation-summary): Rewrite queries to avoid full Builds table scan
      and use the new indexes.
      Unverified
      0ffcb80e
  20. Sep 14, 2020
    • Mathieu Othacehe's avatar
      Add metrics support. · cf11b73d
      Mathieu Othacehe authored
      * Makefile.am: Add "upgrade-11.sql", "chart.js" and "metrics.js".
      * bin/cuirass.in (main): Add 'metrics fiber.
      * src/cuirass/http.scm (%file-white-list): Add "js/chart.js".
      (url-handler): Add "/metrics" route.
      * src/cuirass/metrics.scm: New file.
      * src/cuirass/templates.scm (html-page): Add a "Global metrics" sub-menu to
      "Status" dropdown menu.
      (make-line-chart, global-metrics-content): New procedures.
      * src/schema.sql (Metrics): New table.
      * src/sql/upgrade-11.sql: New file.
      * src/static/js/chart.js: New file.
      Unverified
      cf11b73d
  21. Sep 10, 2020
    • Mathieu Othacehe's avatar
      Add a status field to Evaluation table. · f5b0d393
      Mathieu Othacehe authored
      The Evaluation table currently has an 'in_progress' field. Distinction between
      succeeded and failed evaluations are based on the presence of Builds records
      for the evaluation. It it also not possible to distinguish aborted evaluations
      from failed evaluations.
      
      Rename 'in_progress' field to 'status'. The 'status' field can be equal to
      'started', 'succeeded', 'failed' or 'aborted'.
      
      * src/cuirass/database.scm (evaluation-status): New exported enumeration.
      (db-set-evaluations-done, db-set-evaluation-done): Remove them.
      (db-abort-pending-evaluations, db-set-evaluation-status): New exported procedures.
      (db-add-evaluation, db-get-builds, db-get-evaluations,
      db-get-evaluations-build-summary, db-get-evaluation-summary): Adapt to use
      'status' field instead of 'in_progress' field.
      * src/cuirass/templates.scm (evaluation-badges): Ditto.
      * src/schema.sql (Evaluations): Rename 'in_progress' field to 'status'.
      * src/sql/upgrade-10.sql: New file.
      * bin/cuirass.in (main): Use "db-abort-pending-evaluations" instead of
      "db-set-evaluations-done".
      * src/cuirass/base.scm (evaluate): Use "db-set-evaluation-status" instead of
      "db-set-evaluations-done".
      (build-packages): Use "db-set-evaluation-status" instead of
      "db-set-evaluation-done".
      * tests/database.scm (sqlite-exec): Adapt accordingly.
      * tests/http.scm (evaluations-query-result): Ditto.
      Unverified
      f5b0d393
  22. Sep 06, 2020
    • Mathieu Othacehe's avatar
      Save evaluations and checkouts timestamps. · 154232bc
      Mathieu Othacehe authored
      src/cuirass/base.scm (fetch-input): Add the commit timestamp to the returned
      association list,
      (process-specs): Pass a timestamp taken at procedure start and another one
      taken after inputs are fetched to "db-add-evaluation" procedure. Once the
      evaluation is over, call "db-set-evaluation-time" to save the evaluation
      completion time.
      src/cuirass/database.scm (db-set-evaluation-time): New procedure,
      (db-add-checkout): Handle the "timestamp" field,
      (db-add-evaluation): add "checkouttime" and "evaltime" arguments. Modify the
      associated SQL query accordingly.
      (db-get-builds): Use "Builds.timestamp" instead of "timestamp" as this field
      is also part of the Evaluations table.
      src/schema.sql (Checkouts): Add "timestamp" field,
      (Evaluations): add "timestamp", "checkouttime" and "evaltime" fields.
      src/sql/upgrade-9.sql: New file.
      tests/database.scm (sqlite-exec): Adapt Evaluations table insertions to include
      "timestamp", "checkouttime" and "evaltime" required fields.
      Unverified
      154232bc
  23. Jun 13, 2020
    • Christopher Baines's avatar
      sql: Add a couple of indexes. · 7f71d9b7
      Christopher Baines authored
      Remove the Builds_index from the schema, as it would have been removed in
      error by the upgrade-6 upgrade.  Add a specific index on the Builds status
      field, as this helps with db-get-builds queries, and add an index on the
      Outputs derivation field, as this helps with the db-get-outputs part of
      db-get-builds.
      
      * src/sql/upgrade-8.sql: New file.
      * src/schema.sql: Update accordingly.
      7f71d9b7
  24. Jun 10, 2020
    • Mathieu Othacehe's avatar
      Add support for build products downloading. · f44618fc
      Mathieu Othacehe authored
      * src/sql/upgrade-7.sql: New file.
      * Makefile.am: Add it.
      * src/cuirass/base.scm (create-build-outputs): New procedure,
      (build-packages): call it,
      (process-spec): add the new spec argument and pass it to create-build-outputs.
      * src/cuirass/database.scm (db-add-build-product, db-get-build-product-path,
      db-get-build-products): New exported procedures.
      * src/cuirass/http.scm (respond-static-file): Move file sending to ...
      (respond-file): ... this new procedure,
      (url-handler): add a new "download/<id>" route, serving the requested file
      with the new respond-file procedure. Also gather build products and pass them
      to "build-details" for "build/<id>/details" route.
      * src/cuirass/templates.scm (build-details): Honor the new "products" argument
      to display all the build products associated to the given build.
      * src/schema.sql (BuildProducts): New table,
      (Specifications)[build_outputs]: new field.
      * tests/database.scm: Add empty build-outputs spec.
      * tests/http.scm: Ditto.
      * examples/guix-jobs.scm: Ditto.
      * examples/hello-git.scm: Ditto.
      * examples/hello-singleton.scm: Ditto.
      * examples/hello-subset.scm: Ditto.
      * examples/random.scm: Ditto.
      * doc/cuirass.texi (overview): Document it.
      Unverified
      f44618fc
  25. Jan 26, 2020
    • Christopher Baines's avatar
      Alter the Builds table to have an id field · fa412cdb
      Christopher Baines authored
      The internal rowid's are used for builds as you can request builds by using
      the rowid in the URL.
      
      The motivation here is to enable running VACUUM operations in SQLite, without
      risking the rowid's for Builds changing. It would be bad if they change, as
      they're used in the URL's for builds.
      
      * src/schema.sql (Builds): Add id column.
      * src/curiass/dataabse.scm (db-add-build): Change PRIMARYKEY constraint to
      UNIQUE constraint.
      * src/sql/upgrade-6.sql: New file.
      * Makefile.am (dist_sql_DATA): Add it.
      fa412cdb
  26. Jan 16, 2020
    • Christopher Baines's avatar
      Support publishing build events · 12def48b
      Christopher Baines authored
      Add a table to store events, which have a type and a JSON blob. These can be
      used to record changes, this commit inserts events when new builds are
      created, and when the status of builds change.
      
      The EventsOutbox table is then used to track when events have been sent
      out. This is done through the new cuirass-send-events script.
      
      * Makefile.am (bin_SCRIPTS): Add bin/cuirass-send-events.
      .gitignore: Add bin/cuirass-send-events.
      (dist_pkgmodule_DATA): Add src/cuirass/send-events.scm.
      (dist_sql_DATA): Add src/sql/upgrade-5.sql.
      (EXTRA_DIST): bin/cuirass-send-events.in.
      (bin/cuirass-send-events): New rule.
      * bin/cuirass-send-events.in: New file.
      * src/cuirass/send-events.scm: New file.
      * src/sql/upgrade-5.sql: New file.
      * src/cuirass/database.scm (changes-count): New procedure.
      (db-update-build-status!): Call db-add-event after updating the build status.
      (db-add-event): New procedure.
      (db-add-build): Insert an event when a new build is inserted.
      (db-delete-events-with-ids-<=-to): New procedure.
      * src/schema.sql (Events): New table.
      12def48b
  27. Sep 30, 2018
    • Clément Lassieur's avatar
      database: Add builds only if one of their outputs is new. · 4e661552
      Clément Lassieur authored
      * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-4.sql'.
      * src/cuirass/database.scm (db-add-output): New procedure.
      (db-add-build): Call DB-ADD-OUTPUT, rollback the transaction and return #f if
      DB-ADD-OUTPUT returned an empty list.
      * src/schema.sql (Outputs): Set 'path' as primary key, instead of 'derivation,
      name'.
      * src/sql/upgrade-4.sql: New file with SQL queries to upgrade the database.
      * tests/database.scm (make-dummy-build): Use the #:OUTPUTS key.  Get default
      OUTPUTS to depend on DRV.
      ("db-add-build-with-fixed-output"): New test.
      Unverified
      4e661552
  28. Aug 27, 2018
    • Clément Lassieur's avatar
      database: Add a Checkouts table. · 8d40c491
      Clément Lassieur authored
      It is used to know when a new evaluation must be triggered and to display
      input changes.
      
      * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-3.sql'.
      * bin/cuirass.in (main): Call DB-SET-EVALUATION-DONE at startup to clear
      'in-progress' evaluations.
      * bin/evaluate.in (input-checkout, format-checkouts): Rename '#:name' to
      '#:input'.
      * doc/cuirass.texi (Stamps): Remove section.
      (Checkouts): New section.
      * src/cuirass/base.scm (fetch-input, fetch-inputs, compile-checkouts): Rename
      '#:name' to '#:input'.
      (evaluate): Remove the COMMITS argument.  Add an EVAL-ID argument.  Don't call
      DB-ADD-EVALUATION because it was called sooner.  Remove the EVAL-ID argument
      to AUGMENT-JOB because it's a closure.
      (build-packages): Add an EVAL-ID argument.  Call DB-SET-EVALUATION-DONE once
      all the derivations are registered.
      (process-specs): Replace the stamping mechanism by the primary key constraint
      of the Checkouts table: call "evaluate" only when DB-ADD-EVALUATION is true,
      which means that at least one checkout was added.  Change the EVALUATE and
      BUILD-PACKAGES arguments accordingly.
      * src/cuirass/database.scm (db-add-stamp, db-get-stamp): Remove procedures.
      (db-set-evaluations-done, db-set-evaluation-done): New exported procedure.
      (db-add-checkout): New procedure that returns #f if a checkout with the same
      revision already exists.
      (db-add-evaluation): Replace the EVAL argument with a SPEC-NAME and a
      CHECKOUTS arguments.  Insert the evaluation only if at least one checkout was
      inserted.  Return #f otherwise.
      (db-get-checkouts): New procedure.
      (db-get-evaluations, db-get-evaluations-build-summary): Handle the
      'in_progress' column, remove the 'commits' column.  Return the result of
      DB-GET-CHECKOUTS as part of the evaluation.
      * src/cuirass/templates.scm (input-changes, evaluation-badges): New
      procedures.
      (evaluation-info-table): Rename "Commits" to "Input changes".  Use
      INPUT-CHANGES to display the input changes that triggered the evaluation.  Use
      EVALUATION-BADGES to display a message indicating that the evaluation is in
      progress.
      * src/schema.sql (Stamps): Remove table.
      (Checkouts): New table.
      (Evaluations): Remove the 'commits' column.  Add an 'in_progress' column.
      * src/sql/upgrade-3.sql: New file with SQL queries to upgrade the database.
      * tests/database.scm (make-dummy-eval): Remove procedure.
      (make-dummy-checkouts): New procedure.
      ("sqlite-exec"): Remove the 'commits' column.  Add the 'in_progress' column.
      ("db-update-build-status!", "db-get-builds", "db-get-pending-derivations"):
      Update the arguments of DB-ADD-EVALUATION accordingly.
      * tests/http.scm (hash-table=?): Add support for lists of hash tables.
      (evaluations-query-result): Replace '#:commits' with '#:checkouts'.  Return a
      list instead of returning one element, for symmetry.
      ("fill-db"): Add a new input so that the second checkout can refer to it.
      Replace EVALUATION1 and EVALUATION2 with CHECKOUTS1 and CHECKOUTS2.  Update
      the arguments of DB-ADD-EVALUATION accordingly.
      ("/api/queue?nr=100"): Take the CAR of the EVALUATIONS-QUERY-RESULT list to
      make it symmetrical with the other argument of HASH-TABLE=?.
      Unverified
      8d40c491
  29. Aug 17, 2018
    • Clément Lassieur's avatar
      database: Merge Derivations into Builds table. · 4db99f64
      Clément Lassieur authored
      Fixes <https://bugs.gnu.org/32190>.
      
      * Makefile.am (dist_sql_DATA): Add 'src/sql/upgrade-2.sql'.
      * doc/cuirass.texi (Derivations): Remove section.
      (Builds): Update accordingly.  Add columns from the Derivations table.
      (Outputs): Replace 'id' with 'derivation'.
      * src/cuirass/base.scm (evaluate): Don't add jobs to the Derivations table.
      (build-packages): Add columns that were in the Derivations table before.  Only
      build the derivations that were successfully registered, that is, those that
      didn't exist in the Builds table.  Give a derivation instead of a build id to
      DB-GET-BUILD.  Compute the number of failed jobs based on the derivations that
      were added to the table, instead of the jobs.
      * src/cuirass/database.scm (db-add-derivation, db-get-derivation): Remove
      exported procedures.
      (db-add-build): Catch SQLITE_CONSTRAINT_PRIMARYKEY error, which means that two
      jobs produced the same derivation, and return #f in that case.  Add columns
      that were in the Derivations table before.  Use 'derivation' as primary key
      for the Outputs table.
      (db-get-outputs): Use 'derivation' as identifier, instead of 'build-id'.
      (filters->order): Replace 'id' with 'rowid'.
      (db-get-builds): Add a 'derivation' filter.  Replace 'id' with 'rowid'.
      Remove the 'INNER JOIN Derivations'.  Replace Derivations with Builds.  Return
      'derivation' in first position to make it clear that it's the primary key.
      Pass DERIVATION instead of ID to DB-GET-OUTPUTS.
      (db-get-build): Allow to take a derivation as argument.  Use NUMBER? to
      differentiate between derivations and ids.
      (db-get-pending-derivations): Remove the 'SELECT DISTINCT' clause now that
      derivations are unique.  Remove the 'INNER JOIN Builds'.
      (db-get-evaluations-build-summary, db-get-builds-min, db-get-builds-max):
      Replace 'id' with 'rowid'.
      * src/schema.sql (Derivations): Remove table.
      (Outputs): Replace Builds.id with Builds.derivation.
      (Builds): Use 'derivation' as primary key.  Remove the 'id' column.  Add
      'job_name', 'system', 'nix_name' columns that were in the Derivations table
      before.
      (Builds_Derivations_index): Rename to Builds_index.  Update accordingly.
      (Derivations_index): Remove index.
      * src/sql/upgrade-2.sql: New file with SQL queries to upgrade the database.
      * tests/database.scm (make-dummy-job, make-dummy-derivation): Remove
      procedures.
      (make-dummy-build): Add columns that were in MAKE-DUMMY-DERIVATION.  Get the
      DRV parameter to be mandatory because it's a primary key.
      (%id): Remove parameter.
      ("db-add-derivation", "db-get-derivation"): Remove tests.
      ("db-add-build"): Expect #f, because it adds twice the same derivation.  Pass
      the derivation argument to MAKE-DUMMY-BUILD.
      ("db-update-build-status!"): Rename 'id' to 'derivation'.  Pass the derivation
      argument to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION call.
      ("db-get-builds", "db-get-pending-derivations"): Pass the derivation argument
      to MAKE-DUMMY-BUILD.  Remove the DB-ADD-DERIVATION calls.
      * tests/http.scm ("fill-db"): Remove DERIVATION1 and DERIVATION2, and put
      their content in BUILD1 and BUILD2.  Remove the DB-ADD-DERIVATION calls.
      Unverified
      4db99f64
  30. Jul 17, 2018
    • Clément Lassieur's avatar
      Add support for multiple inputs. · 7b2f9e0d
      Clément Lassieur authored
      * Makefile.am (dist_sql_DATA): Add src/sql/upgrade-1.sql.
      * bin/cuirass.in (show-help, %options, main): Remove the LOAD-PATH option that
      was used afterwards as %GUIX-PACKAGE-PATH.
      * bin/evaluate.in (absolutize, input-checkout, spec-source, spec-load-path,
      spec-package-path, format-checkouts): New procedures.
      (%not-colon): Remove variable.
      (main): Take the load path, package path and PROC from the checkouts that
      result from the inputs.  Format the checkouts before sending them to the
      procedure.  Remove the LOAD-PATH argument.
      * doc/cuirass.texi (Overview, Database schema): Document the changes.
      * examples/{guix-jobs.scm, hello-git.scm, hello-singleton.scm,
      hello-subset.scm, random.scm}: Adapt to the new specification format.
      * examples/guix-track-git.scm (package->spec): Rename to PACKAGE->INPUT.
      (package->git-tracked): Replace FETCH-REPOSITORY with FETCH-INPUT and handle
      the new format of its return value.
      * examples/random-jobs.scm (make-random-jobs): Rename RANDOM to CHECKOUT.
      Rename the checkout from 'random (which is a specification) to 'cuirass (which
      is a checkout resulting from an input).
      * src/cuirass/base.scm (fetch-repository): Rename to fetch-input.  Rename SPEC
      to INPUT.  Return a checkout object instead of returning two values.
      (evaluate): Take a list of CHECKOUTS and COMMITS as arguments, instead of
      SOURCE.  Remove TOKENIZE and LOAD-PATH.  Pass the CHECKOUTS instead of the
      SOURCE to "evaluate".  Remove %GUIX-PACKAGE-PATH.  Build the EVAL object
      instead of getting it from "evaluate".
      (compile?, fetch-inputs, compile-checkouts): New procedures.
      (process-specs): Fetch all inputs instead of only fetching one repository.
      The result of that fetching operation is a list of CHECKOUTS whose COMMITS are
      used as a STAMP.
      (%guix-package-path, set-guix-package-path): Remove them.
      * src/cuirass/database.scm (db-add-input, db-get-inputs): New procedures.
      (db-add-specification, db-get-specifications): Adapt to the new specification
      format.  Add/get all inputs as well.
      (db-add-evaluation): Rename REVISION to COMMITS.  Store COMMITS as space
      separated commit hashes.
      (db-get-builds): Rename REPO_NAME to NAME.
      (db-get-stamp): Rename COMMIT to STAMP.  Return #f when there is no STAMP.
      (db-add-stamp): Rename COMMIT to STAMP.  Deal with DB-GET-STAMP's new return
      value.
      (db-get-evaluations): Rename REVISION to COMMITS.  Tokenize COMMITS.
      * src/cuirass/utils.scm (%non-blocking): Export it.
      * src/schema.sql (Inputs): New table that refers to the Specifications table.
      (Specifications): Move input related fields to the Inputs table.  Rename
      REPO_NAME to NAME.  Rename ARGUMENTS to PROC_ARGS.  Rename FILE to PROC_FILE.
      Add LOAD_PATH_INPUTS, PACKAGE_PATH_INPUTS and PROC_INPUT fields that refer to
      the Inputs table.
      (Stamps): Rename REPO_NAME to NAME.
      (Evaluations): Rename REPO_NAME to NAME.  Rename REVISION to COMMITS.
      (Specifications_index): Replace with Inputs_index.
      * src/sql/upgrade-1.sql: New file.
      * tests/database.scm (example-spec, make-dummy-eval, sqlite-exec): Adapt to
      the new specifications format.  Rename REVISION to COMMITS.
      * tests/http.scm (evaluations-query-result, fill-db): Idem.
      Unverified
      7b2f9e0d
  31. Apr 10, 2018
  32. Feb 15, 2018
  33. Sep 09, 2017
    • Mathieu Othacehe's avatar
      cuirass: Store new information in database to prepare new HTTP API · e550cb6a
      Mathieu Othacehe authored
      integration.
      
      * bin/evaluate.in (fill-job): New procedure.
      (main): Use it to fill informations (nix-name, system) that will later be
      added to database.
      * doc/cuirass.texi (Database)[Derivation]: Add system and nix_name fields.
      (Database)[Builds]: Add id, status, timestamp, starttime and stoptime
      fields. Remove output field.
      (Database)[Outputs]: New table describing the build outputs.
      * src/cuirass/base.scm (build-packages): Add new fields to build object before
      adding it to database.
      * src/cuirass/database.scm (db-get-build, db-get-builds): New procedures to get
      a build by id from database and a list of builds using filter parameters
      respectively.
      * src/schema.sql (Outputs) : New table.
      (Derivations): Add system and nix_name columns.
      (Builds): Remove output column and add id, status, timestamp, starttime and
      stoptime columns.
      Unverified
      e550cb6a
  34. Feb 25, 2017
  35. Nov 17, 2016
    • Mathieu Lirzin's avatar
      db: Forbid inserting the same specification twice. · bfd395c0
      Mathieu Lirzin authored
      * src/schema.sql (Specifications): Make 'repo_name' the primary key.
      (Stamps, Evaluations): Adapt.
      * src/cuirass/database.scm (db-get-specifications): Likewise.
      (db-add-specification): Ignore if SPEC has already been added.
      * tests/database.scm (example-spec): Adapt.
      Unverified
      bfd395c0
  36. Sep 23, 2016
  37. Jul 31, 2016
Loading