[tor-commits] [builders/tor-browser-build] branch master updated: Bug 34451: Include Tor Browser Manual in packages during build

gitolite role git at cupani.torproject.org
Thu Jun 9 13:33:54 UTC 2022


This is an automated email from the git hooks/post-receive script.

pierov pushed a commit to branch master
in repository builders/tor-browser-build.

The following commit(s) were added to refs/heads/master by this push:
     new 2853461  Bug 34451: Include Tor Browser Manual in packages during build
2853461 is described below

commit 28534614fd06a4422eb5959d153a592347094a27
Author: Pier Angelo Vendrame <pierov at torproject.org>
AuthorDate: Fri May 20 19:55:29 2022 +0200

    Bug 34451: Include Tor Browser Manual in packages during build
    
    Include an output of the Tor Browser manual optimized for offline docs
    in the browser/omni.ja file.
    
    See also tor-browser#11698.
---
 doc/how-to-update-the-manual.txt |  8 +++++++
 projects/manual/build            | 11 +++++++++
 projects/manual/config           | 21 +++++++++++++++++
 projects/manual/packagemanual.py | 50 ++++++++++++++++++++++++++++++++++++++++
 projects/tor-browser/build       | 10 ++++++++
 projects/tor-browser/config      |  3 +++
 6 files changed, 103 insertions(+)

diff --git a/doc/how-to-update-the-manual.txt b/doc/how-to-update-the-manual.txt
new file mode 100644
index 0000000..334701c
--- /dev/null
+++ b/doc/how-to-update-the-manual.txt
@@ -0,0 +1,8 @@
+1. Go to https://gitlab.torproject.org/tpo/web/manual/-/jobs/
+2. Open the latest build stage
+3. Download the artifacts (they come in a .zip file).
+4. Rename it to manual_$PIPELINEID.zip
+5. Upload it to people.tpo
+6. Update projects/manual/config
+   6.1 Change the version to $PIPELINEID
+   6.2 Update the URL if it was different from the previous uploader
diff --git a/projects/manual/build b/projects/manual/build
new file mode 100644
index 0000000..d569632
--- /dev/null
+++ b/projects/manual/build
@@ -0,0 +1,11 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+
+mkdir -p chrome/browser/content/browser/manual
+unzip $rootdir/[% c('input_files_by_name/manual') %]
+python3 $rootdir/[% c('input_files_by_name/package_script') %] public chrome/browser/content/browser/manual
+
+[% c('tar', {
+        tar_src => [ 'chrome' ],
+        tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+    }) %]
diff --git a/projects/manual/config b/projects/manual/config
new file mode 100644
index 0000000..fa01356
--- /dev/null
+++ b/projects/manual/config
@@ -0,0 +1,21 @@
+# To update, see doc/how-to-update-the-manual.txt
+version: 40628
+filename: 'manual-[% c("version") %].tar.gz'
+
+var:
+  container:
+    use_container: 1
+    suite: bullseye
+    arch: amd64
+  deps:
+    - python3
+    - unzip
+  pre_pkginst: ''
+
+input_files:
+  - project: container-image
+  - URL: 'https://people.torproject.org/~pierov/tbb_files/manual_[% c("version") %].zip'
+    name: manual
+    sha256sum: 64bab7e8b26014277b55cf2afc4f676f3a164f466fc33e72aa62004318994c3a
+  - filename: packagemanual.py
+    name: package_script
diff --git a/projects/manual/packagemanual.py b/projects/manual/packagemanual.py
new file mode 100755
index 0000000..f4a3b98
--- /dev/null
+++ b/projects/manual/packagemanual.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+from pathlib import Path
+import re
+import sys
+import shutil
+
+
+PAGE_NAME = 'offline-docs'
+STATIC_PATH = 'chrome://browser/content/manual/static'
+
+if len(sys.argv) < 3:
+    print(f'Usage: {sys.argv[0]} lektor-out-directory target-directory')
+    sys.exit(1)
+
+source = Path(sys.argv[1])
+target = Path(sys.argv[2])
+if not target.exists():
+    target.mkdir(exist_ok=True)
+
+static_re = re.compile('"(?:../)*static/([^"]+)"')
+link_re = re.compile('href="../([^"]+)"')
+
+
+def clean_urls(match):
+    m = re.match(r'(?:../)?([^/#]+)[/]?[#]?(.*)', match.group(1))
+    slug = m.group(1)
+    if m.group(2):
+        anchor = '_' + m.group(2)
+    else:
+        anchor = ''
+    return f'href="#{slug}{anchor}"'
+
+
+htmls = source.rglob(f'{PAGE_NAME}/index.html')
+for page in htmls:
+    with page.open(encoding='utf8') as f:
+        contents = f.read()
+    contents = static_re.sub(f'"{STATIC_PATH}/\\1"', contents)
+    contents = link_re.sub(clean_urls, contents)
+
+    rel = page.relative_to(source)
+    dest_name = str(list(rel.parents)[-2].name)
+    if dest_name == PAGE_NAME:
+        dest_name = 'en'
+    dest_name += '.html'
+    with (target / dest_name).open('w', encoding='utf8') as f:
+        f.write(contents)
+
+shutil.rmtree(target / 'static', ignore_errors=True)
+shutil.copytree(source / 'static', target / 'static')
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 049bf1c..e1de23b 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -83,6 +83,16 @@ find chrome/ | sort | zip -X -@ "$TBDIR[% IF c("var/osx") %]/Contents/Resources[
 popd
 rm -rf $TMP_HTTPS_EVERYWHERE_PATH
 
+# Include the Tor Browser manual
+TMP_MANUAL_PATH=$rootdir/tmp_manual/
+mkdir $TMP_MANUAL_PATH
+pushd $TMP_MANUAL_PATH
+tar -xf $rootdir/[% c('input_files_by_name/manual') %]
+find . -exec [% c("var/touch") %] {} \;
+find chrome/ | sort | zip -X -@ "$TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]/browser/omni.ja"
+popd
+rm -rf $TMP_MANUAL_PATH
+
 tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files_by_name/tor') %]/tor.tar.gz
 [% IF c("var/namecoin") %]
   # Extract Electrum-NMC
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index d1a889f..9620b6b 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -123,3 +123,6 @@ input_files:
     enable: '[% ! c("var/android") %]'
   - filename: bridges_list.snowflake.txt
     enable: '[% ! c("var/android") %]'
+  - project: manual
+    name: manual
+    enable: '[% ! c("var/android") %]'

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list