function linux_branch()

in aws/hhvm1/state-machine/generate.hack [374:439]


function linux_branch(): StateMachine {
  return nested_state_machine(
    S::BuildAndPublishLinux,
    null,
    Dict\merge(
      dict[
        S::GetPlatformsForVersion => dict[
          F::Type => T::Task,
          F::ResultPath => path('platforms'),
        ],
        S::ForEach.S::Platform => dict[
          F::Type => T::Map,
          F::ItemsPath => path('platforms'),
          F::Parameters =>
            map_params(keyset[P::BuildInput, P::Version], P::Platform),
          F::Iterator => nested_state_machine(
            S::Platform,
            P::Platform,
            Dict\merge(
              states_for_activity(
                keyset[P::Version, P::Platform],
                A::MakeBinaryPackage,
                S::Platform.S::End,
                S::Platform.S::End,
              ),
            ),
          ),
        ],
      ],
      states_for_activity(
        keyset[P::BuildInput, P::Version, P::Results],
        A::PublishBinaryPackages,
        A::PublishSourceTarball.S::And.A::PublishDockerImages,
        S::BuildAndPublishLinux.S::End,
      ),
      dict[
        A::PublishSourceTarball.S::And.A::PublishDockerImages => dict[
          F::Type => T::Parallel,
          F::Parameters => params(P::BuildInput, P::Version),
          F::Branches => vec[
            nested_state_machine(
              A::PublishSourceTarball,
              null,
              states_for_activity(
                keyset[P::Version],
                A::PublishSourceTarball,
                A::PublishSourceTarball.S::End,
                A::PublishSourceTarball.S::End,
              ),
            ),
            nested_state_machine(
              A::PublishDockerImages,
              null,
              states_for_activity(
                keyset[P::Version],
                A::PublishDockerImages,
                A::PublishDockerImages.S::End,
                A::PublishDockerImages.S::End,
              ),
            ),
          ],
        ],
      ],
    ),
  );
}