# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
filename: 'firefox-[% c("var/project-name") %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
git_hash: '[% c("var/project-name") %]-[% c("var/firefox_version") %]-[% c("var/browser_branch") %]-build[% c("var/browser_build") %]'
tag_gpg_id: 1
git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git
gpg_keyring:
  - boklm.gpg
  - brizental.gpg
  - clairehurst.gpg
  - dan_b.gpg
  - henry.gpg
  - jwilde.gpg
  - ma1.gpg
  - morgan.gpg
  - pierov.gpg
container:
  use_container: 1

var:
  firefox_platform_version: '150.0a1'
  firefox_version: '[% c("var/firefox_platform_version") %]'
  browser_series: '16.0'
  browser_rebase: 2
  browser_branch: '[% c("var/browser_series") %]-[% c("var/browser_rebase") %]'
  browser_build: 3
  upstream_firefox_commit: FIREFOX_NIGHTLY_150_END
  copyright_year: '[% exec("git show -s --format=%ci " _ c("git_hash") _ "^{commit}", { exec_noco => 1 }).remove("-.*") %]'
  nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]'
  gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser
  git_commit: '[% exec("git rev-parse " _ c("git_hash") _ "^{commit}", { exec_noco => 1 }) %]'
  deps:
    - build-essential
    - autoconf
    - yasm
    - pkg-config
  has_l10n: '[% !c("var/testbuild") && c("var/locales").size %]'
  # For testing purposes use override_updater_url, as it will also override the
  # certificate.
  updater_url: 'https://aus1.torproject.org/torbrowser/update_3/'
  mar_id_prefix: 'torbrowser-torproject'
  mar_channel_id: '[% c("var/mar_id_prefix") %]-[% c("var/channel") %]'

  # Uncomment this if you want to test the updater. You will need to provide a
  # marsigner.der in this directory, too. It will replace either the release
  # key, or the nightly key, depending on the channel you are building.
  # override_updater_url: 'https://tb-build-05.torproject.org/~you/update_3/'

  rezip: |
    rezip_tmpdir=$(mktemp -d)
    mkdir -p "$rezip_tmpdir/z"
    unzip -q -d "$rezip_tmpdir/z" -- [% c("rezip_file") %] || [ $? -lt 3 ]
    pushd "$rezip_tmpdir/z"
    [% c("zip", {
      zip_src => [ '.' ],
      zip_args => '$rezip_tmpdir/new.zip',
    }) %]
    popd
    mv -f -- "$rezip_tmpdir/new.zip" [% c("rezip_file") %]
    rm -Rf "$rezip_tmpdir"

  l10n-changesets: '[% exec("git --no-pager show " _ c("git_hash") _ ":browser/locales/l10n-changesets.json", { exec_noco => 1 }) %]'

  windows_rs_version: '0.62.2'
  windows_rs_sha256sum: 527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580

  firefox_versions_infos: '[% exec(c("basedir") _ "/tools/toolchain-updates/extract-firefox-versions-infos") %]'

steps:
  src-tarballs:
    filename: 'src-[% project %]-[% c("version") %].tar.xz'
    version: '[% c("git_hash") %]'
    input_files:
      - project: container-image
        pkg_type: build
    compress_tar: ''
    container:
      use_container: 1
    var:
      # single-thread and multi-thread xz will generate a different result,
      # se we use at least 2 threads
      xz_threads: '[% c("num_procs") == "1" ? "2" : c("num_procs") %]'
    src-tarballs: |
      #!/bin/bash
      set -e
      mkdir -p '[% dest_dir %]'
      # Files copied to the container are owned by group root (rbm#40074),
      # and it seems xz doesn't like that and exits with an error
      chgrp rbm '[% project %]-[% c("version") %].tar'
      xz --threads=[% c("var/xz_threads") %] -f '[% project %]-[% c("version") %].tar'
      mv -vf '[% project %]-[% c("version") %].tar.xz' '[% dest_dir %]/[% c("filename") %]'
    targets:
      nightly:
        version: '[% c("abbrev") %]'

