17b66cf61Sopenharmony_ci#!/usr/bin/env python 27b66cf61Sopenharmony_ci# -*- coding: utf-8 -*- 37b66cf61Sopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd. 47b66cf61Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 57b66cf61Sopenharmony_ci# you may not use this file except in compliance with the License. 67b66cf61Sopenharmony_ci# You may obtain a copy of the License at 77b66cf61Sopenharmony_ci# 87b66cf61Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 97b66cf61Sopenharmony_ci# 107b66cf61Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 117b66cf61Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 127b66cf61Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137b66cf61Sopenharmony_ci# See the License for the specific language governing permissions and 147b66cf61Sopenharmony_ci# limitations under the License. 157b66cf61Sopenharmony_ci 167b66cf61Sopenharmony_ciimport argparse 177b66cf61Sopenharmony_ciimport os 187b66cf61Sopenharmony_ciimport subprocess 197b66cf61Sopenharmony_ciimport sys 207b66cf61Sopenharmony_ciimport shutil 217b66cf61Sopenharmony_ci 227b66cf61Sopenharmony_cidef copy_file(dir, dest): 237b66cf61Sopenharmony_ci src_name = '/cupsfilters.convs.in' 247b66cf61Sopenharmony_ci dest_name = '/cupsfilters.convs' 257b66cf61Sopenharmony_ci src_file = dir + src_name 267b66cf61Sopenharmony_ci dest_file = dest + dest_name 277b66cf61Sopenharmony_ci shutil.copy2(src_file, dest_file) 287b66cf61Sopenharmony_ci 297b66cf61Sopenharmony_cidef apply_patch(patch_file, target_dir): 307b66cf61Sopenharmony_ci try: 317b66cf61Sopenharmony_ci if not os.path.exists(target_dir): 327b66cf61Sopenharmony_ci return 337b66cf61Sopenharmony_ci patch_cmd = ['patch', '-p1', "--fuzz=0", "--no-backup-if-mismatch", '-i', patch_file, '-d', target_dir] 347b66cf61Sopenharmony_ci subprocess.run(patch_cmd, check=True) 357b66cf61Sopenharmony_ci except Exception as e: 367b66cf61Sopenharmony_ci print("apply_patch error!") 377b66cf61Sopenharmony_ci return 387b66cf61Sopenharmony_ci 397b66cf61Sopenharmony_ci 407b66cf61Sopenharmony_cidef do_patch(target_dir): 417b66cf61Sopenharmony_ci patch_file = [ 427b66cf61Sopenharmony_ci "ohos_pdftoraster.patch", 437b66cf61Sopenharmony_ci "ohos_pdf_convs.patch", 447b66cf61Sopenharmony_ci "backport-CVE-2023-24805.patch", 457b66cf61Sopenharmony_ci ] 467b66cf61Sopenharmony_ci 477b66cf61Sopenharmony_ci for patch in patch_file: 487b66cf61Sopenharmony_ci apply_patch(patch, target_dir) 497b66cf61Sopenharmony_ci 507b66cf61Sopenharmony_ci 517b66cf61Sopenharmony_cidef main(): 527b66cf61Sopenharmony_ci path = argparse.ArgumentParser() 537b66cf61Sopenharmony_ci path.add_argument('--gen-dir', help='generate path of log', required=True) 547b66cf61Sopenharmony_ci path.add_argument('--source-dir', help='generate path of log', required=True) 557b66cf61Sopenharmony_ci args = path.parse_args() 567b66cf61Sopenharmony_ci convs_dir = os.path.join(args.source_dir, "mime") 577b66cf61Sopenharmony_ci 587b66cf61Sopenharmony_ci do_patch(args.source_dir) 597b66cf61Sopenharmony_ci copy_file(convs_dir, args.gen_dir) 607b66cf61Sopenharmony_ci return 0 617b66cf61Sopenharmony_ci 627b66cf61Sopenharmony_ciif __name__ == '__main__': 637b66cf61Sopenharmony_ci sys.exit(main()) 64