Hello community, here is the log from the commit of package abcm2ps for openSUSE:Factory checked in at 2020-02-20 14:56:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/abcm2ps (Old) and /work/SRC/openSUSE:Factory/.abcm2ps.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "abcm2ps" Thu Feb 20 14:56:21 2020 rev:10 rq:777343 version:8.14.7 Changes: -------- --- /work/SRC/openSUSE:Factory/abcm2ps/abcm2ps.changes 2019-11-08 15:28:19.963165604 +0100 +++ /work/SRC/openSUSE:Factory/.abcm2ps.new.26092/abcm2ps.changes 2020-02-20 14:56:31.738423288 +0100 @@ -1,0 +2,16 @@ +Wed Feb 19 13:35:02 UTC 2020 - Michael Vetter <[email protected]> + +- Update to 8.14.7: + * crash when %%score with no common voices and next notes with beams + * crash when new staff system with only new voices + * crash when slash found before a bar and not a (deprecated) measure repeat + * crash when %%staves at end of tune and lack of music in the last voice + * bad parsing of the note durations + * clash of some ties with dots + * bad check of the number of measures in Z (multi-rest) + * new improved coda sign + * Make pkg-config substitutable for cross-compilations + * add option tieheight factor to tie height like in slurheight + * add some decorations from v2.2 standard + +------------------------------------------------------------------- Old: ---- abcm2ps-8.14.6.tar.gz New: ---- abcm2ps-8.14.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ abcm2ps.spec ++++++ --- /var/tmp/diff_new_pack.pUYwlt/_old 2020-02-20 14:56:32.910425588 +0100 +++ /var/tmp/diff_new_pack.pUYwlt/_new 2020-02-20 14:56:32.910425588 +0100 @@ -1,7 +1,7 @@ # # spec file for package abcm2ps # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. # Copyright (c) 2007 by Edgar Aichinger # # All modifications and additions to the file contributed by third parties @@ -18,7 +18,7 @@ Name: abcm2ps -Version: 8.14.6 +Version: 8.14.7 Release: 0 Summary: A program to typeset abc tunes into Postscript License: LGPL-3.0-or-later ++++++ abcm2ps-8.14.6.tar.gz -> abcm2ps-8.14.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/README.md new/abcm2ps-8.14.7/README.md --- old/abcm2ps-8.14.6/README.md 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/README.md 2020-02-19 14:00:51.000000000 +0100 @@ -14,11 +14,15 @@ (the 'm' of abcm2ps stands for many or multi staves/voices). Since this time, it has evolved so it can render many more music kinds. +Note that this program is at end of life. Its successor is +[abc2svg](https://chiselapp.com/user/moinejf/repository/abc2svg). + ### Features -The main features of abcm2ps are quite the same as the abc2ps ones, -but they are closer to the ABC draft 2.2 (February 2013): - http://abcnotation.com/wiki/abc:standard:v2.2 +The features of abcm2ps are based on the +[ABC draft 2.2 (February 2013)](http://abcnotation.com/wiki/abc:standard:v2.2). +The differences are listed in the +[abcm2ps/abc2svg documentation](http://moinejf.free.fr/abcm2ps-doc/features.html). ### Installation and usage @@ -49,6 +53,8 @@ ### Links +Author's page: http://moinejf.free.fr/ + To know more about the ABC music notation, have a look at http://abcnotation.com/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/abcm2ps.h new/abcm2ps-8.14.7/abcm2ps.h --- old/abcm2ps-8.14.6/abcm2ps.h 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/abcm2ps.h 2020-02-19 14:00:51.000000000 +0100 @@ -524,7 +524,7 @@ float topspace, wordsspace, titlespace, subtitlespace, partsspace; float composerspace, musicspace, vocalspace, textspace; float breaklimit, maxshrink, lineskipfac, parskipfac, stemheight; - float gutter, indent, infospace, slurheight, notespacingfactor, scale; + float gutter, indent, infospace, slurheight, tieheight, notespacingfactor, scale; float staffsep, sysstaffsep, maxstaffsep, maxsysstaffsep, stretchlast; int abc2pscompat, alignbars, aligncomposer, autoclef; int barsperstaff, breakoneoln, bstemdown, cancelkey, capo; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/abcparse.c new/abcm2ps-8.14.7/abcparse.c --- old/abcm2ps-8.14.6/abcparse.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/abcparse.c 2020-02-19 14:00:51.000000000 +0100 @@ -3,7 +3,7 @@ * * This file is part of abcm2ps. * - * Copyright (C) 1998-2019 Jean-François Moine (http://moinejf.free.fr) + * Copyright (C) 1998-2020 Jean-François Moine (http://moinejf.free.fr) * Adapted from abc2ps, Copyright (C) 1996-1998 Michael Methfessel * * This program is free software; you can redistribute it and/or modify it @@ -1794,6 +1794,7 @@ int *p_len) { int len, fac; + int err = 0; char *q; len = dur_u; @@ -1801,27 +1802,33 @@ len *= strtol(p, &q, 10); if (len <= 0) { syntax("Bad length", p); - len = BASE_LEN; + len = dur_u; } p = q; } - fac = 1; - while (*p == '/') { - p++; - if (isdigit((unsigned char) *p)) { - fac *= strtol(p, &q, 10); - if (fac == 0) { - syntax("Bad length divisor", p - 1); - fac = 1; - } - p = q; - } else { - fac *= 2; + if (*p != '/') { + *p_len = len; + return p; + } + if (isdigit((unsigned char) p[1])) { + fac = strtol(p + 1, &q, 10); + p = q; + if (fac == 0 || (fac & (fac - 1))) + err = 1; + else + len /= fac; + } else { + while (*p == '/') { + if (len & 1) + err = 1; + len /= 2; + p++; } } - if (len % fac) + if (err || !len) { syntax("Bad length divisor", p - 1); - len /= fac; + len = dur_u; + } *p_len = len; return p; } @@ -2037,6 +2044,8 @@ case CHAR_SLASH: /* '/' */ if (flags & ABC_F_GRACE) goto bad_char; + if (char_tb[(unsigned char) p[-1]] != CHAR_BAR) + goto bad_char; q = p; while (*q == '/') q++; @@ -2332,7 +2341,7 @@ len = 1; if (isdigit((unsigned char) *p)) { len = strtol(p, &q, 10); - if (len == 0 && len > 100) { + if (len == 0 || len > 100) { syntax("Bad number of measures", p); len = 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/configure new/abcm2ps-8.14.7/configure --- old/abcm2ps-8.14.6/configure 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/configure 2020-02-19 14:00:51.000000000 +0100 @@ -1,10 +1,11 @@ #! /bin/sh # (automatic update) -VERSION=8.14.6 -VDATE=2019-11-05 +VERSION=8.14.7 +VDATE=2020-02-19 CC=gcc +PKG_CONFIG=pkg-config CFLAGS="-g -O2 -Wall -pipe" srcdir=. @@ -57,11 +58,11 @@ DEFAULT_FDIR="$prefix/share/abcm2ps" fi -if which pkg-config > /dev/null ; then - if pkg-config --exists freetype2 ; then - if pkg-config --exists pangocairo ; then - CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `pkg-config pango cairo freetype2 --cflags`" - LDLIBS="$LDLIBS `pkg-config pangocairo pangoft2 freetype2 --libs`" +if which $PKG_CONFIG > /dev/null ; then + if $PKG_CONFIG --exists freetype2 ; then + if $PKG_CONFIG --exists pangocairo ; then + CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `$PKG_CONFIG pango cairo freetype2 --cflags`" + LDLIBS="$LDLIBS `$PKG_CONFIG pangocairo pangoft2 freetype2 --libs`" else echo "pangocairo not found - no pango support" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/deco.c new/abcm2ps-8.14.7/deco.c --- old/abcm2ps-8.14.6/deco.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/deco.c 2020-02-19 14:00:51.000000000 +0100 @@ -93,6 +93,7 @@ "emphasis 3 accent 7 4 4", "lowermordent 3 lmrd 10 2 2", "coda 3 coda 24 10 10", + "dacoda 3 dacoda 16 10 10", "uppermordent 3 umrd 10 2 2", "segno 3 sgno 20 4 4", "trill 3 trl 11 4 4", @@ -121,7 +122,12 @@ "marcato 3 marcato 9 3 3", "^ 3 marcato 9 3 3", "D.C. 3 dacs 16 10 10 D.C.", + "D.C.alcoda 3 dacs 16 10 10 D.C. al Coda", + "D.C.alfine 3 dacs 16 10 10 D.C. al Fine", + "dacapo 3 dacs 16 10 10 Da Capo", "D.S. 3 dacs 16 10 10 D.S.", + "D.S.alcoda 3 dacs 16 10 10 D.S. al Coda", + "D.S.alfine 3 dacs 16 10 10 D.S. al Fine", "fine 3 dacs 16 10 10 FINE", "f 6 pf 18 1 7", "ff 6 pf 18 2 10", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/draw.c new/abcm2ps-8.14.7/draw.c --- old/abcm2ps-8.14.6/draw.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/draw.c 2020-02-19 14:00:51.000000000 +0100 @@ -3086,6 +3086,11 @@ x2 -= 1.5; } + if (k1->dots && !(p1 & 1) + && ((s > 0 && k1->doty >= 0) + || (s < 0 && k1->doty < 0))) + x1 += 6; // avoid clash with dots + y = 3 * (p - 18); //fixme: clash when 2 ties on second interval chord // if (p & 1) @@ -3109,6 +3114,7 @@ #endif h = (.04 * (x2 - x1) + 10) * s; + h *= cfmt.tieheight; slur_out(x1, staff_tb[staff].y + y, x2, staff_tb[staff].y + y, s, h, k1->u.note.notes[m1].ti1 & SL_DOTTED, -1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/format.c new/abcm2ps-8.14.7/format.c --- old/abcm2ps-8.14.6/format.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/format.c 2020-02-19 14:00:51.000000000 +0100 @@ -137,6 +137,7 @@ {"textfont", &cfmt.font_tb[TEXTFONT], FORMAT_F, 0}, {"textoption", &cfmt.textoption, FORMAT_I, 4}, {"textspace", &cfmt.textspace, FORMAT_U, 0}, + {"tieheight", &cfmt.tieheight, FORMAT_R, 0}, {"titlecaps", &cfmt.titlecaps, FORMAT_B, 0}, {"titlefont", &cfmt.font_tb[TITLEFONT], FORMAT_F, 0}, {"titleformat", &cfmt.titleformat, FORMAT_S, 0}, @@ -379,6 +380,7 @@ f->textspace = 14 PT; f->scale = 1.0; f->slurheight = 1.0; + f->tieheight = 1.0; f->maxshrink = 0.65; f->breaklimit = 0.7; f->stretchlast = 0.25; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/music.c new/abcm2ps-8.14.7/music.c --- old/abcm2ps-8.14.6/music.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/music.c 2020-02-19 14:00:51.000000000 +0100 @@ -2632,8 +2632,10 @@ && new_line == staff_clef[staff].clef->u.clef.line) continue; g = s; - while (g->voice != voice) + while (g && g->voice != voice) g = g->ts_next; + if (!g) + continue; if (g->type != CLEF) { g = insert_clef(g, new_type, new_line); if (s2->sflags & S_CLEF_AUTO) @@ -3167,7 +3169,8 @@ s->ts_next = last_s; s->ts_prev = last_s->ts_prev; - s->ts_prev->ts_next = s; + if (s->ts_prev) + s->ts_prev->ts_next = s; if (!s->ts_prev || s->ts_prev->type != type) s->sflags |= S_SEQST; last_s->ts_prev = s; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/parse.c new/abcm2ps-8.14.7/parse.c --- old/abcm2ps-8.14.6/parse.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/parse.c 2020-02-19 14:00:51.000000000 +0100 @@ -3,7 +3,7 @@ * * This file is part of abcm2ps. * - * Copyright (C) 1998-2019 Jean-François Moine (http://moinejf.free.fr) + * Copyright (C) 1998-2020 Jean-François Moine (http://moinejf.free.fr) * Adapted from abc2ps, Copyright (C) 1996-1998 Michael Methfessel * * This program is free software; you can redistribute it and/or modify it @@ -233,7 +233,8 @@ for (;;) { if (set_sy) { fl = 1; // start a new sequence - if (!new_sy) { +// if (!new_sy) { + if (1) { set_sy = 0; multi = -1; memset(vn, -1, sizeof vn); @@ -2315,7 +2316,7 @@ /* -- get staves definition (%%staves / %%score) -- */ static void get_staves(struct SYMBOL *s) { - struct SYMBOL *s2; +// struct SYMBOL *s2; struct VOICE_S *p_voice, *p_voice2; struct staff_s *p_staff, staves[MAXVOICE]; int i, flags, voice, staff, range, dup_voice, maxtime; @@ -2357,18 +2358,18 @@ curvoice->time = maxtime; // put the staves before a measure bar (see draw_bar()) - s2 = curvoice->last_sym; - if (s2 && s2->type == BAR && s2->time == maxtime) { - curvoice->last_sym = s2->prev; - if (!curvoice->last_sym) - curvoice->sym = NULL; - sym_link(s, STAVES); - s->next = s2; - s2->prev = s; - curvoice->last_sym = s2; - } else { +// s2 = curvoice->last_sym; +// if (s2 && s2->type == BAR && s2->time == maxtime) { +// curvoice->last_sym = s2->prev; +// if (!curvoice->last_sym) +// curvoice->sym = NULL; +// sym_link(s, STAVES); +// s->next = s2; +// s2->prev = s; +// curvoice->last_sym = s2; +// } else { sym_link(s, STAVES); // link the staves in the current voice - } +// } s->state = ABC_S_HEAD; /* (output PS sequences immediately) */ parsys->nstaff = nstaff; system_new(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/svg.c new/abcm2ps-8.14.7/svg.c --- old/abcm2ps-8.14.6/svg.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/svg.c 2020-02-19 14:00:51.000000000 +0100 @@ -2344,6 +2344,21 @@ free(s); return; } + if (strcmp(op, "dacoda") == 0) { + setg(1); + e = elt_dup(stack); + y = gcur.yoffs - pop_free_val() - 7; + e2 = elt_dup(stack); + e2->u.v += 10; + x = gcur.xoffs + pop_free_val() - 10; + fprintf(fout, "<text style=\"font:16px serif\"\n" + " x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\">Da</text>\n", + x, y); + push(e2); + push(e); + xysym("coda", D_coda); + return; + } if (strcmp(op, "def") == 0) { ps_exec("!"); return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/abcm2ps-8.14.6/syms.c new/abcm2ps-8.14.7/syms.c --- old/abcm2ps-8.14.6/syms.c 2019-11-05 14:02:00.000000000 +0100 +++ new/abcm2ps-8.14.7/syms.c 2020-02-19 14:00:51.000000000 +0100 @@ -535,10 +535,16 @@ " M 0.8 SLW -6 1.2 RM 12.6 12.6 RL stroke\n" " 7 add exch 6 sub exch 1.2 0 360 arc fill\n" " 8 add exch 6 add exch 1.2 0 360 arc fill}!\n" + /* x y dacoda - Da Coda */ + "/dacoda{2 1 roll 10 add 2 1 roll dup 3 -1 roll dup 3 1 roll -23 add 4 1 roll\n" + " 1 SLW 2 add 2 copy M 0 20 RL\n" + " 2 copy M -10 10 RM 20 0 RL stroke\n" + " 10 add 6 0 360 arc 1.7 SLW stroke\n" + " /Times-Roman 16 selectfont 7 add M (Da) showc}!\n" /* x y coda - coda */ "/coda{ 1 SLW 2 add 2 copy M 0 20 RL\n" - " 2 copy M -10 10 RM 20 0 RL stroke\n" - " 10 add 6 0 360 arc 1.7 SLW stroke}!\n" + " 2 copy M -10 10 RM 20 0 RL 1.1 SLW stroke\n" + " exch -7 add exch (O) 3 1 roll /Times-Bold 18 selectfont 4 add M show}!\n" /* x y tclef - treble clef */ "/utclef{<95200072\n" " 0000ff2e01c2030c\n" ++++++ compiler_flags.patch ++++++ --- /var/tmp/diff_new_pack.pUYwlt/_old 2020-02-20 14:56:33.006425776 +0100 +++ /var/tmp/diff_new_pack.pUYwlt/_new 2020-02-20 14:56:33.006425776 +0100 @@ -1,21 +1,21 @@ -diff -urEbw abcm2ps-8.14.6/configure abcm2ps-8.14.6.new/configure ---- abcm2ps-8.14.6/configure 2019-11-05 14:02:00.000000000 +0100 -+++ abcm2ps-8.14.6.new/configure 2019-11-08 11:51:14.147405009 +0100 -@@ -5,7 +5,7 @@ - VDATE=2019-11-05 +diff -urEbw abcm2ps-8.14.7/configure abcm2ps-8.14.7.new/configure +--- abcm2ps-8.14.7/configure 2020-02-19 14:00:51.000000000 +0100 ++++ abcm2ps-8.14.7.new/configure 2020-02-19 14:37:35.365351023 +0100 +@@ -6,7 +6,7 @@ CC=gcc + PKG_CONFIG=pkg-config -CFLAGS="-g -O2 -Wall -pipe" +CFLAGS="$RPM_OPT_FLAGS -pipe" srcdir=. prefix=/usr/local -@@ -60,8 +60,8 @@ - if which pkg-config > /dev/null ; then - if pkg-config --exists freetype2 ; then - if pkg-config --exists pangocairo ; then -- CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `pkg-config pango cairo freetype2 --cflags`" -- LDLIBS="$LDLIBS `pkg-config pangocairo pangoft2 freetype2 --libs`" +@@ -61,8 +61,8 @@ + if which $PKG_CONFIG > /dev/null ; then + if $PKG_CONFIG --exists freetype2 ; then + if $PKG_CONFIG --exists pangocairo ; then +- CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `$PKG_CONFIG pango cairo freetype2 --cflags`" +- LDLIBS="$LDLIBS `$PKG_CONFIG pangocairo pangoft2 freetype2 --libs`" + CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `pkg-config pango cairo gobject-2.0 freetype2 --cflags`" + LDLIBS="$LDLIBS `pkg-config pangocairo pangoft2 gobject-2.0 freetype2 --libs`" else