targets:
  firefoxbrowser:
    git_hash: '[% c("var/upstream_firefox_commit") %]'
    tag_gpg_id: 0
    var:
      updater_url: ''
      has_l10n: 0

  nightly:
    git_hash: '[% c("var/project-name") %]-[% c("var/firefox_version") %]-[% c("var/browser_branch") %]'
    tag_gpg_id: 0
    var:
      updater_url: 'https://nightlies.tbb.torproject.org/nightly-updates/updates/[% c("var/nightly_updates_publish_dir") %]'

  mullvadbrowser:
    git_url: https://gitlab.torproject.org/tpo/applications/mullvad-browser.git
    var:
      gitlab_project: https://gitlab.torproject.org/tpo/applications/mullvad-browser
      updater_url: 'https://cdn.mullvad.net/browser/update_responses/update_1/'
      mar_id_prefix: 'mullvadbrowser-mullvad'
      nightly_updates_publish_dir_prefix: mullvadbrowser-
  linux-x86_64:
    var:
      arch_deps:
        - libgtk2.0-dev
        - libgtk-3-dev
        - libdbus-glib-1-dev
        - libxt-dev
        # To pass configure since ESR 31
        - libpulse-dev
        # To pass configure since ESR 52
        - libx11-xcb-dev
        # To pass configure since ESR 102
        - libasound2-dev
        # To support Wayland mode
        - libdrm-dev

  linux-aarch64:
    var:
      no_install_recommends: 1
      arch_deps:
        - libgtk2.0-dev:arm64
        - libgtk-3-dev:arm64
        - libdbus-glib-1-dev:arm64
        - libxt-dev:arm64
        # To pass configure since ESR 31
        - libpulse-dev:arm64
        # To pass configure since ESR 52
        - libx11-xcb-dev:arm64
        # To pass configure since ESR 102
        - libasound2-dev:arm64
        # To support Wayland mode
        - libdrm-dev:arm64

  macos:
    var:
      nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-macos'
      arch_deps:
        - python3
        - python3-zstandard
        - rsync

  windows:
    var:
      arch_deps:
        - python3
        - python3-zstandard
        - wine

  list_toolchain_updates:
    git_hash: '[% c("var/upstream_firefox_commit") %]'
    tag_gpg_id: 0

input_files:
  - project: container-image
  - filename: 'mozconfig'
    content: '[% INCLUDE "mozconfig.in" %]'
    refresh_input: 1
  - name: '[% c("var/compiler") %]'
    project: '[% c("var/compiler") %]'
    # Cross-binutils are already included in the cross-compiler
  - project: binutils
    name: binutils
    enable: '[% c("var/linux") && ! c("var/linux-cross") %]'
  - filename: rename-branding-strings.py
    enable: '[% c("var/has_l10n") && c("var/tor-browser") %]'
  - filename: fix-info-plist.py
    enable: '[% c("var/macos") %]'
  - project: rust
    name: rust
  - project: cbindgen
    name: cbindgen
  - project: firefox-l10n
    name: firefox-l10n
    enable: '[% c("var/has_l10n") %]'
  - project: wasi-sysroot
    name: wasi-sysroot
    enable: '[% c("var/rlbox") %]'
  - project: node
    name: node
  - project: nasm
    name: nasm
    enable: '[% ! c("var/linux-aarch64") %]'
  - project: python
    name: python
    enable: '[% c("var/linux") %]'
  - project: clang-linux
    name: clang
    enable: '[% c("var/linux") %]'
  - project: fxc2
    name: fxc2
    enable: '[% c("var/windows") %]'
    target_prepend:
      - torbrowser-windows-x86_64
  - URL: 'https://crates.io/api/v1/crates/windows/[% c("var/windows_rs_version") %]/download'
    name: windows-rs
    filename: 'windows-rs-[% c("var/windows_rs_version") %].tar.zst'
    sha256sum: '[% c("var/windows_rs_sha256sum") %]'
    enable: '[% c("var/windows") %]'
  - project: windows-app-sdk
    name: windows-app-sdk
    enable: '[% c("var/windows") %]'
  - filename: abicheck.cc
    enable: '[% c("var/linux") %]'
  - project: translation
    name: translation-base-browser
    pkg_type: base-browser
    enable: '[% c("var/has_l10n") %]'
  - project: translation
    name: translation-tor-browser
    pkg_type: tor-browser
    enable: '[% c("var/tor-browser") && c("var/has_l10n") %]'
  - project: translation
    name: translation-mullvad-browser
    pkg_type: mullvad-browser
    enable: '[% c("var/mullvad-browser") && c("var/has_l10n") %]'
  - filename: marsigner.der
    enable: '[% c("var/override_updater_url") %]'
  - project: python-zstandard
    enable: '[% c("var/linux") && c("var/dev_artifacts") %]'
    name: python-zstandard
  - filename: dmg-root
    enable: '[% c("var/macos") && c("var/dev_artifacts") %]'
  - project: hfsplus-tools
    name: hfsplus-tools
    enable: '[% c("var/macos") && c("var/dev_artifacts") %]'
  - project: libdmg-hfsplus
    name: libdmg
    enable: '[% c("var/macos") && c("var/dev_artifacts") %]'
  # When building upstream firefox we need this patch to be able to
  # build for Windows
  - filename: firefoxbrowser-BB-29320.patch
    enable: '[% c("var/firefox-browser") && c("var/windows") %]'
  # Patch added in the 151 branch to fix MinGW build:
  # https://bugzilla.mozilla.org/show_bug.cgi?id=2024724
  # Later reverted as part of:
  # https://bugzilla.mozilla.org/show_bug.cgi?id=2026031
  # We should drop this patch when updating to Firefox 151.
  - filename: firefoxbrowser-0001-Bug-2024724-Fix-PowerCounters.h-because-we-do-not-co.patch
    enable: '[% c("var/firefox-browser") && c("var/windows") %]'
