From 3032052e4320ddb9d63cf3f5ae2283363f1b5b76 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Mon, 1 Dec 2025 19:39:15 +0200 Subject: [PATCH] Initial commit --- .gitignore | 2 + check-version.sh | 9 + pkg.info | 68 ++++ source-files/mupdf-clang21.patch | 44 ++ source-files/mupdf-install-targets.patch | 29 ++ source-files/mupdf.desktop | 15 + source-files/mupdf.pc | 12 + source-files/mupdf.xpm | 497 +++++++++++++++++++++++ source.sh | 88 ++++ 9 files changed, 764 insertions(+) create mode 100644 .gitignore create mode 100644 check-version.sh create mode 100644 pkg.info create mode 100644 source-files/mupdf-clang21.patch create mode 100644 source-files/mupdf-install-targets.patch create mode 100644 source-files/mupdf.desktop create mode 100644 source-files/mupdf.pc create mode 100644 source-files/mupdf.xpm create mode 100644 source.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3e58e5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Exclude bpm archives +*.bpm \ No newline at end of file diff --git a/check-version.sh b/check-version.sh new file mode 100644 index 0000000..9975fbb --- /dev/null +++ b/check-version.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +# Github repository +REPO="ArtifexSoftware/mupdf" + +# Get tag name using Github Rest API +TAG_NAME=$(curl -s -L -H "X-GitHub-Api-Version: 2022-11-28" -H "Authorization: token ${GITHUB_API_TOKEN}" https://api.github.com/repos/"$REPO"/tags | jq -r '.[].name' | grep -E '^[0-9]'| grep -v 'rc' | head -n1) + +echo "$TAG_NAME" diff --git a/pkg.info b/pkg.info new file mode 100644 index 0000000..9fb196f --- /dev/null +++ b/pkg.info @@ -0,0 +1,68 @@ +name: mupdf +description: Lightweight PDF and XPS viewer +version: 1.26.11 +revision: 1 +url: https://mupdf.com/ +license: AGPL3-or-later +architecture: any +type: source +make_depends: + - brotli + - clang + - curl + - desktop-file-utils + - freeglut + - freetype2 + - glu + - harfbuzz + - libjpeg-turbo + - libx11 + - libxext + - mesa + - openjpeg + - openssl + - swig + - zlib +downloads: + - url: https://www.mupdf.com/downloads/archive/mupdf-${BPM_PKG_VERSION}-source.tar.gz + extract_to: ${BPM_SOURCE} + extract_strip_components: 1 + checksum: eee47fdb64de309124df21081d4a4da4ad0e917824ab2ed68fc8008f6b523979 +split_packages: + - name: mupdf + depends: + - desktop-file-utils + - libmupdf + - libx11 + - libxext + - name: mupdf-gl + description: Lightweight PDF and XPS viewer with OpenGL backend + depends: + - desktop-file-utils + - glibc + - freeglut + - libglvnd + - lubmupdf + - openssl + conflicts: + - mupdf + provides: + - mupdf + - name: mupdf-tools + description: Lightweight PDF and XPS viewer tools + depends: + - libmupdf + - libx11 + - libxext + - openssl + - name: libmupdf + description: Lightweight PDF and XPS viewer library + depends: + - brotli + - freetype2 + - gcc-libs + - glibc + - harfbuzz + - libjpeg-turbo + - openjpeg + - zlib diff --git a/source-files/mupdf-clang21.patch b/source-files/mupdf-clang21.patch new file mode 100644 index 0000000..deafe08 --- /dev/null +++ b/source-files/mupdf-clang21.patch @@ -0,0 +1,44 @@ +diff --git a/scripts/wrap/parse.py b/scripts/wrap/parse.py +index 1954101af..7079c8170 100644 +--- a/scripts/wrap/parse.py ++++ b/scripts/wrap/parse.py +@@ -2,6 +2,7 @@ + Support for accessing parse tree for MuPDF headers. + ''' + ++import collections + import os + import sys + import time +@@ -9,7 +10,7 @@ import time + import jlib + + try: +- import clang ++ import clang.cindex + except ImportError as e: + jlib.log( 'Warning, could not import clang: {e}') + clang = None +@@ -487,6 +488,10 @@ class Arg: + + get_args_cache = dict() + ++# get_args() needs to know how to get something hashable from a clang.cindex.Cursor. ++if clang: ++ g_cursor_is_hashable = issubclass(clang.cindex.Cursor, collections.abc.Hashable) ++ + def get_args( tu, cursor, include_fz_context=False, skip_first_alt=False, verbose=False): + ''' + Yields Arg instance for each arg of the function at . +@@ -509,7 +514,10 @@ def get_args( tu, cursor, include_fz_context=False, skip_first_alt=False, verbos + # + if verbose: + jlib.log( '## Looking at args of {cursor.spelling=}') +- key = tu, cursor.location.file, cursor.location.line, include_fz_context, skip_first_alt ++ if g_cursor_is_hashable: ++ key = tu, cursor, include_fz_context, skip_first_alt ++ else: ++ key = tu, cursor.location.file, cursor.location.line, include_fz_context, skip_first_alt + ret = get_args_cache.get( key) + if not verbose and state.state_.show_details(cursor.spelling): + verbose = True diff --git a/source-files/mupdf-install-targets.patch b/source-files/mupdf-install-targets.patch new file mode 100644 index 0000000..d9e28ca --- /dev/null +++ b/source-files/mupdf-install-targets.patch @@ -0,0 +1,29 @@ +diff --git a/Makefile b/Makefile +index 7b04ff5cd..8d16d98b0 100644 +--- a/Makefile ++++ b/Makefile +@@ -635,18 +635,17 @@ endif + + install-shared-c: install-shared-check install-libs install-headers + +-install-shared-c++: install-shared-c c++ +- install -m 644 platform/c++/include/mupdf/*.h $(DESTDIR)$(incdir)/mupdf +- install -m $(SO_INSTALL_MODE) $(OUT)/libmupdfcpp.$(SO)$(SO_VERSION) $(DESTDIR)$(libdir)/ ++install-shared-c++: install-shared-check ++ install -vDm 644 platform/c++/include/mupdf/*.h -t $(DESTDIR)$(incdir)/mupdf ++ install -vDm $(SO_INSTALL_MODE) $(OUT)/libmupdfcpp.$(SO)$(SO_VERSION) -t $(DESTDIR)$(libdir)/ + ifneq ($(OS),OpenBSD) + ln -sf libmupdfcpp.$(SO)$(SO_VERSION) $(DESTDIR)$(libdir)/libmupdfcpp.$(SO) + ln -sf libmupdfcpp.$(SO)$(SO_VERSION) $(DESTDIR)$(libdir)/libmupdfcpp.$(SO)$(SO_VERSION_MAJOR) + endif + +-install-shared-python: install-shared-c++ python +- install -d $(DESTDIR)$(pydir)/mupdf +- install -m $(SO_INSTALL_MODE) $(OUT)/_mupdf.$(SO) $(DESTDIR)$(pydir)/mupdf +- install -m 644 $(OUT)/mupdf.py $(DESTDIR)$(pydir)/mupdf/__init__.py ++install-shared-python: ++ install -vDm $(SO_INSTALL_MODE) $(OUT)/_mupdf.$(SO) -t $(DESTDIR)$(pydir)/mupdf ++ install -vDm 644 $(OUT)/mupdf.py $(DESTDIR)$(pydir)/mupdf/__init__.py + + else + diff --git a/source-files/mupdf.desktop b/source-files/mupdf.desktop new file mode 100644 index 0000000..78c5a75 --- /dev/null +++ b/source-files/mupdf.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Name=MuPDF +GenericName=PDF file viewer +Exec=mupdf %f +TryExec=mupdf +Icon=mupdf +Terminal=false +Type=Application +MimeType=application/epub+zip;application/pdf;application/x-pdf;application/x-cbz;application/oxps;application/vnd.ms-xpsdocument;image/jpeg;image/pjpeg;image/png;image/tiff;image/x-tiff +Categories=Viewer;Graphics; +Actions=View +NoDisplay=true +[Desktop Action View] +Name=View with mupdf +Exec=mupdf %f diff --git a/source-files/mupdf.pc b/source-files/mupdf.pc new file mode 100644 index 0000000..d24cd75 --- /dev/null +++ b/source-files/mupdf.pc @@ -0,0 +1,12 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: mupdf +Description: Library for rendering PDF documents +Requires.private: freetype2 +Version: VERSION +Libs: -L${libdir} -lmupdf +Libs.private: -lmujs -lgumbo -lopenjp2 -ljbig2dec -ljpeg -lz -lm +Cflags: -I${includedir} diff --git a/source-files/mupdf.xpm b/source-files/mupdf.xpm new file mode 100644 index 0000000..2c042f4 --- /dev/null +++ b/source-files/mupdf.xpm @@ -0,0 +1,497 @@ +/* XPM */ +static char *mupdf[] = { +/* width height ncolors chars_per_pixel */ +"48 48 442 2", +/* colors */ +" c #000000", +" . c #2E4558", +" X c #252121", +" o c #AFAFAF", +" O c #28313B", +" + c #231F1F", +" @ c #686666", +" # c #98BDD7", +" $ c #201B1C", +" % c #7CABCC", +" & c #4487B6", +" * c #DFDEDE", +" = c #4285B4", +" - c #615E5F", +" ; c #605E5E", +" : c #23262C", +" > c #D9D8D8", +" , c #F7FAFC", +" < c #D7D6D6", +" 1 c #BFD6E6", +" 2 c #6BA0C5", +" 3 c #232122", +" 4 c #555253", +" 5 c #CDCCCC", +" 6 c #E7EFF6", +" 7 c #4786B2", +" 8 c #CADDEA", +" 9 c #4085B5", +" 0 c #AECBDF", +" q c #CBCACA", +" w c #92B9D4", +" e c #365F7D", +" r c #5A95BE", +" t c #3E83B3", +" y c #304B60", +" u c #C7C6C6", +" i c #4D8EBB", +" p c #F1F6F9", +" a c #C1C0C0", +" s c #454243", +" d c #669CC3", +" f c #81AECD", +" g c #7A7777", +" h c #434041", +" j c #3E779F", +" k c #272E36", +" l c #413E3F", +" z c #3F3C3D", +" x c #5895BF", +" c c #3D3A3B", +" v c #C6DBE9", +" b c #B8B6B7", +" n c #4282B0", +" m c #FDFDFE", +" M c #B7B6B6", +" N c #8DB5D2", +" B c #242529", +" V c #B3B2B2", +" C c #222327", +" Z c #B0AEAF", +" A c #EDF4F8", +" S c #686565", +" D c #488AB9", +" F c #9ABED8", +" G c #7EACCD", +" H c #ECF2F7", +" J c #211C1C", +" K c #666363", +" L c #F1F1F2", +" P c #ABAAAA", +" I c #4588B6", +" U c #A9A8A8", +" Y c #2D2A2B", +" T c #A7A6A6", +" R c #615D5E", +" E c #2B2829", +" W c #8DB7D5", +" Q c #F9FBFD", +" ! c #DDE9F2", +" ~ c #F8FBFC", +" ^ c #DCE9F1", +" / c #A5C5DC", +" ( c #89B3D1", +" ) c #5C5959", +" _ c #A4C5DB", +" ` c #335A76", +" ' c #518FBB", +" ] c #E6E7E7", +" [ c #5A5757", +" { c #232021", +" } c #33536C", +" | c #98BED9", +". c #E0E1E1", +".. c #7CACCE", +".X c #4488B8", +".o c #2D3F4F", +".O c #999898", +".+ c #4388B7", +".@ c #5E98C1", +".# c #CDCDCB", +".$ c #524F4F", +".% c #B0CCE0", +".& c #979696", +".* c #78A8CA", +".= c #5C96BF", +".- c #969495", +".; c #4084B4", +".: c #252930", +".> c #949293", +"., c #929091", +".< c #417FAB", +".1 c #4F8FBC", +".2 c #F3F7FA", +".3 c #D3D3D4", +".4 c #D7E5EF", +".5 c #222023", +".6 c #9FC1D9", +".7 c #679DC3", +".8 c #37678A", +".9 c #4B8BB8", +".0 c #3E769E", +".q c #3C749C", +".w c #403D3D", +".e c #92BAD6", +".r c #C8DCEA", +".t c #FEFEFE", +".y c #3D393A", +".u c #3B3738", +".i c #355974", +".p c #353132", +".a c #7A7879", +".s c #498BB9", +".d c #9BBFD8", +".f c #4E8AB4", +".g c #787677", +".h c #F2F2F2", +".j c #F0F0F0", +".k c #2F2B2C", +".l c #EEEEEE", +".z c #727071", +".x c #26282D", +".c c #ECECEC", +".v c #2B2728", +".b c #FAFCFD", +".n c #EAEAEA", +".m c #DEEAF2", +".M c #E9EAE9", +".N c #C2D8E7", +".B c #6E6C6D", +".V c #5390BC", +".C c #E8E8E8", +".Z c #6EA2C6", +".A c #272324", +".S c #E7E6E7", +".D c #E6E6E6", +".F c #252122", +".G c #29333D", +".H c #E4E4E4", +".J c #3F7AA5", +".K c #231F20", +".L c #E2E2E2", +".P c #211D1E", +".I c #E0E0E0", +".U c #EAF1F7", +".Y c #6099C2", +".T c #1F1B1C", +".R c #E9F1F6", +".E c #CDDFEB", +".W c #4387B6", +".Q c #96BBD6", +".! c #B1CDE0", +".~ c #DEDEDE", +".^ c #79A9CA", +"./ c #4285B5", +".( c #272A31", +".) c #5D97BF", +"._ c #4185B4", +".` c #DCDCDC", +".' c #959393", +".] c #DADADA", +".[ c #314B5F", +".{ c #D8D8D8", +".} c #D7D8D7", +".| c #D6D6D6", +"X c #F5F8FB", +"X. c #D4D4D4", +"XX c #6AA0C5", +"Xo c #BDD4E5", +"XO c #3A6A8C", +"X+ c #232123", +"X@ c #D3D4D3", +"X# c #D2D2D2", +"X$ c #D0D0D0", +"X% c #CECECE", +"X& c #CCCCCC", +"X* c #CADDEB", +"X= c #37617F", +"X- c #242A31", +"X; c #CACACA", +"X: c #C8DBE9", +"X> c #90B7D3", +"X, c #817F7F", +"X< c #3F7EAB", +"X1 c #548FB9", +"X2 c #355873", +"X3 c #7D7B7B", +"X4 c #C2C2C2", +"X5 c #4B8CBA", +"X6 c #C0C0C0", +"X7 c #D4E4EE", +"X8 c #81AECE", +"X9 c #659CC3", +"X0 c #787576", +"Xq c #4788B6", +"Xw c #252C35", +"Xe c #757373", +"Xr c #BABABA", +"Xt c #FCFDFE", +"Xy c #B6B6B6", +"Xu c #C4D9E8", +"Xi c #706D6E", +"Xp c #8CB5D2", +"Xa c #70A3C7", +"Xs c #8BB5D1", +"Xd c #5491BC", +"Xf c #5391BB", +"Xg c #282424", +"Xh c #272223", +"Xj c #6C696A", +"Xk c #2F4659", +"Xl c #6B6969", +"Xz c #407BA5", +"Xx c #6A6768", +"Xc c #E4E3E3", +"Xv c #3E79A3", +"Xb c #231E1F", +"Xn c #221E1E", +"Xm c #E2E1E1", +"XM c #211C1D", +"XN c #EBF2F7", +"XB c #201C1C", +"XV c #CFE0EC", +"XC c #4588B7", +"XZ c #B3CEE1", +"XA c #366384", +"XS c #5F98C0", +"XD c #4386B5", +"XF c #DEDDDD", +"XG c #2B3D4B", +"XH c #615F5F", +"XJ c #5F5D5D", +"XK c #5E5B5C", +"XL c #DCE9F2", +"XP c #407DA8", +"XI c #86B1CF", +"XU c #D4D3D3", +"XY c #3A698B", +"XT c #3E7BA6", +"XR c #232022", +"XE c #545152", +"XW c #999899", +"XQ c #79AACC", +"X! c #524F50", +"X~ c #CCCDCB", +"X^ c #3D749B", +"X/ c #93BAD5", +"X( c #77A8CA", +"X) c #37607E", +"X_ c #5B96BF", +"X` c #3F84B4", +"X' c #CAC9C9", +"X] c #C6C5C5", +"X[ c #3F7DAA", +"X{ c #F2F7FA", +"X} c #C2C1C1", +"X| c #212023", +"o c #9EC1D9", +"o. c #444142", +"oX c #3F78A0", +"oo c #90B8D5", +"oO c #FEFEFF", +"o+ c #E2ECF4", +"o@ c #2B3A47", +"o# c #25262A", +"o$ c #B1AFB0", +"o% c #28313A", +"o& c #221D1D", +"o* c #262F38", +"o= c #629BC2", +"o- c #302D2E", +"o; c #6199C1", +"o: c #201B1B", +"o> c #4587B6", +"o, c #F0F0F1", +"o< c #2D3E4C", +"o1 c #2E2B2C", +"o2 c #4385B4", +"o3 c #A8A7A7", +"o4 c #A7A5A6", +"o5 c #3D7197", +"o6 c #4183B2", +"o7 c #4083B1", +"o8 c #A5A3A4", +"o9 c #3B6F95", +"o0 c #5290BC", +"oq c #A4C4DB", +"ow c #E9F1F7", +"oe c #4387B7", +"or c #E7EFF5", +"ot c #CBDDEA", +"oy c #4185B5", +"ou c #5B95BE", +"oi c #3F83B3", +"op c #939192", +"oa c #929191", +"os c #2B3743", +"od c #4C4849", +"of c #2A3742", +"og c #F4F8FB", +"oh c #D8E6F0", +"oj c #4C8CB9", +"ok c #211F22", +"ol c #CFD0D0", +"oz c #444041", +"ox c #262C34", +"oc c #413E3E", +"ov c #403C3D", +"ob c #3B739B", +"on c #858384", +"om c #FFFFFF", +"oM c #E3EDF4", +"oN c #5995BF", +"oB c #3E3A3B", +"oV c #C7DBE9", +"oC c #2F4B61", +"oZ c #5793BD", +"oA c #3C3839", +"oS c #2A3945", +"oD c #7E7D7D", +"oF c #345873", +"oG c #363233", +"oH c #7B797A", +"oJ c #EFF4F9", +"oK c #EEF4F8", +"oL c #F3F3F3", +"oP c #9ABED7", +"oI c #4788B7", +"oU c #629AC1", +"oY c #ACAAAA", +"oT c #F1F1F1", +"oR c #EFEFEF", +"oE c #737172", +"oW c #EDEDED", +"oQ c #A9C9DF", +"o! c #FBFDFE", +"o~ c #EBEBEB", +"o^ c #DFEBF3", +"o/ c #4581AB", +"o( c #6F6D6E", +"o) c #EAE9EA", +"o_ c #E9E9E9", +"o` c #C1D7E6", +"o' c #E7E7E7", +"o] c #E6E7E6", +"o[ c #E5E5E5", +"o{ c #3F7BA5", +"o} c #242021", +"o| c #E3E3E3", +"O c #3E79A4", +"O. c #221E1F", +"OX c #26303A", +"Oo c #9C9A9A", +"OO c #E1E1E1", +"O+ c #201C1D", +"O@ c #4488B7", +"O# c #DFDFDF", +"O$ c #7BAACC", +"O% c #356384", +"O& c #1E1A1B", +"O* c #4386B6", +"O= c #4286B5", +"O- c #95BAD5", +"O; c #DDDDDD", +"O: c #1C1819", +"O> c #DBDBDB", +"O, c #D9D9D9", +"O< c #D7D7D7", +"O1 c #417FAA", +"O2 c #DAE7F1", +"O3 c #F5F9FB", +"O4 c #D5D5D5", +"O5 c #242224", +"O6 c #D4D3D4", +"O7 c #85B1CF", +"O8 c #D3D3D3", +"O9 c #699FC4", +"O0 c #4D8DB9", +"Oq c #222022", +"Ow c #34556F", +"Oe c #D1D1D1", +"Or c #D0CFD0", +"Ot c #8A8888", +"Oy c #CFCFCF", +"Ou c #CDCDCD", +"Oi c #CCCDCC", +"Op c #CADEEB", +"Oa c #E5EEF5", +"Os c #C9DCEA", +"Od c #ADCADF", +"Of c #C8DCE9", +"Og c #91B8D4", +"Oh c #5994BE", +"Oj c #3D82B3", +"Ok c #5894BD", +"Ol c #3C82B2", +"Oz c #4181AD", +"Ox c #3B3737", +"Oc c #C5C5C5", +"Ov c #293643", +"Ob c #3E7DAA", +"On c #C1C1C1", +"Om c #353131", +"OM c #D4E3EE", +"ON c #B8D1E3", +"OB c #BFBFBF", +"OV c #9CBFD8", +"OC c #80ADCD", +"OZ c #649BC2", +"OA c #4889B7", +"OS c #BDBDBD", +"OD c #2E292A", +"OF c #4283B1", +"OG c #B7B7B7", +"OH c #4183B0", +"OJ c #5794BF", +"OK c #A7C6DC", +"OL c #365B77", +"OP c #8BB4D1", +"OI c #282324", +"OU c #272323", +"OY c #6C6A6A", +"OT c None", +/* pixels */ +" oToToToT L.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h LoToToToT ", +"o,.joToToToToToToToToToToToToToToToToToToToT.h.h.h.hoToToToToToToToToToToToToToToToToToToToT.j.j", +".j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.joToLoLoR.D.~ > >.~.DoRoLoLoT.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j", +"oRoRoRoRoRoRoRoRoRoRoRoRoRoRoRoT.hXcOBoaXjX!oz c cozX!XjoaOBXc.hoToRoRoRoRoRoRoRoRoRoRoRoRoRoRoR", +".l.l.l.l.l.l.l.l.l.l.l.l.loR.j <.'X! Y.P.To: $ J J $o:.T.P YX!.' <.joR.l.l.l.l.l.l.l.l.l.l.l.l.l", +".l.l.l.l.l.l.l.l.l.l.l.l.jXm.&oz + $o& 3.x OoSXGXGoS O.x 3o& $ +oz.&Xm.j.l.l.l.l.l.l.l.l.l.l.l.l", +"oWoWoWoWoWoWoWoWoWoWoWoR uXK X $XRo% yXA.qo/.fX1X1.fo/.qXA yo%XR $ XXK uoRoWoWoWoWoWoWoWoWoWoWoW", +".c.c.c.c.c.c.c.c.c.coW Z z $ {os eXTo0..oQX*XLoMoMXLOpoQ..o0XT eos { $ z ZoW.c.c.c.c.c.c.c.c.c.c", +"o~o~o~o~o~o~o~o~o~.co3.p $.(X2X[OJ FOM !Of 0.d wOg.d 0Os.mOM FOJObX2.( $.po3.co~o~o~o~o~o~o~o~o~", +".n.n.n.n.n.n.n.noW VoGXMoso9XC G.N.!.^XfXD tOjOlOlOj tXDXd.^.% 1O$O@o9osXMoG VoW.n.n.n.n.n.n.n.n", +".n.n.n.n.n.n.n.c qo.XBo.$okX=oeXDo>O=XD./Xd.momomomomomomomomomomomomomom pX7.NOK 'oeX=ok.$O>.Co'o'o'o'o'", +" ]o'o'o'.So_ TXh.o nXDXDXDXDXD.; %.bomomomomomomomomomomomomoOo`O9ojo>XDXDXD n.oXh To_ ]o'o'o'.S", +".D.D.D.D.Do| SX|XY.+XDXDXDXDXDXDXZomomomomomomomomomomomomom.4Xd.;O=XDXDXDXD.+XYX| So|.D.D.D.D.D", +"o[o[o[o[.D 5OxOvOzO*XDXDXDXD =oZo+omomomomomomomomomomomomomoP.;XDXDXDXDXDXDO*OzOvOx 5o]o[o[o[o[", +".H.H.H.Ho' POU }oeXDXDXDXDXD.;X8o!omomomomomomomomomomomom.bX(.;XDXDXDXDXDXDXDoe }OU Po'.H.H.H.H", +"o|o|o|o|.DOt.5XO.+XDXDXDXDXD &ONomomomomomomomomomomomomom.2.7._XDXDXDXDXDXDXD.+XO.5Ot.Do|o|o|o|", +"o|o|o|o|o|Xi : j.WXDXDXDXD = rOaomomomomomomomomomomomomom AXS._XDXDXDXDXDXDXD.W j :Xio|o|o|o|o|", +".L.L.L.L.I RXwXP.WXDXDXDXD.;XI momomomomomomomomomomomomomXN.=._XDXDXDXDXDXDXD.WXPXw R.I.L.L.L.L", +"OOOOOOOOO; [OX.oromomomomomomom.UX_._XDXDXDXDXDXDXDoeo5 C gOOO#O#O#O#", +".~.~.~.~OO.- {X).XXDXD._o; HomomomomomohO9.Romomomomomomom.UX_._XDXDXDXDXDXDXD.XX) {.-OO.~.~.~.~", +"O;O;O;O;O#XyOD .o2XDXD.;Ogomomomomomom / r.Uomomomomomomom.UX_._XDXDXDXDXDXDXDo2 .ODXyO#O;O;O;O;", +".`.`.`.`O;Oeod.:oX.WXDOAoVomomomomomO3XaOk.Uomomomomomomom.UX_._XDXDXDXDXDXD.WoX.:odOeO;.`.`.`.`", +"O>O>O>O>O>O;X,.POw.W._ doJomomomomomOMoj r.Uomomomomomomom.UX_._XDXDXDXDXDXD.WOw.PX,O;O>O>O>O>O>", +"O>O>O>O>O>O;XrOmox.0 9X8Xtomomomomom.6X`ou.Uomomomomomomom.UX_._XDXDXDXDXDoe.0oxOmXrO;O>O>O>O>O>", +".].].].].].]O,.z JXkOH.VotomomomomX{ 2oiou.Uomomomomomomom.UX_._XDO= &O0 &OFXk J.zO,.].].].].].]", +"O,O,O,O,O,O,O>OS.yOq.i._OZ ^omomom.E.9._ou.Uomomomomomomom.UX_._._.9.ZXdO=.iOq.yOSO>O,O,O,O,O,O,", +".{.{.{.{.{.{.{.].,.A BX)oyXXO2omom.Q.;._ou.Uomomomomomomom.UOh._ dO-X9O=X) BOI.,.].{.{.{.{.{.{.{", +"Oo1O+.P.T.BOeX$X$X$X$X$X$X$OrOrX$X$X$X$X$X$X$X$X$X$", +"OyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyX#oHXEXFoBO&.TO:OYX$OyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOyOy", +"X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%Oy POo.CX0 -Xx.g TOyX%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%", +"X%X%OuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuX% oo$.h boYo4.O UX%OuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuOuX%X%", +" Ou.#OuOuOiX&X&X&X&X&X&X&X&X&X&X&X&X&Oy.a 4 * h.K.KO&XlX%X&X&X&X&X&X&X&X&X&X&X&X&X&X&OuOuX~Ou " +}; diff --git a/source.sh b/source.sh new file mode 100644 index 0000000..025e24f --- /dev/null +++ b/source.sh @@ -0,0 +1,88 @@ +# This is the source.sh script. It is executed by BPM in a temporary directory when compiling a source package +# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE +# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT + +# The prepare function is executed in the root of the temp directory +# This function is used for putting downloaded files to the correct location or applying patches +prepare() { + cd "$BPM_SOURCE" + # Apply patch for additional install targets + patch -Np1 -i "$BPM_WORKDIR"/mupdf-install-targets.patch + # Apply patch for clang 21 + patch -Np1 -i "$BPM_WORKDIR"/mupdf-clang21.patch + + # Setup make configuration + cat > user.make <<-EOF +USE_SYSTEM_LIBS := yes +USE_SYSTEM_FREETYPE := yes +USE_SYSTEM_HARFBUZZ := yes +USE_SYSTEM_JBIG2DEC := no +USE_SYSTEM_JPEGXR := no +USE_SYSTEM_LCMS2 := no +USE_SYSTEM_LIBJPEG := yes +USE_SYSTEM_MUJS := no +USE_SYSTEM_OPENJPEG := yes +USE_SYSTEM_ZLIB := yes +USE_SYSTEM_GLUT := yes +USE_SYSTEM_CURL := yes +USE_SYSTEM_GUMBO := no +EOF +} + +# The build function is executed in the source directory +# This function is used to compile the source code +build() { + export XCFLAGS=-fPIC + + make -j1 VENV_FLAG= shared=yes verbose=yes build=release libs apps extra-apps c++ python +} + +# The package function is executed in the source directory +# This function is used to move the compiled files into the output directory +package_mupdf() { + install -Dm755 build/shared-release/mupdf-x11 "$BPM_OUTPUT"/usr/bin/mupdf + install -Dm644 docs/man/mupdf.1 "$BPM_OUTPUT"/usr/share/man/man1/mupdf.1 + install -Dm644 README "$BPM_OUTPUT"/usr/share/doc/mupdf/README + install -Dm644 CHANGES "$BPM_OUTPUT"/usr/share/doc/mupdf/CHANGES + install -Dm644 COPYING "$BPM_OUTPUT"/usr/share/doc/mupdf/COPYING + install -Dm644 "$BPM_WORKDIR"/mupdf.desktop "$BPM_OUTPUT"/usr/share/applications/mupdf.desktop + install -Dm644 "$BPM_WORKDIR"/mupdf.xpm "$BPM_OUTPUT"/usr/share/pixmaps/mupdf.xpm + + # Install package license + install -Dm644 "$BPM_SOURCE"/COPYING "$BPM_OUTPUT"/usr/share/licenses/mupdf/COPYING +} + +package_mupdf-gl() { + install -Dm755 build/shared-release/mupdf-gl "$BPM_OUTPUT"/usr/bin/mupdf + install -Dm644 docs/man/mupdf.1 "$BPM_OUTPUT"/usr/share/man/man1/mupdf.1 + install -Dm644 README "$BPM_OUTPUT"/usr/share/doc/mupdf/README + install -Dm644 CHANGES "$BPM_OUTPUT"/usr/share/doc/mupdf/CHANGES + install -Dm644 COPYING "$BPM_OUTPUT"/usr/share/doc/mupdf/COPYING + install -Dm644 "$BPM_WORKDIR"/mupdf.desktop "$BPM_OUTPUT"/usr/share/applications/mupdf.desktop + install -Dm644 "$BPM_WORKDIR"/mupdf.xpm "$BPM_OUTPUT"/usr/share/pixmaps/mupdf.xpm + + # Install package license + install -Dm644 "$BPM_SOURCE"/COPYING "$BPM_OUTPUT"/usr/share/licenses/mupdf/COPYING +} + +package_mupdf-tools() { + install -Dm755 build/shared-release/mupdf-x11-curl "$BPM_OUTPUT"/usr/bin/mupdf-x11-curl + install -Dm755 build/shared-release/mutool "$BPM_OUTPUT"/usr/bin/mutool + install -Dm755 build/shared-release/muraster "$BPM_OUTPUT"/usr/bin/muraster + install -Dm644 docs/man/mutool.1 "$BPM_OUTPUT"/usr/share/man/man1/mutool.1 + install -Dm644 README "$BPM_OUTPUT"/usr/share/doc/mupdf-tools/README + install -Dm644 CHANGES "$BPM_OUTPUT"/usr/share/doc/mupdf-tools/CHANGES + + # Install package license + install -Dm644 "$BPM_SOURCE"/COPYING "$BPM_OUTPUT"/usr/share/licenses/mupdf/COPYING +} + +package_libmupdf() { + make prefix=/usr DESTDIR="$BPM_OUTPUT" SO_INSTALL_MODE=755 install-shared-c install-shared-c++ + + # Install pkgconfig file + install -Dm644 "$BPM_WORKDIR"/mupdf.pc "$BPM_OUTPUT"/usr/lib/pkgconfig/mupdf.pc + + # Install package license + install -Dm644 "$BPM_SOURCE"/COPYING "$BPM_OUTPUT"/usr/share/licenses/mupdf/COPYING +}