Index: Makefile
===================================================================
RCS file: /cvs/ports/print/lilypond/Makefile,v
retrieving revision 1.59
diff -u -p -r1.59 Makefile
--- Makefile 30 Oct 2023 23:41:03 -0000 1.59
+++ Makefile 6 Nov 2023 20:23:31 -0000
@@ -7,6 +7,7 @@ DISTNAME-docs= lilypond-${VERSION}-docu
PKGNAME-main= lilypond-${VERSION}
PKGNAME-docs= lilypond-docs-${VERSION}
CATEGORIES= print
+REVISION= 0
URW_V= 20200910
DISTFILES= ${DISTNAME}.tar.bz2
Index: patches/patch-scm_backend-library_scm
===================================================================
RCS file: patches/patch-scm_backend-library_scm
diff -N patches/patch-scm_backend-library_scm
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-scm_backend-library_scm 6 Nov 2023 20:23:31 -0000
@@ -0,0 +1,56 @@
+Fix for ghostscript 10.02.1 (finddevice removed) by backporting
+https://gitlab.com/lilypond/lilypond/-/merge_requests/2160/diffs?commit_id=3d1a7fa40fae01c40c60344a09d0bcf01896557a
+
+Index: scm/backend-library.scm
+--- scm/backend-library.scm.orig
++++ scm/backend-library.scm
+@@ -115,7 +115,8 @@
+ (run-strings
+ (filter string?
+ (list
+- (format #f "mark /OutputFile (~a)" output-file)
++ "<<"
++ (format #f "/OutputFile (~a)" output-file)
+ ;; Ghostscript's default level may change with future
+ ;; releases, the current being 1.7 since 9.24. This
+ ;; results in a warning when embedding the produced PDF
+@@ -125,10 +126,16 @@
+ "/CompatibilityLevel 1.4"
+ (if (not is-eps)
+ (ly:format "/PageSize [~$ ~$]" paper-width paper-height))
+- "(pdfwrite) finddevice putdeviceprops pop"
+- ;; `setdevice` does not set some defaults. So we use
+- ;; `selectdevide` instead.
+- "(pdfwrite) selectdevice"
++ "/OutputDevice /pdfwrite >> setpagedevice"
++ ;; `setpagedevice` does not set some defaults, creating
++ ;; larger output files than necessary. To fix this we use
++ ;; the undocumented, internal `.setdefaultscreen` procedure
++ ;; (tested with gs 10.02.1).
++ "/.setdefaultscreen where {"
++ "pop .setdefaultscreen"
++ "} {"
++ "(Warning: .setdefaultscreen not available) print"
++ "} ifelse"
+ ;; from Resource/Init/gs_pdfwr.ps; needed here because we
+ ;; do not have the pdfwrite device initially (-dNODISPLAY).
+ "newpath fill"
+@@ -146,10 +153,15 @@
+ (ly:gs-api (gs-cmd-args is-eps #f)
+ (string-join
+ (list
+- (format #f "mark /OutputFile (~a)" flush-name)
+- "(pdfwrite) finddevice putdeviceprops pop"
++ "<<"
++ (format #f "/OutputFile (~a)" flush-name)
++ "/OutputDevice /pdfwrite >> setpagedevice"
+ ;; see above
+- "(pdfwrite) selectdevice"
++ "/.setdefaultscreen where {"
++ "pop .setdefaultscreen"
++ "} {"
++ "(Warning: .setdefaultscreen not available) print"
++ "} ifelse"
+ ;; see above
+ "newpath fill")
+ " "))
Index: patches/patch-scm_framework-ps_scm
===================================================================
RCS file: patches/patch-scm_framework-ps_scm
diff -N patches/patch-scm_framework-ps_scm
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-scm_framework-ps_scm 6 Nov 2023 20:23:31 -0000
@@ -0,0 +1,17 @@
+Fix for ghostscript 10.02.1 (finddevice removed) by backporting
+https://gitlab.com/lilypond/lilypond/-/merge_requests/2160/diffs?commit_id=3d1a7fa40fae01c40c60344a09d0bcf01896557a
+
+Index: scm/framework-ps.scm
+--- scm/framework-ps.scm.orig
++++ scm/framework-ps.scm
+@@ -613,8 +613,8 @@
+ (begin
+ (display "
+ /currentpagedevice where {
+- pop currentpagedevice /Name known {
+- currentpagedevice /Name get (pdfwrite) eq {
++ pop currentpagedevice /OutputDevice known {
++ currentpagedevice /OutputDevice get (pdfwrite) eq {
+ << /NeverEmbed [" port)
+ (display (string-concatenate
+ (map (lambda (f) (string-append " /" f))
Index: patches/patch-scm_ps-to-png_scm
===================================================================
RCS file: patches/patch-scm_ps-to-png_scm
diff -N patches/patch-scm_ps-to-png_scm
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-scm_ps-to-png_scm 6 Nov 2023 20:23:31 -0000
@@ -0,0 +1,43 @@
+Fix for ghostscript 10.02.1 (finddevice removed) by backporting
+https://gitlab.com/lilypond/lilypond/-/merge_requests/2160/diffs?commit_id=3d1a7fa40fae01c40c60344a09d0bcf01896557a
+
+Index: scm/ps-to-png.scm
+--- scm/ps-to-png.scm.orig
++++ scm/ps-to-png.scm
+@@ -117,7 +117,8 @@
+ (filter
+ string?
+ (list
+- (format #f "mark /OutputFile (~a)" pngn-gs)
++ "<<"
++ (format #f "/OutputFile (~a)" pngn-gs)
+ "/GraphicsAlphaBits 4 /TextAlphaBits 4"
+ (if fit-page
+ ;; Get available resolution and magnify it according
+@@ -132,20 +133,12 @@ currentpagedevice /HWResolution get 1 get ~a mul \
+ (format #f "/DownScaleFactor ~a" anti-alias-factor)
+ (if (or (not is-eps) fit-page)
+ (format #f "/PageSize [~a ~a]" width height))
+- ;; We use `findprotodevice` because `finddevice` always returns
+- ;; the same device instance and we can't reset the page number of
+- ;; the device. `findprotodevice copydevice` creates a new device
+- ;; instance each time, which can reset the page number.
+- (format #f "(~a) findprotodevice copydevice" pixmap-format)
+- "putdeviceprops setdevice"
+- ;; We want to use `selectdevice` instead of `setdevice` because
+- ;; `setdevice` doesn't set some defaults. But using `selectdevice`
+- ;; can't reset the page number because `selectdevice` uses
+- ;; `finddevice` internally. So, as a workaround, we use an
+- ;; undocumented `.setdefaultscreen` procedure which is used inside
+- ;; `selectdevice` to set the defaults. It works in Ghostscript
+- ;; 9.52 but may not work if the internal implementation of
+- ;; `selectdevice` is changed in the future.
++ (format #f "/OutputDevice /~a" pixmap-format)
++ ">> setpagedevice"
++ ;; `setpagedevice` does not set some defaults, creating
++ ;; larger output files than necessary. To fix this we use
++ ;; the undocumented, internal `.setdefaultscreen` procedure
++ ;; (tested with gs 10.02.1).
+ "/.setdefaultscreen where {"
+ "pop .setdefaultscreen"
+ "} {"
Index: patches/patch-scripts_build_output-distance_py
===================================================================
RCS file: patches/patch-scripts_build_output-distance_py
diff -N patches/patch-scripts_build_output-distance_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-scripts_build_output-distance_py 6 Nov 2023 20:23:31 -0000
@@ -0,0 +1,19 @@
+Fix for ghostscript 10.02.1 (finddevice removed) by backporting
+https://gitlab.com/lilypond/lilypond/-/merge_requests/2160/diffs?commit_id=3d1a7fa40fae01c40c60344a09d0bcf01896557a
+
+Index: scripts/build/output-distance.py
+--- scripts/build/output-distance.py.orig
++++ scripts/build/output-distance.py
+@@ -539,10 +539,10 @@ def eps_to_png(files: Dict[str, str]):
+ verbose_print = ' (processing %s\n) print ' % input_fn
+ driver.write('''
+ %s
+- mark /OutputFile (%s)
++ << /OutputFile (%s)
+ /GraphicsAlphaBits 4 /TextAlphaBits 4
+ /HWResolution [101 101]
+- (png16m) finddevice putdeviceprops setdevice
++ /OutputDevice /png16m >> setpagedevice
+ (%s) run
+ ''' % (verbose_print, outfile, input_fn))
+
On 2023-11-06 20:40, Theo Buehler wrote:
>On Thu, Nov 02, 2023 at 07:13:45PM +0100, Volker Schlecht wrote:
>> ghostscript released a patch release addressing some vaguely specified
>> security bugs.
>> From the changelog, it looks like there's at least a buffer overflow and an
>> integer overflow that got fixed, so I think we want those fixes ASAP:
>>
>> https://git.ghostscript.com/?p=ghostpdl.git;a=shortlog;h=refs/tags/ghostpdl-10.02.1
>>
>> Built and tested on amd64. ok?
>
>I see the following build failure of audio/solfege with ghostscript
>10.02.1 but not with 10.02.0, full log attached:
For full context:
https://bugs.ghostscript.com/show_bug.cgi?id=707307
https://gitlab.com/lilypond/lilypond/-/merge_requests/2160/
The attached diff backports the current draft merge request to print/lilypond
referenced above, which fixes both print/lilypond and audio/solfege for me.
Cc: kili
No comments:
Post a Comment