C 0000015 mmmv package info t1

From commentsarchive
Jump to: navigation, search

This specification is still being written.


ID format

One development deliverable may produce multiple different deployment deliverables. A deployment deliverable has a relative ID in relation to its development deliverable. A development deliverable is a tar-file that contains its own secure hash and size in bytes as part of its name. For example, the tar-files might be Silktorrent packets, stblob-files. The ID of the development deliverable is the name of the tar-file. An absolute ID of a deployment deliverable has the following format:

    name_of_the_tarfile_of_the_development_deliverable|relateiv_ID_of_the_deployment_deliverable

The tar-file of the development deliverable and the relative ID of the deployment deliverable must both include only characters that meet the requirements of the C_0000014 mmmv_ASCII_subset_t1.


Deployment Deliverable Format

Deployment deliverables all have an executable file named mmmv_package_info_t1 at their root folder. It is a console application that has the following mandatory command line fomrat, in EBNF:

      COMMANDLINE_ARGUMENTS :== NONE | HELP | DISPLAY_VARIABLE | DISPLAY_CONSTANT
                       NONE :== // displays this EBNF and exits with error code 1
                       HELP :== "--help" | "-help" | "help" | "-?" | "-h" | "h" // displays this EBNF and exits with error code 0

           DISPLAY_VARIABLE :== ("--display-variable" | "--var"   | "-var"   | "var" ) (DISPLAY_COMPULSORY_VARIABLE | DISPLAY_OPTIONAL_VARIABLE)
           DISPLAY_CONSTANT :== ("--display-constant" | "--const" | "-const" | "const" ) (DISPLAY_COMPULSORY_CONSTANT | DISPLAY_OPTIONAL_CONSTANT)
    
          DISPLAY_BOOLEAN_X :== <name prefix that consists of only characters in the mmmv_ASCII_subset_t1>"_boolean="<true|false>
              DISPLAY_HEX_X :== <name prefix that consists of only characters in the mmmv_ASCII_subset_t1>"_lower_case_hex="<lower case hex>
            DISPLAY_ARRAY_X :== (<one or more spaces>)* (DISPLAY_BOOLEAN_X|DISPLAY_HEX_X) (<one or more spaces>(DISPLAY_BOOLEAN_X|DISPLAY_HEX_X))*(<one or more spaces>)*

DISPLAY_COMPULSORY_VARIABLE :== DISPLAY_BOOLEAN_X | DISPLAY_HEX_X | DISPLAY_ARRAY_X
  DISPLAY_OPTIONAL_VARIABLE :== DISPLAY_BOOLEAN_X | DISPLAY_HEX_X | DISPLAY_ARRAY_X
DISPLAY_COMPULSORY_CONSTANT :== DISPLAY_BOOLEAN_X | DISPLAY_HEX_X | DISPLAY_ARRAY_X
  DISPLAY_OPTIONAL_CONSTANT :== DISPLAY_BOOLEAN_X | DISPLAY_HEX_X | DISPLAY_ARRAY_X


  • If the command does not exist, for example, "hhhelpp" is used in stead of "help", then the mmmv_package_info_t1 exits with error code 1.
  • If the variable does not exist, but the command is correct, then the mmmv_package_info_t1 exits with error code 2.
  • Variable values, including arrays, are displayed so that there are no linebreaks. Text with linebreaks can be converted to hex and then stored as a variable value.
  • The value of constants never changes due to availability or state change of runtime dependencies.
  • The value of variables may change due to availability or state change of runtime dependencies.
  • The presence of the variables and constants changes only due to developer actions. That is to say, the presence of the variables and constants never changes during runtime and never changes during built-time.


Compulsory variables

  • s_deployment_deliverable_relative_ID // s_development_deliverable_ID is never known to the development deliverable itself before the tar-file with the secure hash in its name is created
  • s_ar IDs_of_dependency_development_deliverables // a space-separated list of tar-file names
  • s_ar_absolute_IDs_of_dependency_deployment_deliverables // a space-separated list
  • s_ar_deployment_state_constants_boolean // a space-separated list
  • s_ar_deployment_state_variables_boolean // a space-separated list
  • s_ar_deployment_state_constants_lower_case_hex // a space-separated list
  • s_ar_deployment_state_variables_lower_case_hex // a space-separated list

Implementation Ideas

The idea behind the constant boolean values is that may be a theorem prover and some database might be used for speeding up the calculation that determines, whether dependencies are met or not. In stead of trying to find out, whether dependencies are present, available, the aim is to check, whether conditions are met, including the condition that the dependencies are available, accessible Due to possible compile/build errors the packages are meant to be installed manually. Part of the idea is that different compiler parameters produce different versions of deployment deliverables, but as the number of those versions gets very high, it is probably more efficient to calculate that version during runtime by analysing the boolean values.