Commit fd7fabbf authored by Georg Koppen's avatar Georg Koppen Committed by Matthew Finkel
Browse files

Modify build system

Bug 40083: Make locale ordering in BuildConfig deterministic

Bug 40042: Add option do overwrite timestamp in extension version

Bug 40059: Use MOZ_BUILD_DATE for versionCode

At the same time we adapt MOZ_BUILD_DATE to our needs where it is
actually used and not in tor-browser-build. This gives us more
flexibility. See: tor-browser-build#40084.

Bug 40067: Fix reproducibility issue in classes2.dex

We make sure our MOZ_BUILD_DATE gets used as a source for showing date
related information on the Fenix about page.

Bug 40071: Show only supported locales

Bug 40064: Use Gecko Beta for Nightly and Debug variants
parent e0b172d5
Loading
Loading
Loading
Loading
+18 −6
Original line number Diff line number Diff line
@@ -395,9 +395,9 @@ dependencies {
    jnaForTest Deps.jna
    testImplementation files(configurations.jnaForTest.copyRecursive().files)

    debugImplementation Deps.mozilla_browser_engine_gecko_nightly
    debugImplementation Deps.mozilla_browser_engine_gecko_beta

    nightlyImplementation Deps.mozilla_browser_engine_gecko_nightly
    nightlyImplementation Deps.mozilla_browser_engine_gecko_beta
    betaImplementation Deps.mozilla_browser_engine_gecko_beta
    releaseImplementation Deps.mozilla_browser_engine_gecko_release

@@ -643,16 +643,22 @@ task buildTranslationArray {
    // This isn't running as a task, instead the array is build when the gradle file is parsed.
    // https://github.com/mozilla-mobile/fenix/issues/14175
    def foundLocales = new StringBuilder()
    def languageCodes = []
    foundLocales.append("new String[]{")

    fileTree("src/main/res").visit { FileVisitDetails details ->
        if(details.file.path.endsWith("${File.separator}strings.xml")){
        if(details.file.path.endsWith("${File.separator}torbrowser_strings.xml")){
            def languageCode = details.file.parent.tokenize(File.separator).last().replaceAll('values-','').replaceAll('-r','-')
            languageCode = (languageCode == "values") ? "en-US" : languageCode
            foundLocales.append("\"").append(languageCode).append("\"").append(",")
            languageCodes.add(languageCode)
        }
    }

    // The order of files in a `FileTree` is not stable, even on a single
    // computer. Thus we need to sort the `languageCode`s. See: fenix#40083.
    languageCodes.sort()
    languageCodes.each {
        foundLocales.append("\"").append(it).append("\"").append(",")
    }
    foundLocales.append("}")
    def foundLocalesString = foundLocales.toString().replaceAll(',}','}')
    android.defaultConfig.buildConfigField "String[]", "SUPPORTED_LOCALE_ARRAY", foundLocalesString
@@ -735,7 +741,13 @@ ext.updateExtensionVersion = { task, extDir ->
        rename { 'manifest.json' }
        into extDir

        def values = ['version': AndroidComponents.VERSION + "." + new Date().format('MMddHHmmss')]
        def systemEnvBuildDate = System.getenv('MOZ_BUILD_DATE')
        // MOZ_BUILD_DATE is in the yyyyMMddHHmmss format. Thus, we only use a
        // substring of it if it is available.
        def values = ['version': AndroidComponents.VERSION + "." +
                      (systemEnvBuildDate != null ?
                       systemEnvBuildDate.substring(4) :
                       new Date().format('MMddHHmmss'))]
        inputs.properties(values)
        expand(values)
    }
+9 −2
Original line number Diff line number Diff line
@@ -38,7 +38,14 @@ object Config {

    @JvmStatic
    fun generateBuildDate(): String {
        val dateTime = LocalDateTime.now()
        val dateTime = if (System.getenv("MOZ_BUILD_DATE") != null) {
          // Converting our MOZ_BUILD_DATE to LocalDateTime
          val format = SimpleDateFormat("yyyyMMddHHmmss", Locale.US)
          val date = format.parse(System.getenv("MOZ_BUILD_DATE"))
          java.sql.Timestamp(date.getTime()).toLocalDateTime()
        } else {
          LocalDateTime.now()
        }
        val timeFormatter = DateTimeFormatter.ofPattern("h:mm a")

        return "${dateTime.dayOfWeek.toString().toLowerCase().capitalize()} ${dateTime.monthValue}/${dateTime.dayOfMonth} @ ${timeFormatter.format(dateTime)}"
@@ -47,7 +54,7 @@ object Config {
    private val fennecBaseVersionCode by lazy {
        val format = SimpleDateFormat("yyyyMMddHHmmss", Locale.US)
        val cutoff = format.parse("20141228000000")
        val build = Date()
        val build = if (System.getenv("MOZ_BUILD_DATE") != null) format.parse(System.getenv("MOZ_BUILD_DATE")) else Date()

        Math.floor((build.time - cutoff.time) / (1000.0 * 60.0 * 60.0)).toInt()
    }