From 63aea4cb451c4f72ed083124a0a55dcf566bafbe Mon Sep 17 00:00:00 2001 From: Moon Sungjoon Date: Fri, 8 Dec 2023 15:39:59 +0800 Subject: [PATCH] Enable HWP conversion on MacOS (Apple silicon CPU) This PR reverts the patch that disables HWP / HWPX conversion on MacOS M1. It does not fix conversion on Qubes OS (#494). Previously, HWP / HWPX conversion didn't work on MacOS (Apple silicon CPU) (#498) because libreoffice wasn't built with Java support on Alpine Linux for ARM (aarch64). Gratefully, the Alpine team has enabled Java support on the aarch64 system [1], so we can enable it again for ARM architectures. And this patch is included in Alpine 3.19 This commit was included in #541 and reverted on #562 due to a stability issue. Fixes #498 [1]: https://gitlab.alpinelinux.org/alpine/aports/-/commit/74d443f479df15fc57e6fde6ac02a36b24afdded --- CHANGELOG.md | 4 ++++ README.md | 3 +-- dangerzone/conversion/doc_to_pixels.py | 8 -------- dangerzone/gui/main_window.py | 8 +++----- tests/test_cli.py | 3 +-- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 655dc1f..d9ca256 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ since 0.4.1, and this project adheres to [Semantic Versioning](https://semver.or ## Unreleased +### Changed + +- Feature: Add support for HWP/HWPX files (Hancom Office) for macOS Apple Silicon devices ([issue #498](https://github.com/freedomofpress/dangerzone/issues/498), thanks to [@OctopusET](https://github.com/OctopusET)) + ## Dangerzone 0.5.1 ### Fixed diff --git a/README.md b/README.md index 940c656..1a222cd 100644 --- a/README.md +++ b/README.md @@ -53,8 +53,7 @@ Dangerzone can convert these types of document into safe PDFs: - ODF Graphics (`.odg`) - Hancom HWP (Hangul Word Processor) (`.hwp`, `.hwpx`) * Not supported on - [MacOS with Apple Silicon CPU](https://github.com/freedomofpress/dangerzone/issues/498) - or [Qubes OS](https://github.com/freedomofpress/dangerzone/issues/494) + [Qubes OS](https://github.com/freedomofpress/dangerzone/issues/494) - Jpeg (`.jpg`, `.jpeg`) - GIF (`.gif`) - PNG (`.png`) diff --git a/dangerzone/conversion/doc_to_pixels.py b/dangerzone/conversion/doc_to_pixels.py index e828dbb..48f301d 100644 --- a/dangerzone/conversion/doc_to_pixels.py +++ b/dangerzone/conversion/doc_to_pixels.py @@ -10,7 +10,6 @@ Here are the steps, with progress bar percentages: import asyncio import glob import os -import platform import re import shutil import sys @@ -189,13 +188,6 @@ class DocumentToPixels(DangerzoneConverter): # # https://github.com/freedomofpress/dangerzone/issues/494 # https://github.com/freedomofpress/dangerzone/issues/498 - if libreoffice_ext == "h2orestart.oxt" and platform.machine() in ( - "arm64", - "aarch64", - ): - raise ValueError( - "HWP / HWPX formats are not supported in ARM architectures" - ) if libreoffice_ext == "h2orestart.oxt" and running_on_qubes(): raise errors.DocFormatUnsupportedHWPQubes() if libreoffice_ext: diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index 7b398a7..01fb367 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -553,15 +553,13 @@ class DocSelectionWidget(QtWidgets.QWidget): self.file_dialog.setWindowTitle("Open Documents") self.file_dialog.setFileMode(QtWidgets.QFileDialog.ExistingFiles) - # XXX: We disable loading HWP/HWPX files on Qubes or MacOS M1 platforms, because - # H2ORestart does not work there. See: + # XXX: We disable loading HWP/HWPX files on Qubes, because H2ORestart does not work there. + # See: # # https://github.com/freedomofpress/dangerzone/issues/494 - # https://github.com/freedomofpress/dangerzone/issues/498 hwp_filters = "*.hwp *.hwpx" - if platform.machine() in ("arm64", "aarch64") or is_qubes_native_conversion(): + if is_qubes_native_conversion(): hwp_filters = "" - self.file_dialog.setNameFilters( [ f"Documents (*.pdf *.docx *.doc *.docm *.xlsx *.xls *.pptx *.ppt *.odt *.odg *.odp *.ods {hwp_filters} *.jpg *.jpeg *.gif *.png *.tif *.tiff)" diff --git a/tests/test_cli.py b/tests/test_cli.py index 148918b..1b4774e 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,7 +4,6 @@ import base64 import contextlib import copy import os -import platform import re import shutil import sys @@ -308,7 +307,7 @@ class TestCliConversion(TestCliBasic): class TestExtraFormats(TestCli): @for_each_external_doc("*hwp*") def test_hancom_office(self, doc: str) -> None: - if platform.machine() in ("arm64", "aarch64") or is_qubes_native_conversion(): + if is_qubes_native_conversion(): pytest.skip("HWP / HWPX formats are not supported on this platform") with tempfile.NamedTemporaryFile("wb", delete=False) as decoded_doc: with open(doc, "rb") as encoded_doc: