From 1b55b0d487a0684484d65ebe29117c3a6d4276e6 Mon Sep 17 00:00:00 2001 From: MCamp859 Date: Thu, 19 Jul 2018 15:31:14 -0400 Subject: [PATCH 01/13] Add telemetry concept to CL docs. Update related telemetry rst files to add links. Signed-off-by: MCamp859 --- source/clear-linux/concepts/concepts.rst | 1 + .../telemetry-about/telemetry-about-1.png | Bin 0 -> 60310 bytes .../clear-linux/concepts/telemetry-about.rst | 76 ++++++++++++++++++ .../guides/maintenance/telemetry-enable.rst | 14 ++-- .../telemetry-backend/telemetry-backend.rst | 13 +-- 5 files changed, 94 insertions(+), 10 deletions(-) create mode 100644 source/clear-linux/concepts/figures/telemetry-about/telemetry-about-1.png create mode 100644 source/clear-linux/concepts/telemetry-about.rst diff --git a/source/clear-linux/concepts/concepts.rst b/source/clear-linux/concepts/concepts.rst index dbb4b680..496e31e5 100644 --- a/source/clear-linux/concepts/concepts.rst +++ b/source/clear-linux/concepts/concepts.rst @@ -15,3 +15,4 @@ details relevant to the |CL| features. bundles-about autospec-about restart + telemetry-about diff --git a/source/clear-linux/concepts/figures/telemetry-about/telemetry-about-1.png b/source/clear-linux/concepts/figures/telemetry-about/telemetry-about-1.png new file mode 100644 index 0000000000000000000000000000000000000000..37463254b8f349da18c6d67f2c7f5ee72fecb1cd GIT binary patch literal 60310 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 literal 0 HcmV?d00001 diff --git a/source/clear-linux/concepts/telemetry-about.rst b/source/clear-linux/concepts/telemetry-about.rst new file mode 100644 index 00000000..261cf216 --- /dev/null +++ b/source/clear-linux/concepts/telemetry-about.rst @@ -0,0 +1,76 @@ +.. _telemetry-about: + +Telemetrics +########### + +Telemetry is one of the key features of |CLOSIA|. The |CL| team is focused on +the quality of the telemetry data, and is moving from issues that are detected +and reported by users to issues detected and repaired by providers. Ideally, +these issues will be undetected by users. + +On the |CL| team, we refer to *telemetrics*, which is a combination word made from: + +* Telemetry which is sensing and reporting data. +* Analytics which is using visualization and statistical inferencing to make + sense of the reported data. + +|CL| telemetry reports system-level debug/crash information using specialized probes. The +probes monitor system tasks such as :abbr:`swupd (software updater)`, kernel +oops, machine error checks, and BIOS error report table for unhandled hardware +failures. Telemetry enables real-time issue reporting to allow system +developers to quickly focus on an issue and monitor corrective actions. + +|CL| telemetry is fully customizable and can be used during software development +for debugging purposes. You can use libtelemetry in your code to create custom +telemetry records. You can also use telem-record-gen in script files or call +it from another program. + +Architecture +************ + +|CL| telemetry has two fundamental components, which are shown in figure 1: + +* Client: generates and delivers records to the backend server via the network. +* Backend: captures records sent from the client and displays the cumulative + content through a specialized interface. + +Note: To capture records for analysis, you must set up your own backend server. + +.. figure:: figures/telemetry-about-1.png + :scale: 75% + :alt: Clear Linux Telemetry Architecture. + + Figure 1: Clear Linux Telemetry Architecture. + +The telemetry client provides the front end of a complete telemetrics solution +and includes the following components: + +* telemd, a daemon that prepares the records to send to a telemetrics server or + spools the records on disk in case it cannot successfully deliver them. +* Probes that collect specific types of data from the operating system. +* libtelemetry, that telemetrics probes use to create telemetrics records and + send them to the telemd daemon for further processing. + +The telemetry backend provides the server-side component of a complete telemetrics solution and +consists of: + +* Nginx web server. +* Two Flask apps: + + * Collector, an ingestion web app for records received from telemetrics-client probes. + * TelemetryUI, a web app that exposes several views to visualize the telemetry data + and also provides a REST API to perform queries. + +* PostgreSQL as the underlying database server. + +Next steps +********** + +To put this concept into practice, see the following resources: + +* :ref:`Enable and disable telemetry in Clear Linux` +* :ref:`Create a telemetry backend server in Clear Linux` +* `Telemetry feature description`_ + +.. _`Telemetry feature description: + `https://clearlinux.org/features/telemetry diff --git a/source/clear-linux/guides/maintenance/telemetry-enable.rst b/source/clear-linux/guides/maintenance/telemetry-enable.rst index 3f6ed348..1505b2b0 100644 --- a/source/clear-linux/guides/maintenance/telemetry-enable.rst +++ b/source/clear-linux/guides/maintenance/telemetry-enable.rst @@ -9,7 +9,7 @@ daemon, :command:`telemd`. This functionality is maintained in the ``telemetrics`` software bundle. .. note:: - The telemetry functionality adheres to `Intel's privacy policies`_ + The telemetry functionality adheres to `Intel privacy policies`_ regarding the collection and use of :abbr:`PII (Personally Identifiable Information)` and is open source. Specifically, no intentionally identifiable information about the user or system owner is collected. @@ -104,9 +104,13 @@ To completely remove telemetrics from your system, use the command Additional resources ******************** -https://clearlinux.org/features/telemetry +* `Telemetry feature description`_ +* :ref:`Telemetry architecture` +* :ref:`Create a telemetry backend server in Clear Linux` +* https://github.com/clearlinux/telemetrics-client -https://github.com/clearlinux/telemetrics-client - -.. _`Intel's privacy policies`: +.. _`Intel privacy policies`: https://www.intel.com/content/www/us/en/privacy/intel-privacy-notice.html + +.. _`Telemetry feature description: + `https://clearlinux.org/features/telemetry diff --git a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst index b932f444..9d1ac866 100644 --- a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst +++ b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst @@ -462,14 +462,17 @@ it. Additional resources ******************** -https://clearlinux.org/features/telemetry - -https://github.com/clearlinux/telemetrics-client - -https://github.com/clearlinux/telemetrics-backend +* `Telemetry feature description`_ +* :ref:`Telemetry architecture` +* :ref:`Enable and disable telemetry in Clear Linux` +* https://github.com/clearlinux/telemetrics-client +* https://github.com/clearlinux/telemetrics-backend .. _`Clear Linux telemetry backend server overview`: https://github.com/clearlinux/telemetrics-backend .. _`Intel privacy policies`: https://www.intel.com/content/www/us/en/privacy/intel-privacy-notice.html + +.. _`Telemetry feature description: + `https://clearlinux.org/features/telemetry From e8f6a074b99ae9f73b66e789e773e19d3afa179b Mon Sep 17 00:00:00 2001 From: MCamp859 Date: Wed, 25 Jul 2018 21:55:58 -0400 Subject: [PATCH 02/13] Updated kata and kata_migration tutorials. Updated info for selecting runtime and edits for text flow and clarity. Signed-off-by: MCamp859 --- source/clear-linux/tutorials/kata.rst | 58 ++++++++++--------- .../clear-linux/tutorials/kata_migration.rst | 13 +---- 2 files changed, 32 insertions(+), 39 deletions(-) diff --git a/source/clear-linux/tutorials/kata.rst b/source/clear-linux/tutorials/kata.rst index 1c6ef20b..aee38778 100644 --- a/source/clear-linux/tutorials/kata.rst +++ b/source/clear-linux/tutorials/kata.rst @@ -3,16 +3,16 @@ Install Kata Containers\* ######################### -This tutorial describes how to install, configure and run Kata Containers\* on -|CLOSIA|. Kata Containers is an open source project dedicated to the -development of a lightweight implementation of Virtual Machines (VMs) -offering the speed of containers and the security of VMs. +This tutorial describes how to install, configure, and run `Kata Containers`_ +on |CLOSIA|. Kata Containers is an open source project developing a +lightweight implementation of :abbr:`VMs (Virtual Machines)` that offer the +speed of containers and the security of VMs. Prerequisites ************* This tutorial assumes you have installed |CL| on your host system. -For detailed instructions on installing |CL| on a bare metal system, visit +For detailed instructions on installing |CL| on a bare metal system, follow the :ref:`bare metal installation tutorial`. If you have Clear Containers installed on your |CL| system, then follow the @@ -28,24 +28,23 @@ Install Kata Containers *********************** Kata Containers is included in the :file:`containers-virt` bundle. To install the -framework, enter: +framework, enter the following command: .. code-block:: bash sudo swupd bundle-add containers-virt -Configure Docker\* to use Kata Containers by default +Configure Docker\* to use Kata Containers by default. .. code-block:: bash sudo mkdir -p /etc/systemd/system/docker.service.d/ - cat < Date: Thu, 26 Jul 2018 16:32:37 -0400 Subject: [PATCH 03/13] Incorporated review feedback. Signed-off-by: MCamp859 --- .../clear-linux/concepts/telemetry-about.rst | 38 +++++++++++-------- .../guides/maintenance/telemetry-enable.rst | 18 ++++----- .../telemetry-backend/telemetry-backend.rst | 8 ++-- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/source/clear-linux/concepts/telemetry-about.rst b/source/clear-linux/concepts/telemetry-about.rst index 261cf216..e9249aa6 100644 --- a/source/clear-linux/concepts/telemetry-about.rst +++ b/source/clear-linux/concepts/telemetry-about.rst @@ -3,15 +3,14 @@ Telemetrics ########### -Telemetry is one of the key features of |CLOSIA|. The |CL| team is focused on -the quality of the telemetry data, and is moving from issues that are detected -and reported by users to issues detected and repaired by providers. Ideally, -these issues will be undetected by users. +One of the key features of |CLOSIA| is telemetry, which is used to +monitor system health. Telemetry enables developers to observe and proactively +address issues before end users are impacted. -On the |CL| team, we refer to *telemetrics*, which is a combination word made from: +*Telemetrics* is a combination word made from: -* Telemetry which is sensing and reporting data. -* Analytics which is using visualization and statistical inferencing to make +* *Telemetry* which is sensing and reporting data. +* *Analytics* which is using visualization and statistical inferencing to make sense of the reported data. |CL| telemetry reports system-level debug/crash information using specialized probes. The @@ -21,8 +20,8 @@ failures. Telemetry enables real-time issue reporting to allow system developers to quickly focus on an issue and monitor corrective actions. |CL| telemetry is fully customizable and can be used during software development -for debugging purposes. You can use libtelemetry in your code to create custom -telemetry records. You can also use telem-record-gen in script files or call +for debugging purposes. You can use **libtelemetry** in your code to create custom +telemetry records. You can also use **telem-record-gen** in script files or call it from another program. Architecture @@ -34,7 +33,10 @@ Architecture * Backend: captures records sent from the client and displays the cumulative content through a specialized interface. -Note: To capture records for analysis, you must set up your own backend server. + .. note:: + + If you want to capture your own records for analysis, you must set up + your own backend server. .. figure:: figures/telemetry-about-1.png :scale: 75% @@ -45,10 +47,10 @@ Note: To capture records for analysis, you must set up your own backend server. The telemetry client provides the front end of a complete telemetrics solution and includes the following components: -* telemd, a daemon that prepares the records to send to a telemetrics server or +* **telemd**, a daemon that prepares the records to send to a telemetrics server or spools the records on disk in case it cannot successfully deliver them. * Probes that collect specific types of data from the operating system. -* libtelemetry, that telemetrics probes use to create telemetrics records and +* **libtelemetry**, that telemetrics probes use to create telemetrics records and send them to the telemd daemon for further processing. The telemetry backend provides the server-side component of a complete telemetrics solution and @@ -63,14 +65,18 @@ consists of: * PostgreSQL as the underlying database server. +The default telemetry backend server reports back to the |CL| development team +and is not viewable outside the Intel firewall. If you want to collect your +own records, then you must set up your own telemetry backend server. + Next steps ********** To put this concept into practice, see the following resources: -* :ref:`Enable and disable telemetry in Clear Linux` -* :ref:`Create a telemetry backend server in Clear Linux` +* :ref:`Enable and disable telemetry in Clear Linux` +* :ref:`Create a telemetry backend server in Clear Linux` * `Telemetry feature description`_ -.. _`Telemetry feature description: - `https://clearlinux.org/features/telemetry +.. _`Telemetry feature description`: + https://clearlinux.org/features/telemetry diff --git a/source/clear-linux/guides/maintenance/telemetry-enable.rst b/source/clear-linux/guides/maintenance/telemetry-enable.rst index 1505b2b0..2723c209 100644 --- a/source/clear-linux/guides/maintenance/telemetry-enable.rst +++ b/source/clear-linux/guides/maintenance/telemetry-enable.rst @@ -5,8 +5,8 @@ Enable and disable telemetry in Clear Linux |CLOSIA| includes a telemetry solution as part of the OS that records events of interest and reports them back to the development team via the telemetrics -daemon, :command:`telemd`. This functionality is maintained in the -``telemetrics`` software bundle. +daemon, **telemd**. This functionality is maintained in the +**telemetrics** software bundle. .. note:: The telemetry functionality adheres to `Intel privacy policies`_ @@ -20,10 +20,10 @@ redirect where the records go if they wish to collect records for themselves. Install the telemetry software bundle ************************************* -During the initial installation of |CL| you are requested to join the +During the initial installation of |CL|, you are requested to join the stability enhancement program and allow |CLOSIA| to collect anonymous reports -to improve system stability. If you chose not to join this program at that -time then the telemetry software bundle is not added to your system. +to improve system stability. If you choose not to join this program, then the +telemetry software bundle is not added to your system. To install the telemetry bundle, enter the following command as either the root user or with :command:`sudo` privileges: @@ -105,12 +105,12 @@ Additional resources ******************** * `Telemetry feature description`_ -* :ref:`Telemetry architecture` -* :ref:`Create a telemetry backend server in Clear Linux` +* :ref:`Telemetry architecture` +* :ref:`Create a telemetry backend server in Clear Linux` * https://github.com/clearlinux/telemetrics-client .. _`Intel privacy policies`: https://www.intel.com/content/www/us/en/privacy/intel-privacy-notice.html -.. _`Telemetry feature description: - `https://clearlinux.org/features/telemetry +.. _`Telemetry feature description`: + https://clearlinux.org/features/telemetry diff --git a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst index 9d1ac866..06fe6384 100644 --- a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst +++ b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst @@ -463,8 +463,8 @@ Additional resources ******************** * `Telemetry feature description`_ -* :ref:`Telemetry architecture` -* :ref:`Enable and disable telemetry in Clear Linux` +* :ref:`Telemetry architecture` +* :ref:`Enable and disable telemetry in Clear Linux` * https://github.com/clearlinux/telemetrics-client * https://github.com/clearlinux/telemetrics-backend @@ -474,5 +474,5 @@ Additional resources .. _`Intel privacy policies`: https://www.intel.com/content/www/us/en/privacy/intel-privacy-notice.html -.. _`Telemetry feature description: - `https://clearlinux.org/features/telemetry +.. _`Telemetry feature description`: + https://clearlinux.org/features/telemetry From 27e2ab30a6e68ed2390c501a4061b5937d0a4fad Mon Sep 17 00:00:00 2001 From: MCamp859 Date: Fri, 27 Jul 2018 13:41:08 -0400 Subject: [PATCH 04/13] Corrected references and ref label spelling. Signed-off-by: MCamp859 --- source/clear-linux/concepts/telemetry-about.rst | 4 ++-- source/clear-linux/guides/maintenance/telemetry-enable.rst | 4 ++-- .../tutorials/telemetry-backend/telemetry-backend.rst | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/clear-linux/concepts/telemetry-about.rst b/source/clear-linux/concepts/telemetry-about.rst index e9249aa6..b37e6d90 100644 --- a/source/clear-linux/concepts/telemetry-about.rst +++ b/source/clear-linux/concepts/telemetry-about.rst @@ -74,8 +74,8 @@ Next steps To put this concept into practice, see the following resources: -* :ref:`Enable and disable telemetry in Clear Linux` -* :ref:`Create a telemetry backend server in Clear Linux` +* :ref:`telemetry-enable` +* :ref:`telemetry-backend` * `Telemetry feature description`_ .. _`Telemetry feature description`: diff --git a/source/clear-linux/guides/maintenance/telemetry-enable.rst b/source/clear-linux/guides/maintenance/telemetry-enable.rst index 2723c209..6d401226 100644 --- a/source/clear-linux/guides/maintenance/telemetry-enable.rst +++ b/source/clear-linux/guides/maintenance/telemetry-enable.rst @@ -105,8 +105,8 @@ Additional resources ******************** * `Telemetry feature description`_ -* :ref:`Telemetry architecture` -* :ref:`Create a telemetry backend server in Clear Linux` +* :ref:`Telemetry architecture` +* :ref:`telemetry-backend` * https://github.com/clearlinux/telemetrics-client .. _`Intel privacy policies`: diff --git a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst index 06fe6384..ddb16cd3 100644 --- a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst +++ b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst @@ -1,4 +1,4 @@ -.. _telemtry-backend: +.. _telemetry-backend: Create a telemetry backend server in Clear Linux ################################################ @@ -463,8 +463,8 @@ Additional resources ******************** * `Telemetry feature description`_ -* :ref:`Telemetry architecture` -* :ref:`Enable and disable telemetry in Clear Linux` +* :ref:`Telemetry architecture` +* :ref:`telemetry-enable` * https://github.com/clearlinux/telemetrics-client * https://github.com/clearlinux/telemetrics-backend From ab15d98ddc70f300380ceae80635d7f00986d9d2 Mon Sep 17 00:00:00 2001 From: Kevin Putnam Date: Mon, 30 Jul 2018 14:25:56 -0700 Subject: [PATCH 05/13] Fixed the last of the warnings - not at zero --- source/clear-linux/concepts/restart.rst | 44 ++++----- source/clear-linux/concepts/swupd-about.rst | 2 +- .../guides/maintenance/bulk-provision.rst | 8 +- .../clear-linux/guides/maintenance/mixer.rst | 36 +++---- .../guides/maintenance/swupd-guide.rst | 2 +- .../documentation/documentation.rst | 13 +-- .../collaboration/documentation/inline.rst | 22 +++-- source/clear-linux/reference/reference.rst | 3 +- source/clear-linux/tutorials/azure.rst | 2 +- .../clear-linux/tutorials/docker/docker.rst | 6 +- source/clear-linux/tutorials/fmv.rst | 95 ++++++++++--------- .../tutorials/multi-boot/multi-boot.rst | 2 +- .../telemetry-backend/telemetry-backend.rst | 28 +++--- source/conf.py | 3 + 14 files changed, 140 insertions(+), 126 deletions(-) diff --git a/source/clear-linux/concepts/restart.rst b/source/clear-linux/concepts/restart.rst index 69a39964..eb5937c5 100644 --- a/source/clear-linux/concepts/restart.rst +++ b/source/clear-linux/concepts/restart.rst @@ -81,7 +81,7 @@ Figure 1: Invoke :command:`clr-service-restart`. :command:`clr-service-restart` implements a whitelist to identify which daemons can be restarted. The system administrator can customize the default -|CL| OS whitelist using :option:`allow` or :option:`disallow` options for +|CL| OS whitelist using *allow* or *disallow* options for restarting system services. When a software update occurs, :command:`clr-service-restart` consults the whitelist to see if a service daemon is allowed to be restarted or not. See the options section for @@ -91,31 +91,30 @@ details. Options for clr-service-restart ******************************* -The :option:`allow` option identifies a daemon to restart after an OS software +The *allow* option identifies a daemon to restart after an OS software update. The :command:`clr-service-restart` daemon creates a symlink in :file:`/etc/clr-service-restart` as a record. The example below tells -:command:`clr-service-restart` to restart the :option:`tallow` daemon after an +:command:`clr-service-restart` to restart the *tallow* daemon after an OS software update. .. code-block:: bash sudo clr-service-restart allow tallow.service -The :option:`disallow` option tells :command:`clr-service-restart` not to +The *disallow* option tells :command:`clr-service-restart` not to restart the specified daemon even if the OS defaults permit the daemon to be restarted. The :command:`clr-service-restart` daemon creates a symlink in -:file:`/etc/clr-service-restart` that points to :file:`/dev/null` as a record. -The example below tells :command:`clr-service-restart` not to restart the -:option:`rngd` daemon after an OS software update. +:file:`/etc/clr-service-restart` that points to :file:`/dev/null` as a +record. The example below tells :command:`clr-service-restart` not to restart the *rngd* daemon after an OS software update. .. code-block:: bash sudo clr-service-restart disallow rngd -The :option:`default` option makes :command:`clr-service-restart` revert back +The *default* option makes :command:`clr-service-restart` revert back to the OS defaults and delete any symlink in :file:`/etc/clr-service-restart`. The example below tells :command:`clr-service-restart` to restart -:option:`rngd` automatically again, because :option:`rngd` is whitelisted for +*rngd* automatically again, because *rngd* is whitelisted for automatic service restarts by default in |CL|. .. code-block:: bash @@ -132,23 +131,24 @@ services are restarted after an OS software update. To monitor :command:`clr-service-restart`, use one or both options described below. -:option:`-n` +.. option:: -n -This option makes :command:`clr-service-restart` perform no restarts. Instead -it displays the services that could potentially be restarted. When used, -:command:`clr-service-restart` outputs a list of messages showing: + This option makes :command:`clr-service-restart` perform no restarts. + Instead it displays the services that could potentially be restarted. + When used, :command:`clr-service-restart` outputs a list of messages + showing: -* Which service needs a restart. -* What unit it is. -* Why it needs a restart. -* Which command is required to restart the unit. + * Which service needs a restart. + * What unit it is. + * Why it needs a restart. + * Which command is required to restart the unit. -:option:`-a` +.. option:: -a -This option makes :command:`clr-service-restart` consider all system services, -not only the ones that are whitelisted. Because the default whitelist in |CL| -is relatively short, you can use this option to restart all impacted services -when you log in on the system. + This option makes :command:`clr-service-restart` consider all system + services, not only the ones that are whitelisted. Because the default + whitelist in |CL| is relatively short, you can use this option to + restart all impacted services when you log in on the system. If you pass both options (:option:`-a` and :option:`-n`), :command:`clr-service-restart` displays a complete list of system services diff --git a/source/clear-linux/concepts/swupd-about.rst b/source/clear-linux/concepts/swupd-about.rst index c3162de0..167cc215 100644 --- a/source/clear-linux/concepts/swupd-about.rst +++ b/source/clear-linux/concepts/swupd-about.rst @@ -129,7 +129,7 @@ system and its updates as the basis. Using this tool, system administrators can focus on the custom pieces their deployments require while staying on a controlled update stream. -To learn how to run an update of your system, visit our :ref:`update` page. +To learn how to run an update of your system, visit our :ref:`using swupd ` page. .. [1] The software update technology for Clear Linux* OS for Intel Architecture was first presented at the Linux Plumbers conference in 2012. diff --git a/source/clear-linux/guides/maintenance/bulk-provision.rst b/source/clear-linux/guides/maintenance/bulk-provision.rst index 60c57e0a..6badd952 100644 --- a/source/clear-linux/guides/maintenance/bulk-provision.rst +++ b/source/clear-linux/guides/maintenance/bulk-provision.rst @@ -92,7 +92,7 @@ Configuration within the web hosting directory of **ICIS**. The following example shows an Ister configuration file: - .. code-block:: json + .. code-block:: none template=http://192.168.1.1:60000/icis/static/ister/ister.json @@ -102,7 +102,7 @@ Configuration kernel parameter value. The following example shows an iPXE boot script with the ``isterconf`` parameter: - .. code-block:: json + .. code-block:: none #!ipxe kernel linux quiet init=/usr/lib/systemd/systemd-bootchart initcall_debug tsc=reliable no_timer_check noreplace-smp rw initrd=initrd isterconf=http://192.168.1.1:60000/icis/static/ister/ister.conf @@ -129,7 +129,7 @@ Configuration in the ``static`` directory within the web hosting directory of **ICIS**. The following example shows one such assignment: - .. code-block:: json + .. code-block:: none # MAC address,role 00:01:02:03:04:05,ciao @@ -138,7 +138,7 @@ Configuration :file:`config.txt` file, a default role for those MAC address may be defined as follows: - .. code-block:: json + .. code-block:: none # MAC address,role default,ciao diff --git a/source/clear-linux/guides/maintenance/mixer.rst b/source/clear-linux/guides/maintenance/mixer.rst index a2eaa0e4..b6f7cb3c 100644 --- a/source/clear-linux/guides/maintenance/mixer.rst +++ b/source/clear-linux/guides/maintenance/mixer.rst @@ -190,7 +190,7 @@ For example: Additionally, to build a mix with your own custom RPMs, use the optional -:option:`--local-rpms` flag, for example: +*--local-rpms* flag, for example: .. code-block:: bash @@ -203,7 +203,7 @@ the paths manually. For more information on using these directories or setting them up manually, see `Create or locate RPMs for the mix`_. If all upstream |CL| bundles will be part of the mix, you can easily add -them all during initialization with the optional :option:`--all-upstream` flag. For example: +them all during initialization with the optional *--all-upstream* flag. For example: .. code-block:: bash @@ -212,7 +212,7 @@ them all during initialization with the optional :option:`--all-upstream` flag. Finally, you may want to track the contents of your mixer workspace with a git repository. This is a great way to track changes to your mix's content or to revert to earlier versions if something goes wrong. Mixer can set this -up automatically with the optional :option:`--git` flag, for example: +up automatically with the optional *--git* flag, for example: .. code-block:: bash @@ -231,7 +231,7 @@ Edit builder.conf To configure the mixer tool, edit the :file:`builder.conf` as needed. The file :file:`builder.conf` is read automatically from the current -workspace directory. Use the :option:`--config` flag during initialization +workspace directory. Use the *--config* flag during initialization to specify an alternate path to the file as needed. The :file:`builder.conf` file has different sections, for example: @@ -417,7 +417,7 @@ bundles. When listing bundles with this command, mixer automatically recurses through the includes to show every single bundle in the mix. If you see an unexpected bundle in the list, that bundle is probably included -in another bundle. Use the :option:`--tree` flag to get a better view of how +in another bundle. Use the *--tree* flag to get a better view of how a bundle ended up in the mix, for example: .. code-block:: bash @@ -459,7 +459,7 @@ with the following command: mixer bundle list local Both the local and upstream :command:`bundle list` commands accept the -:option:`--tree` flag to show a visual representation of the inclusion relationships +*--tree* flag to show a visual representation of the inclusion relationships between the bundles in the mix. Edit the bundles in the mix @@ -561,7 +561,7 @@ This command removes `bundle1` from the mix bundle list stored in your :file:`mixbundles` file. By default, this command does not remove the bundle definition file from your local bundles. To completely remove a bundle, including its local bundle definition file, use the following command with -the :option:`--local` flag: +the *--local* flag: .. code-block:: bash @@ -569,7 +569,7 @@ the :option:`--local` flag: By default, removing a local bundle file with this command removes the bundle from the mix as well. To only remove the local bundle definition file, use -the following command with the :option:`--mix=false` flag: +the following command with the *--mix=false* flag: .. code-block:: bash @@ -599,7 +599,7 @@ can run this validation manually on `bundle1` with the following command: .. note:: This command can be useful in many circumstances. One example is when importing already-existing local bundles from other projects. -If you use the optional :option:`--strict` flag, the command additionally +If you use the optional *--strict* flag, the command additionally checks if the rest of the bundle header fields can be parsed, if the bundle header fields are non-empty, and if the bundle header ``Title`` field and the bundle filename match. Perform a strict validation of `bundle1` with the @@ -624,7 +624,7 @@ git commit after you modify the mix bundle list or edit a bundle definition file. All the :command:`mixer bundle` commands in the previous sections support an -optional :option:`--git` flag. This flag automatically applies a git commit +optional *--git* flag. This flag automatically applies a git commit when the command completes, for example: .. code-block:: bash @@ -654,7 +654,7 @@ chroots. We have added a new chroot-builder to the mixer tool itself. While this is currently an experimental feature, you should use the new chroot-builder. To use the new chroot-builder, use the following command with the -:option:`--new-chroots` flag: +*--new-chroots* flag: .. code-block:: bash @@ -681,7 +681,7 @@ By default, mixer uses the legacy `swupd-server` to generate the update content. However, we have built a new implementation into the mixer tool itself. While this is currently an experimental feature, you should use the new `swupd-server`. To use the the new `swupd-server`, use the following -command with the :option:`--new-swupd` flag: +command with the *--new-swupd* flag: .. code-block:: bash @@ -704,7 +704,7 @@ mix version to another, with the following command: The pack-maker generates all delta packs for the bundles changed from `PAST_VERSION` to `MIX_VERSION`. If your `STATE_DIR` is in a different -location, specify the location with the :option:`-S` flag. Mixer cannot +location, specify the location with the *-S* flag. Mixer cannot create delta packs for the first build because the update is from version 0. Version 0 implicitly has no content. Thus, mixer can generate no deltas. @@ -754,7 +754,7 @@ With the `ister` tool configured, build the image with the following command: Mixer automatically looks for the :file:`release-image-config.json` file, but you can freely choose the filename. To use a different name, simply pass the -:option:`--template` flag when creating your image, for example: +*--template* flag when creating your image, for example: .. code-block:: bash @@ -762,7 +762,7 @@ you can freely choose the filename. To use a different name, simply pass the By default, `ister` uses the format version of the build machine it runs on. Therefore, if the format you are building differs from the format of the |CL| -OS you are building on, you must use the :option:`--format ` +OS you are building on, you must use the *--format * flag. Find the current format version of your OS with the following command: .. code-block:: bash @@ -780,14 +780,14 @@ Increment the mix version number for the next mix with the following command: This command automatically updates the mix version stored in the :file:`mixversion` file, incrementing it by 10. To increment by a different -amount, use the :option:`--increment` flag, for example: +amount, use the *--increment* flag, for example: .. code-block:: bash mixer versions update --increment 100 Alternatively, to set the mix version to a specific value, use the -:option:`--mix-version` flag, for example: +*--mix-version* flag, for example: .. code-block:: bash @@ -802,7 +802,7 @@ If you have been tracking your workspace with git, you can restore the mix to an earlier state. However, be careful when "rewriting history" if you have published the mix content to users already. -Use the following command with the the :option:`--upstream-version` flag to +Use the following command with the the *--upstream-version* flag to update the upstream version of |CL| used as a base for the mix: .. code-block:: bash diff --git a/source/clear-linux/guides/maintenance/swupd-guide.rst b/source/clear-linux/guides/maintenance/swupd-guide.rst index db385152..e22a2695 100644 --- a/source/clear-linux/guides/maintenance/swupd-guide.rst +++ b/source/clear-linux/guides/maintenance/swupd-guide.rst @@ -7,7 +7,7 @@ Use swupd valid system updates and, if found, download and install them. It can also perform verification of the system software. -|CL| uses :ref:`bundles-about` as the base abstraction for +|CL| uses :ref:`bundles ` as the base abstraction for installing functionality on top of the core operating system. Use the `swupd` tool to install and remove bundles. diff --git a/source/clear-linux/reference/collaboration/documentation/documentation.rst b/source/clear-linux/reference/collaboration/documentation/documentation.rst index b16ce41b..ab615796 100644 --- a/source/clear-linux/reference/collaboration/documentation/documentation.rst +++ b/source/clear-linux/reference/collaboration/documentation/documentation.rst @@ -73,8 +73,7 @@ This style guide applies to the following technical content: We are always grateful to receive content contributions and are happy to help via our mailing list or our IRC channel, #clearlinux. If you have found a -problem with one of our documents, please file a bug report. Use our -:ref:`bug-report` to submit the bug. +problem with one of our documents, please file a `bug report`_. Tone and audience ***************** @@ -86,12 +85,12 @@ Remain professional in your writing and carry an undertone of cordiality, respect, and cooperation. Assume your audience has about the same level of technical understanding and -expertise as you did when you first started collaborating. Do not talk down to -our readers but do not assume they know everything about the subject. +expertise as you did when you first started collaborating. Do not talk down +to our readers but do not assume they know everything about the subject. Offer brief explanations or summaries of "common knowledge" if a significant portion of readers might benefit. -All contributions must follow our :ref:`code-of-conduct`. +All contributions must follow our `code of conduct`_. Methodology *********** @@ -126,7 +125,7 @@ decisions are explained in the respective section. This guide takes precedence over all other style guides in all cases. In cases where the guide does not address the issue at hand, please report the -issue to the `mailing list`_ using our :ref:`bug-report`. +issue to the `mailing list`_ using our `bug report`_. Use the Merriam-Webster's Collegiate Dictionary to determine correct spelling, hyphenation, and usage. @@ -136,3 +135,5 @@ spelling, hyphenation, and usage. .. _documentation section: https://clearlinux.org/documentation .. _Clear Linux documentation repository: https://github.com/clearlinux/clear-linux-documentation +.. _bug report: https://github.com/clearlinux/distribution/issues +.. _code of conduct: https://clearlinux.org/community/code-of-conduct diff --git a/source/clear-linux/reference/collaboration/documentation/inline.rst b/source/clear-linux/reference/collaboration/documentation/inline.rst index 2fb08380..b63c106d 100644 --- a/source/clear-linux/reference/collaboration/documentation/inline.rst +++ b/source/clear-linux/reference/collaboration/documentation/inline.rst @@ -34,20 +34,28 @@ the roles. ``:command:`command``` -* Use the `:option:` role to emphasize the name of a command option - with or without its value. This markup is usually employed in - combination with the `:command:` role. For example: +* In most cases, use asterisks "*" to emphasize the name of a command + option. However, if you have defined an ``.. option::`` directive, you may use the `:option:` role. For example: + + Pandoc Options: + + .. option:: -f + .. option:: --all + .. option:: -o - :option:`-f` - :option:`--all` - :option:`-o output.xsl` The :command:`pandoc` command can be used without the :option:`-o` option, creating an output file with the same name as the source but a different extension. Template: + + .. code-block:: rest - ``:option:`Option``` + .. option: option + + description of option + + ``:option:`option``` * Use the `:file:` role to emphasize a filename or directory. Do not use the role inside a code-block but use it inside all notices that contain files diff --git a/source/clear-linux/reference/reference.rst b/source/clear-linux/reference/reference.rst index b7ec6e29..15ee00ab 100644 --- a/source/clear-linux/reference/reference.rst +++ b/source/clear-linux/reference/reference.rst @@ -14,4 +14,5 @@ features. how-to-clear-overview collaboration/collaboration compatible-kernels - system-requirements \ No newline at end of file + system-requirements + image-types diff --git a/source/clear-linux/tutorials/azure.rst b/source/clear-linux/tutorials/azure.rst index 168fbcfd..397b7032 100644 --- a/source/clear-linux/tutorials/azure.rst +++ b/source/clear-linux/tutorials/azure.rst @@ -390,7 +390,7 @@ For this tutorial, we are using the |CL| Basic SKU for our VM. If you have already defined your public/private SSH key pair and they are stored in your :file:`$HOME/.ssh` directory, you do not need to - include the :option:`--generate-ssh-keys` option. + include the *--generate-ssh-keys* option. Your output from this command will look similar to this output, where [user] is your user name: diff --git a/source/clear-linux/tutorials/docker/docker.rst b/source/clear-linux/tutorials/docker/docker.rst index 6c6cae2a..91d1fa1d 100644 --- a/source/clear-linux/tutorials/docker/docker.rst +++ b/source/clear-linux/tutorials/docker/docker.rst @@ -141,12 +141,12 @@ an the official Docker image for nginx, an open source reverse proxy server. detailed :command:`docker run` switches and syntax, refer to the `Docker Documentation`_ . - * The :option:`--name` switch lets you provide a friendly name to + * The *--name* switch lets you provide a friendly name to target the container for future operations - * The :option:`-d` switch launches the container in the background + * The *-d* switch launches the container in the background - * The :option:`-p` switch allows the container's HTTP port (80) to be + * The *-p* switch allows the container's HTTP port (80) to be accessible from the Clear Linux host on port 8080 #. You can access the Welcome to Nginx! splash page running in the container diff --git a/source/clear-linux/tutorials/fmv.rst b/source/clear-linux/tutorials/fmv.rst index bd05bd3e..0ab93d84 100644 --- a/source/clear-linux/tutorials/fmv.rst +++ b/source/clear-linux/tutorials/fmv.rst @@ -184,7 +184,7 @@ You can see the multiple clones of the `foo` function: The cloned functions use AVX2 registers and vectorized instructions. To verify, enter the following commands: -.. code-block:: assembly +.. code-block:: asm vpaddd (%r8,%rax,1),%ymm0,%ymm0 vmovdqu %ymm0,(%rcx,%rax,1) @@ -213,53 +213,54 @@ To follow the same approach with a package like FFT, we must use the For example, the :file:`fftw-3.3.6-pl2/tools/fftw-wisdom.c.patch` file generates the following patches: -.. code-block:: git +.. code-block:: diff + :linenos: - 1 --- fftw-3.3.6-pl2/libbench2/verify-lib.c 2017-01-27 21:08:13.000000000 +0000 - 2 +++ fftw-3.3.6-pl2/libbench2/verify-lib.c~ 2017-09-27 17:49:21.913802006 +0000 - 3 @@ -33,6 +33,7 @@ - 4 - 5 double dmax(double x, double y) { return (x > y) ? x : y; } - 6 - 7 +__attribute__((target_clones("avx2","arch=atom","default"))) - 8 static double aerror(C *a, C *b, int n) - 9 { - 10 if (n > 0) { - 11 @@ -111,6 +112,7 @@ - 12 } - 13 - 14 /* make array hermitian */ - 15 +__attribute__((target_clones("avx2","arch=atom","default"))) - 16 void mkhermitian(C *A, int rank, const bench_iodim *dim, int stride) - 17 { - 18 if (rank == 0) - 19 @@ -148,6 +150,7 @@ - 20 } - 21 - 22 /* C = A + B */ - 23 +__attribute__((target_clones("avx2","arch=atom","default"))) - 24 void aadd(C *c, C *a, C *b, int n) - 25 { - 26 int i; - 27 @@ -159,6 +162,7 @@ - 28 } - 29 - 30 /* C = A - B */ - 31 +__attribute__((target_clones("avx2","arch=atom","default"))) - 32 void asub(C *c, C *a, C *b, int n) - 33 { - 34 int i; - 35 @@ -170,6 +174,7 @@ - 36 } - 37 - 38 /* B = rotate left A (complex) */ - 39 +__attribute__((target_clones("avx2","arch=atom","default"))) - 40 void arol(C *b, C *a, int n, int nb, int na) - 41 { - 42 int i, ib, ia; - 43 @@ -192,6 +197,7 @@ - 44 } - 45 } + --- fftw-3.3.6-pl2/libbench2/verify-lib.c 2017-01-27 21:08:13.000000000 +0000 + +++ fftw-3.3.6-pl2/libbench2/verify-lib.c~ 2017-09-27 17:49:21.913802006 +0000 + @@ -33,6 +33,7 @@ + + double dmax(double x, double y) { return (x > y) ? x : y; } + + +__attribute__((target_clones("avx2","arch=atom","default"))) + static double aerror(C *a, C *b, int n) + { + if (n > 0) { + @@ -111,6 +112,7 @@ + } + + /* make array hermitian */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void mkhermitian(C *A, int rank, const bench_iodim *dim, int stride) + { + if (rank == 0) + @@ -148,6 +150,7 @@ + } + + /* C = A + B */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void aadd(C *c, C *a, C *b, int n) + { + int i; + @@ -159,6 +162,7 @@ + } + + /* C = A - B */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void asub(C *c, C *a, C *b, int n) + { + int i; + @@ -170,6 +174,7 @@ + } + + /* B = rotate left A (complex) */ + +__attribute__((target_clones("avx2","arch=atom","default"))) + void arol(C *b, C *a, int n, int nb, int na) + { + int i, ib, ia; + @@ -192,6 +197,7 @@ + } + } With these patches, we can select where to apply the FMV technology making bringing architecture-based optimizations to application code even easier. diff --git a/source/clear-linux/tutorials/multi-boot/multi-boot.rst b/source/clear-linux/tutorials/multi-boot/multi-boot.rst index 7c0e49d1..57e0af9e 100644 --- a/source/clear-linux/tutorials/multi-boot/multi-boot.rst +++ b/source/clear-linux/tutorials/multi-boot/multi-boot.rst @@ -53,7 +53,7 @@ RAM and a 360GB SSD. Table 1 lists the information specific to the installation of the tested operating systems. .. csv-table:: Table 1: OS specific installation information - :header: # , OS, Version, Partition Size [1], Swap Size [2], EFI Partition Size [3], Download Link + :header: # , OS, Version, Partition Size [#]_, Swap Size [#]_, EFI Partition Size [#]_, Download Link 1,Clear Linux,16140,50 GB,8 GB,1 GB,https://download.clearlinux.org/releases/16140/clear/ 2,Windows,Server 2016,50 GB,N/A,Shared with #1,https://www.microsoft.com/en-us/cloud-platform/windows-server diff --git a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst index a11c2474..4085fb00 100644 --- a/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst +++ b/source/clear-linux/tutorials/telemetry-backend/telemetry-backend.rst @@ -100,35 +100,35 @@ Run the deploy.sh script to install the backend server The :command:`deploy.sh` is a bash shell script that allows you to perform the following actions: -* :option:`deploy` - install a complete instance of the telemetrics backend +* *deploy* - install a complete instance of the telemetrics backend server and all required components. This is the default action if no - :option:`-a` argument is given on the command line. -* :option:`install` - installs and enables all required components for the + *-a* argument is given on the command line. +* *install* - installs and enables all required components for the telemetrics backend server. -* :option:`migrate` - migrate database to new schema. -* :option:`resetdb` - reset the database. -* :option:`restart` - restart the nginx and uWSGI services. -* :option:`uninstall` - uninstall all packages. +* *migrate* - migrate database to new schema. +* *resetdb* - reset the database. +* *restart* - restart the nginx and uWSGI services. +* *uninstall* - uninstall all packages. .. note:: - The :option:`uninstall` option does not perform any actions if the + The *uninstall* option does not perform any actions if the distro is set to |CL| and will only uninstall packages if the distro is Ubuntu Next, we install the telemetrics backend server with the following options: -* :option:`-a install` to perform an install -* :option:`-d clr` to install to a |CL| distro -* :option:`-H localhost` to set the domain to localhost +* *-a install* to perform an install +* *-d clr* to install to a |CL| distro +* *-H localhost* to set the domain to localhost We do not need to set the following options since the values are set to the correct values we want by default: -* :option:`-r https://github.com/clearlinux/telemetrics-backend` sets the +* *-r https://github.com/clearlinux/telemetrics-backend* sets the repo location for :command:`git` to clone from. -* :option:`-s master` to set the location, or branch. -* :option:`-t git` to set the source type to git. +* *-s master* to set the location, or branch. +* *-t git* to set the source type to git. .. caution:: The :file:`deploy.sh` shell script has minimal error checking and makes diff --git a/source/conf.py b/source/conf.py index b9c7947b..448e260b 100644 --- a/source/conf.py +++ b/source/conf.py @@ -295,3 +295,6 @@ texinfo_documents = [ # If true, generates permalinks on the HTML output. html_add_permalinks = "" + +#suppresses warnings for options that aren't referenced +#suppress_warnings = ["ref.option"] From ae253167148272028f3a27f92460438a33a6a945 Mon Sep 17 00:00:00 2001 From: Kevin Putnam Date: Mon, 30 Jul 2018 14:45:10 -0700 Subject: [PATCH 06/13] added line break --- .../reference/collaboration/documentation/inline.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/clear-linux/reference/collaboration/documentation/inline.rst b/source/clear-linux/reference/collaboration/documentation/inline.rst index b63c106d..e80b87d4 100644 --- a/source/clear-linux/reference/collaboration/documentation/inline.rst +++ b/source/clear-linux/reference/collaboration/documentation/inline.rst @@ -35,7 +35,8 @@ the roles. ``:command:`command``` * In most cases, use asterisks "*" to emphasize the name of a command - option. However, if you have defined an ``.. option::`` directive, you may use the `:option:` role. For example: + option. However, if you have defined an ``.. option::`` directive, you may + use the `:option:` role. For example: Pandoc Options: From 09fdf7747e1af078bbec81c79392e92860588765 Mon Sep 17 00:00:00 2001 From: Kevin Putnam Date: Mon, 30 Jul 2018 16:28:45 -0700 Subject: [PATCH 07/13] fixed some line breaks --- source/clear-linux/concepts/restart.rst | 29 +++++++++++++++---------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/source/clear-linux/concepts/restart.rst b/source/clear-linux/concepts/restart.rst index eb5937c5..f3faabb2 100644 --- a/source/clear-linux/concepts/restart.rst +++ b/source/clear-linux/concepts/restart.rst @@ -6,7 +6,8 @@ Restart system services after an OS update The software life cycle describes how software is created, developed, and deployed, and includes how to replace or update software. A good OS provides tools for the entire software life cycle. These tools must include -ways to remove software components properly when replaced with something else. +ways to remove software components properly when replaced with something +else. Most of the work on software update code in |CL| was focused on adding new software to the system. We recommended that users reboot their system once in @@ -32,9 +33,9 @@ solutions such as the following: * Ask the user to restart the OS. Both solutions are acceptable for many OSes. However, |CL| updates software -automatically and users do not see notices from the updater unless they review -the journal. |CL| requires a completely different solution, with the following -requirements: +automatically and users do not see notices from the updater unless they +review the journal. |CL| requires a completely different solution, with the +following requirements: * Eliminate the guesswork about what to restart and under what circumstances. * Cannot restart everything. Many service daemons do not support an automatic @@ -105,17 +106,19 @@ The *disallow* option tells :command:`clr-service-restart` not to restart the specified daemon even if the OS defaults permit the daemon to be restarted. The :command:`clr-service-restart` daemon creates a symlink in :file:`/etc/clr-service-restart` that points to :file:`/dev/null` as a -record. The example below tells :command:`clr-service-restart` not to restart the *rngd* daemon after an OS software update. +record. The example below tells :command:`clr-service-restart` not to +restart the *rngd* daemon after an OS software update. .. code-block:: bash sudo clr-service-restart disallow rngd The *default* option makes :command:`clr-service-restart` revert back -to the OS defaults and delete any symlink in :file:`/etc/clr-service-restart`. -The example below tells :command:`clr-service-restart` to restart -*rngd* automatically again, because *rngd* is whitelisted for -automatic service restarts by default in |CL|. +to the OS defaults and delete any symlink +in :file:`/etc/clr-service-restart`. The example below +tells :command:`clr-service-restart` to restart *rngd* automatically again, +because *rngd* is whitelisted for automatic service restarts by default +in |CL|. .. code-block:: bash @@ -166,12 +169,14 @@ telemetry record and sends it to the optional |CL| telemetry service if both conditions below are met: * If a unit fails to automatically restart after an OS update. -* If that unit resides in the system location :file:`/usr/lib/systemd/system`. +* If that unit resides in the system + location :file:`/usr/lib/systemd/system`. If you do not install the |CL| telemetrics bundle, the data is discarded. If you install the telemetrics bundle and you opt to send telemetry, then the -system unit name is sent to the |CL| telemetry service. We evaluate the report -and update the whitelist to remove services that are not safe to restart. +system unit name is sent to the |CL| telemetry service. We evaluate the +report and update the whitelist to remove services that are not safe to +restart. Conclusion ********** From 7074d431444f0a3f02e1b8a95c81fc934d710cd8 Mon Sep 17 00:00:00 2001 From: MCamp859 Date: Tue, 31 Jul 2018 11:22:01 -0400 Subject: [PATCH 08/13] Moved figure up a level to correct reference. Signed-off-by: MCamp859 --- .../{telemetry-about => }/telemetry-about-1.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename source/clear-linux/concepts/figures/{telemetry-about => }/telemetry-about-1.png (100%) diff --git a/source/clear-linux/concepts/figures/telemetry-about/telemetry-about-1.png b/source/clear-linux/concepts/figures/telemetry-about-1.png similarity index 100% rename from source/clear-linux/concepts/figures/telemetry-about/telemetry-about-1.png rename to source/clear-linux/concepts/figures/telemetry-about-1.png From 10aece4ee2aa2cbd3e6276bf2fe2cf766441d6c8 Mon Sep 17 00:00:00 2001 From: Kevin Putnam Date: Tue, 31 Jul 2018 08:22:28 -0700 Subject: [PATCH 09/13] fixed overall formatting of inline.rst --- .../collaboration/documentation/inline.rst | 92 +++++++++++-------- 1 file changed, 52 insertions(+), 40 deletions(-) diff --git a/source/clear-linux/reference/collaboration/documentation/inline.rst b/source/clear-linux/reference/collaboration/documentation/inline.rst index e80b87d4..9eb4d207 100644 --- a/source/clear-linux/reference/collaboration/documentation/inline.rst +++ b/source/clear-linux/reference/collaboration/documentation/inline.rst @@ -18,56 +18,62 @@ the roles. acronym can be used without further definition or markup. Do not use abbreviation markup on headings. - :abbr:`API (Application Program Interface)` + :abbr:`API (Application Program Interface)` - Template: + Template: - ``:abbr:`TIA (This Is an Abbreviation)``` + ``:abbr:`TIA (This Is an Abbreviation)``` * Use the `:command:` role when the name of a specific command is used in a paragraph for emphasis. Use the ``.. code-block::`` directive for fully actionable commands in a series of steps. - :command:`make` + :command:`make` - Template: + Template: - ``:command:`command``` + ``:command:`command``` * In most cases, use asterisks "*" to emphasize the name of a command option. However, if you have defined an ``.. option::`` directive, you may use the `:option:` role. For example: - Pandoc Options: + Pandoc Options: - .. option:: -f - .. option:: --all - .. option:: -o + .. option:: -f + .. option:: --all + .. option:: -o - The :command:`pandoc` command can be used without the :option:`-o` - option, creating an output file with the same name as the source - but a different extension. + The :command:`pandoc` command can be used without the :option:`-o` + option, creating an output file with the same name as the source + but a different extension. - Template: + Template: - .. code-block:: rest + .. code-block:: rest .. option: option description of option - ``:option:`option``` + :option:`option` * Use the `:file:` role to emphasize a filename or directory. Do not use the role inside a code-block but use it inside all notices that contain files or directories. Place variable parts of the path or filename in brackets `{}`. - :file:`collaboration.rst` :file:`doc/{user}/collaboration/figures` + :file:`collaboration.rst` - Template: + :file:`doc/{user}/collaboration/figures` - ``:file:`filename.ext` :file:`path/or/directory``` + Template: + + .. code-block:: rest + + :file:`filename.ext` + + :file:`path/or/directory` * Use the `:guilabel:` role to emphasize elements of a graphic user interface within a description. It replaces the use of quotes @@ -75,14 +81,16 @@ the roles. menu elements. Always follow the marked element with the appropriate noun. For example: - In the :guilabel:`Tools` menu. - Press the :guilabel:`OK` button. - In the :guilabel:`Settings` window you find the :guilabel:`Hide - Content` option. + In the :guilabel:`Tools` menu. - Template: + Press the :guilabel:`OK` button. - ``:guilabel:`UI-Label``` + In the :guilabel:`Settings` window you find + the :guilabel:`Hide Content` option. + + Template: + + ``:guilabel:`UI-Label``` * Use the `:menuselection:` role to indicate the navigation through a menu ending with a selection. Every `:menuselection:` element can have up to two @@ -90,37 +98,41 @@ the roles. it can be combined with a `:guilabel:` or with another `:menuselection:` element. For example: - :menuselection:`File --> Save As --> PDF` - Go to :guilabel:`File` and select :menuselection:`Import --> Data - Base --> MySQL`. - Go to :menuselection:`Window --> View` and select :menuselection:` - Perspective --> Other --> C++` + :menuselection:`File --> Save As --> PDF` - Template: + Go to :guilabel:`File` and select :menuselection:`Import --> Data + Base --> MySQL`. + + Go to :menuselection:`Window --> View` and + select :menuselection:`Perspective --> Other --> C++` - ``:menuselection:`1stMenu --> 2ndMenu --> Selection``` + Template: + + ``:menuselection:`1stMenu --> 2ndMenu --> Selection``` * Use the `:makevar:` role to emphasize the name of a Makefile variable. The role can include only the name of the variable or the variable plus its value. - :makevar:`PLATFORM_CONFIG` - :makevar:`PLATFORM_CONFIG=basic_atom` + :makevar:`PLATFORM_CONFIG` - Template: + :makevar:`PLATFORM_CONFIG=basic_atom` - ``:makevar:`VARIABLE``` + Template: + + ``:makevar:`VARIABLE``` * Use the `:envvar:` role to emphasize the name of environment variables. Just as with `:makevar:`, the markup can include only the name of the variable or the variable plus its value. - :envvar:`ZEPHYR_BASE` - :envvar:`QEMU_BIN_PATH=/usr/local/bin` + :envvar:`ZEPHYR_BASE` + + :envvar:`QEMU_BIN_PATH=/usr/local/bin` - Template: + Template: - ``:envvar:`ENVIRONMENT_VARIABLE``` + ``:envvar:`ENVIRONMENT_VARIABLE``` .. _Sphinx Inline Markup: http://sphinx-doc.org/markup/inline.html#inline-markup From bc4b4b673d3621f816c0f08700f210fa83ee4374 Mon Sep 17 00:00:00 2001 From: Michael Vincerra Date: Tue, 31 Jul 2018 12:07:02 -0700 Subject: [PATCH 10/13] Fixes typo in the `include` directive. Signed-off-by: Michael Vincerra --- source/clear-linux/guides/maintenance/autospec.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/clear-linux/guides/maintenance/autospec.rst b/source/clear-linux/guides/maintenance/autospec.rst index 29ed5da7..dd4dd2d7 100644 --- a/source/clear-linux/guides/maintenance/autospec.rst +++ b/source/clear-linux/guides/maintenance/autospec.rst @@ -68,9 +68,9 @@ Create a RPM with autospec ************************** .. include:: ../../concepts/autospec-about.rst - :Start-after: incl-autospec-overview: + :start-after: incl-autospec-overview: :end-before: incl-autospec-overview-end: - + For a detailed explanation of how ``autospec`` works on |CL|, visit our :ref:`autospec-about` about page. For a general understanding of how RPMs work, we recommend visiting the `rpm website`_ or the From 288a3edd59d80f122ee7c7cdecbb93095178db16 Mon Sep 17 00:00:00 2001 From: Kevin Putnam Date: Tue, 31 Jul 2018 15:49:07 -0700 Subject: [PATCH 11/13] major edits to inline.rst including use of parsed-literal for rendered examples --- .../collaboration/documentation/inline.rst | 134 +++++++++++------- 1 file changed, 79 insertions(+), 55 deletions(-) diff --git a/source/clear-linux/reference/collaboration/documentation/inline.rst b/source/clear-linux/reference/collaboration/documentation/inline.rst index 9eb4d207..3efc0195 100644 --- a/source/clear-linux/reference/collaboration/documentation/inline.rst +++ b/source/clear-linux/reference/collaboration/documentation/inline.rst @@ -6,133 +6,157 @@ Inline Markup Sphinx supports a large number of inline markup elements called roles. The |CLOSIA| documentation encourages the use of as many roles as possible. Thus, you can use any additional roles supported by Sphinx -even if not listed here. Please refer to the `Sphinx Inline Markup`_ +not listed here. Please refer to the `Sphinx Inline Markup`_ documentation for the full list of supported roles. The following markup is required in every instance unless otherwise -specified. Each item provides examples and a template for the correct use of -the roles. +specified. Each item provides a syntax example followed by the rendered +result. -* Use the `:abbr:` abbreviation role to define an acronym or an initialism. +Abbreviations + Use the `:abbr:` abbreviation role to define an acronym or an initialism. Add the abbreviation markup only once per file. After the abbreviation, the acronym can be used without further definition or markup. Do not use abbreviation markup on headings. + :: + :abbr:`API (Application Program Interface)` - Template: + .. parsed-literal:: - ``:abbr:`TIA (This Is an Abbreviation)``` + :abbr:`API (Application Program Interface)` -* Use the `:command:` role when the name of a specific command is used in a +OS Commands + Use the `:command:` role when the name of a specific command is used in a paragraph for emphasis. Use the ``.. code-block::`` directive for fully actionable commands in a series of steps. + :: + :command:`make` - Template: + .. parsed-literal:: - ``:command:`command``` + :command:`make` -* In most cases, use asterisks "*" to emphasize the name of a command - option. However, if you have defined an ``.. option::`` directive, you may - use the `:option:` role. For example: +Commandline Options + In most cases, use asterisks "*" to emphasize the name of a command + option. - Pandoc Options: + :: - .. option:: -f - .. option:: --all - .. option:: -o + Use the *-p* option to print the file. - The :command:`pandoc` command can be used without the :option:`-o` - option, creating an output file with the same name as the source - but a different extension. + .. parsed-literal:: + + Use the *-p* option to print the file. + + However, if you have defined an ``.. option::`` directive, you may + use the `:option:` role. Note that the result links back to the + option definition. - Template: - .. code-block:: rest - .. option: option + .. option: -o - description of option + Description of the -o option - :option:`option` + The :command:`pandoc` command can be used without :option:`-o` -* Use the `:file:` role to emphasize a filename or directory. Do not use the + .. option:: -o + + Description of the -o option + + .. parsed-literal:: + + The :command:`pandoc` command can be used without :option:`-o` + +Files + Use the `:file:` role to emphasize a filename or directory. Do not use the role inside a code-block but use it inside all notices that contain files or directories. Place variable parts of the path or filename in brackets `{}`. + .. code-block:: rest + :file:`collaboration.rst` :file:`doc/{user}/collaboration/figures` - Template: + .. parsed-literal:: - .. code-block:: rest + :file:`collaboration.rst` - :file:`filename.ext` + :file:`doc/{user}/collaboration/figures` - :file:`path/or/directory` - -* Use the `:guilabel:` role to emphasize elements of a graphic +GUI Objects + Use the `:guilabel:` role to emphasize elements of a graphic user interface within a description. It replaces the use of quotes when referring to windows' names, button labels, options, or single menu elements. Always follow the marked element with the appropriate noun. For example: - In the :guilabel:`Tools` menu. + :: - Press the :guilabel:`OK` button. + In the :guilabel:`Tools` menu, click :guilabel:`settings`. - In the :guilabel:`Settings` window you find - the :guilabel:`Hide Content` option. + .. parsed-literal:: - Template: + In the :guilabel:`Tools` menu, click :guilabel:`settings`. - ``:guilabel:`UI-Label``` - -* Use the `:menuselection:` role to indicate the navigation through a menu +Menu Navigation + Use the `:menuselection:` role to indicate the navigation through a menu ending with a selection. Every `:menuselection:` element can have up to two menu steps before the selected item. If more than two steps are required, it can be combined with a `:guilabel:` or with another `:menuselection:` element. For example: - :menuselection:`File --> Save As --> PDF` + :: - Go to :guilabel:`File` and select :menuselection:`Import --> Data - Base --> MySQL`. + Go to :guilabel:`File` and select :menuselection:`Import --> Data Base --> MySQL`. + + Go to :menuselection:`Window --> View` and select :menuselection:`Perspective --> Other --> C++` + + .. parsed-literal:: + + Go to :guilabel:`File` and select :menuselection:`Import --> Data Base --> MySQL`. - Go to :menuselection:`Window --> View` and - select :menuselection:`Perspective --> Other --> C++` + Go to :menuselection:`Window --> View` and select :menuselection:`Perspective --> Other --> C++` - Template: - - ``:menuselection:`1stMenu --> 2ndMenu --> Selection``` - -* Use the `:makevar:` role to emphasize the name of a Makefile variable. +Makefile Variables + Use the `:makevar:` role to emphasize the name of a Makefile variable. The role can include only the name of the variable or the variable plus its value. + :: + :makevar:`PLATFORM_CONFIG` :makevar:`PLATFORM_CONFIG=basic_atom` - Template: + .. parsed-literal:: - ``:makevar:`VARIABLE``` + :makevar:`PLATFORM_CONFIG` -* Use the `:envvar:` role to emphasize the name of environment + :makevar:`PLATFORM_CONFIG=basic_atom` + +Environment Variables + Use the `:envvar:` role to emphasize the name of environment variables. Just as with `:makevar:`, the markup can include only the name of the variable or the variable plus its value. + :: + :envvar:`ZEPHYR_BASE` :envvar:`QEMU_BIN_PATH=/usr/local/bin` - Template: + .. parsed-literal:: - ``:envvar:`ENVIRONMENT_VARIABLE``` + :envvar:`ZEPHYR_BASE` + + :envvar:`QEMU_BIN_PATH=/usr/local/bin` .. _Sphinx Inline Markup: - http://sphinx-doc.org/markup/inline.html#inline-markup + http://sphinx-doc.org/markup/inline.html#inline-markup \ No newline at end of file From ea4ce1a9e054b55a9b2cff497c936619500425d5 Mon Sep 17 00:00:00 2001 From: Kevin Putnam Date: Wed, 1 Aug 2018 09:29:58 -0700 Subject: [PATCH 12/13] changed link and text --- .../reference/collaboration/documentation/inline.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/clear-linux/reference/collaboration/documentation/inline.rst b/source/clear-linux/reference/collaboration/documentation/inline.rst index 3efc0195..2e516960 100644 --- a/source/clear-linux/reference/collaboration/documentation/inline.rst +++ b/source/clear-linux/reference/collaboration/documentation/inline.rst @@ -6,7 +6,7 @@ Inline Markup Sphinx supports a large number of inline markup elements called roles. The |CLOSIA| documentation encourages the use of as many roles as possible. Thus, you can use any additional roles supported by Sphinx -not listed here. Please refer to the `Sphinx Inline Markup`_ +not listed here. Please refer to the `Sphinx reStructuredText Markup`_ documentation for the full list of supported roles. The following markup is required in every instance unless otherwise @@ -158,5 +158,5 @@ Environment Variables :envvar:`QEMU_BIN_PATH=/usr/local/bin` -.. _Sphinx Inline Markup: - http://sphinx-doc.org/markup/inline.html#inline-markup \ No newline at end of file +.. _Sphinx reStructuredText Markup: + http://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html \ No newline at end of file From 30c9a191845c95960410930f694c1ac04d7ebb98 Mon Sep 17 00:00:00 2001 From: Michael Vincerra Date: Wed, 1 Aug 2018 10:03:05 -0700 Subject: [PATCH 13/13] Corrects missing punctuation and corrects header on Overivew Signed-off-by: Michael Vincerra --- source/clear-linux/concepts/autospec-about.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/clear-linux/concepts/autospec-about.rst b/source/clear-linux/concepts/autospec-about.rst index a314514c..6b1c3bc3 100644 --- a/source/clear-linux/concepts/autospec-about.rst +++ b/source/clear-linux/concepts/autospec-about.rst @@ -6,7 +6,7 @@ Autospec .. _incl-autospec-overview: Overview --------- +******** Whereas a standard RPM build process using ``rpmbuild`` requires a tarball and ``spec`` file to start, ``autospec`` only requires a tarball and package @@ -32,7 +32,7 @@ file. For a comprehensive list of control files, view the `autospec readme`_. -.. _incl-autospec-overview-end +.. _incl-autospec-overview-end: Control files are explained in Table 1.