From f5b9df01cb404aeecaa0feb8cc014827d920d7ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20Mairb=C3=B6ck?= Date: Wed, 19 Oct 2022 19:27:33 +0200 Subject: [PATCH] frescobaldi: new recipe (#6924) --- .../additional-files/frescobaldi.rdef.in | 74 ++++++++++++ .../frescobaldi/frescobaldi-3.2.recipe | 85 ++++++++++++++ .../patches/frescobaldi-3.2.patchset | 111 ++++++++++++++++++ 3 files changed, 270 insertions(+) create mode 100644 media-sound/frescobaldi/additional-files/frescobaldi.rdef.in create mode 100644 media-sound/frescobaldi/frescobaldi-3.2.recipe create mode 100644 media-sound/frescobaldi/patches/frescobaldi-3.2.patchset diff --git a/media-sound/frescobaldi/additional-files/frescobaldi.rdef.in b/media-sound/frescobaldi/additional-files/frescobaldi.rdef.in new file mode 100644 index 000000000..67747382e --- /dev/null +++ b/media-sound/frescobaldi/additional-files/frescobaldi.rdef.in @@ -0,0 +1,74 @@ + +resource app_flags B_MULTIPLE_LAUNCH; + +resource app_version { + major = @MAJOR@, + middle = @MIDDLE@, + minor = @MINOR@, + variety = B_APPV_FINAL, + internal = 0, + short_info = "LilyPond Music Editor", + long_info = "Frescobaldi is an advanced text editor to edit LilyPond sheet music files." +}; + +resource app_signature "application/x-vnd.frescobaldi"; + +resource("QT:QPA_FLAGS") "Q_REF_TO_ARGV"; + +resource vector_icon { + $"6E6369660903395A400500020106020000003CC603BDF1CC0000004A02A94A5B" + $"DC0069FFCDFF008357020106020000003CA2ECBD05040000004A021949A02A00" + $"FFFFFFFFFD256702010602BB34DB3C303EBC72C8BB96594A3FE44853CE00F7F7" + $"F7FFFF3E8A020106023679F139FD85BC0FDB388F2A49C0764945A600FFFFFFFF" + $"FF89B5020106020000003BC5B9BBCB9F00000049C21D490B5300FFFFFFFFFFC3" + $"D3020106033452A43A29CDBA554534815049E75D499E1000FF8C0086FFC500FF" + $"FFFF0003FFE60C0B0608FF7FCC63C2D3CC63C2D3CC63C5FCC61ACA7BC9FEC8E7" + $"C236CC0FB987CA7BBD6BCC0FB5A3C8E7B33EC2D3B33EC5FCB33EBFAAB987BB2B" + $"B5A3BCBFBD6BB997C61ABB2BC236B997C9FEBCBFCC63C2D3CC63BFAACC63C2D3" + $"C2D30608FF7FCC63C2D3CC63C2D3CC63C5FCC61ACA7BC9FEC8E7C236CC0FB987" + $"CA7BBD6BCC0FB5A3C8E7B33EC2D3B33EC5FCB33EBFAAB987BB2BB5A3BCBFBD6B" + $"B997C61ABB2BC236B997C9FEBCBFCC63C2D3CC63BFAACC63C2D3C2D30608FF7F" + $"CC63C209CC63C209CC63C532C61AC9B1C9FEC81DC236CB45B987C9B1BD6BCB45" + $"B5A3C81DB33EC209B33EC532B33EBEE1B987BA61B5A3BBF5BD6BB8CDC61ABA61" + $"C236B8CDC9FEBBF5CC63C209CC63BEE1CC63C209C2090608FF7FCC63C209CC63" + $"C209CC63C532C61AC9B1C9FEC81DC236CB45B987C9B1BD6BCB45B5A3C81DB33E" + $"C209B33EC532B33EBEE1B987BA61B5A3BBF5BD6BB8CDC61ABA61C236B8CDC9FE" + $"BBF5CC63C209CC63BEE1CC63C209C2090218C1C7B79EC1C7B79EC128B799BED4" + $"BB2EBFD3B9BCBEC1BB23BE9ABB0EBEAEBB19BDB5BA0FBC66B957BCD7B931BC41" + $"B963BC0EB9BBBC25B987BB02B93EB9FDB940BA34B8FBB9A0B9B5B9D6BC75B9AD" + $"BB0DB816BC61B648BCBAB667BC57B61EBD3CB868BFDFB728BE86B76AC032B69A" + $"C0EDB693C088B6A2C162B8A6C27FB781C1F2B73CC3ECB61BC647B58FC590B6B1" + $"C70BBCD4C536BA7FC585BD10C62CBDC9C7F4BD59C7DDBE2DC809C0E1C5ADBFB3" + $"C65BC2E0C6ACC505C8B5C48AC94EC58DC80AC5BDC3E0C5F1C59EC76FC31FC98E" + $"C180C96EC202C9A5C122C756BF97C8A2C070C8A1BE2FC978BC58CA0DBCB3C886" + $"BBC5C3BFBD07C576BCB2C348BBF2C1D1B79FC29EB7CAC1CDB79FC1C7B79EC1CA" + $"B79EC1C7B79EC1C7B79EC1C7B79EC1C7B79E020AC5DFC6C9C5DFC6C9C534C7C7" + $"BE92C410BFB7C42FBD3BC3ECB64BC4C5B717C5D7B557C37DBA57BE01BA77BF2E" + $"BA34BCB6B9B3B647B8F7B75EBA5EB54AC2D9BA44C1A0BA63C431BA22C948B92C" + $"C827B878CA50B9D1C58EBF9EC56EBE71C5B1C0E9C5DFC6C9C69BC5B2C5DFC6C9" + $"C5DFC6C9C5DFC6C9C5DFC6C9020ABE08C65CBE08C65CBD2BC631BC49C1CDBCC7" + $"47BBCBC110B61EBA3DB5CBBB83B65630BD9FB9ADBCE5BA2DBE59B92DC175B43A" + $"C099B40FC252B465C3AFBA4EC331B991C42DBB0BC9B1BEFDC9DBBE1DC987BFDE" + $"C3DEC2ABC498C22BC324C32CBE08C65CBEE5C687BE08C65CBE08C65CBE08C65C" + $"BE08C65C020AC26CC487C26CC487C181C4E7BE42C2B5BF2DC318BD58C252B698" + $"BEDAB6BAC041B67FBDDDBB5FBC21BAFCBD0BBBC2BB36BC1CB64CBB30B6ADBD07" + $"B5ECC0FEBAEBC013BA88C1E8BB4EC74DBA4C5230C7ADBB37C329BFBDC38CBED2" + $"C2C6C0A8C26CC487C358C427C26CC487C26CC487C26CC487C26CC487020AC4EC" + $"BFC9C4ECBFC9C498C07FC095C081C151C03BBFD9C0C7BE04C29CBEBAC2EFBD4E" + $"C248BBC3BFF2BC09C0AEBB7DBF36B907BB25B8B4BBDBB95ABA6FBE22BA25BD66" + $"BA6BBEDEB9DFC337B6C9C281B675C3EDB71CC2BFBD38C279BC7CC305BDF3C4EC" + $"BFC9C53FBF12C4ECBFC9C4ECBFC9C4ECBFC9C4ECBFC9020EC299BE26C299BE26" + $"C28CBE8CC280BF9EC2CCBF51C218C00AC06DC063C0FBC028C005C08EBEFDC113" + $"BF6BC127BE65C0F8BD45BFD3BDC1C025BCEBBF97BBEEBF0ABC10BF6CBBBFBE84" + $"BC49BD06BC37BD93BC56BC9FBC62BB8DBC16BBDBBCCABB21BE75BAC8BDE7BB04" + $"BEDCBA9EBFE5BA18BF77BA05C07CBA33C19DBB58C121BB06C1F7BB94C2F4BC21" + $"C2D2BBC0C323BCA7C299BE26C2ABBD98C299BE26C299BE26C299BE26C299BE26" + $"020EC299BE26C299BE26C28CBE8CC280BF9EC2CCBF51C218C00AC06DC063C0FB" + $"C028C005C08EBEFDC113BF6BC127BE65C0F8BD45BFD3BDC1C025BCEBBF97BBEE" + $"BF0ABC10BF6CBBBFBE84BC49BD06BC37BD93BC56BC9FBC62BB8DBC16BBDBBCCA" + $"BB21BE75BAC8BDE7BB04BEDCBA9EBFE5BA18BF77BA05C07CBA33C19DBB58C121" + $"BB06C1F7BB94C2F4BC21C2D2BBC0C323BCA7C299BE26C2ABBD98C299BE26C299" + $"BE26C299BE26C299BE260B0A000100000A0101011001178002040A020102000A" + $"0101031001178002040A000104000A030105000A040106000A050107000A0601" + $"08000A070109000A08010A100117800004" +}; diff --git a/media-sound/frescobaldi/frescobaldi-3.2.recipe b/media-sound/frescobaldi/frescobaldi-3.2.recipe new file mode 100644 index 000000000..3705cd781 --- /dev/null +++ b/media-sound/frescobaldi/frescobaldi-3.2.recipe @@ -0,0 +1,85 @@ +SUMMARY="LilyPond Music Editor" +DESCRIPTION="Frescobaldi is an advanced text editor to edit LilyPond sheet music files. +Features include an integrated PDF preview and a powerful Score Wizard." +HOMEPAGE="https://www.frescobaldi.org/" +COPYRIGHT="2008-2020 by Wilbert Berendsen" +LICENSE="GNU GPL v3" +REVISION="1" +SOURCE_URI="https://github.com/frescobaldi/frescobaldi/releases/download/v$portVersion/frescobaldi-$portVersion.tar.gz" +CHECKSUM_SHA256="4d707b5b35392f84d904d1cc7ecc36992f8e85f6868fdc5a4983c78a0e850acf" +PATCHES="frescobaldi-$portVersion.patchset" +ADDITIONAL_FILES="frescobaldi.rdef.in" +PYTHON3_VERSION="3.8" + +ARCHITECTURES="any" + +PROVIDES=" + frescobaldi = $portVersion + app:Frescobaldi = $portVersion + " +REQUIRES=" + haiku + myspell + pyqt5_python38 + python_ly_python38 + python_poppler_qt5_python38 + qpageview_python38 + cmd:python$PYTHON3_VERSION + " + +BUILD_REQUIRES=" + haiku_devel + pyqt5_python38 + python_ly_python38 + python_poppler_qt5_python38 + qpageview_python38 + setuptools_python38 + " +BUILD_PREREQUIRES=" + cmd:python$PYTHON3_VERSION + " + +INSTALL() +{ + OLDPYTHONPATH=$PYTHONPATH + + local packageLinksDir=$(dirname $portPackageLinksDir) + local packageName="${portName}-$portFullVersion" + + # GENERIC: all python_setuptools-based installs need this + python=$packageLinksDir/$packageName/cmd~python$PYTHON3_VERSION/bin/python$PYTHON3_VERSION + pythonVersion=$($python --version 2>&1 | sed 's/Python //' | head -c3) + installLocation=lib/python$pythonVersion/vendor-packages/ + export PYTHONPATH=$installLocation:$OLDPYTHONPATH + + $python setup.py install --prefix=$prefix --root=/ + + # remove unneeded hyphenation dictionaries, we depend on myspell instead + rm $prefix/${installLocation}frescobaldi_app/hyphdicts/*.dic + + mkdir -p $appsDir + mv $binDir/frescobaldi $appsDir/Frescobaldi + + # Preparing the attributes + local MAJOR="`echo "$portVersion" | cut -d. -f1`" + local MIDDLE="`echo "$portVersion" | cut -d. -f2`" + local MINOR="`echo "$portVersion" | cut -d. -f3`" + sed \ + -e "s|@MAJOR@|$MAJOR|" \ + -e "s|@MIDDLE@|$MIDDLE|" \ + -e "s|@MINOR@|${MINOR:-0}|" \ + $portDir/additional-files/frescobaldi.rdef.in \ + > frescobaldi.rdef + + # Installing extra-attribs + rc frescobaldi.rdef + + settype -t application/x-vnd.Be-elfexecutable $appsDir/Frescobaldi + resattr -o $appsDir/Frescobaldi frescobaldi.rsrc + + addAppDeskbarSymlink $appsDir/Frescobaldi + + ### PACKAGING HACK ### + rm -rf $prefix/packages + ### PACKAGING HACK ### +} diff --git a/media-sound/frescobaldi/patches/frescobaldi-3.2.patchset b/media-sound/frescobaldi/patches/frescobaldi-3.2.patchset new file mode 100644 index 000000000..607107ca2 --- /dev/null +++ b/media-sound/frescobaldi/patches/frescobaldi-3.2.patchset @@ -0,0 +1,111 @@ +From 9509296eb7c0cf7d685e31f44ea61b96d8785f73 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Joachim=20Mairb=C3=B6ck?= +Date: Sat, 14 May 2022 18:05:48 +0200 +Subject: Haiku additions + + +diff --git a/frescobaldi_app/helpers.py b/frescobaldi_app/helpers.py +index be28f0f..9f84788 100644 +--- a/frescobaldi_app/helpers.py ++++ b/frescobaldi_app/helpers.py +@@ -119,6 +119,8 @@ def terminalCommands(): + yield ['cmd.exe'] + elif sys.platform == 'darwin': + yield ['open', '-a', 'Terminal', '$f'] ++ elif sys.platform == 'haiku1': ++ yield ['Terminal', '--working-directory', '$f'] + else: + # find a default linux terminal + paths = os.environ.get('PATH', os.defpath).split(os.pathsep) +diff --git a/frescobaldi_app/hyphendialog.py b/frescobaldi_app/hyphendialog.py +index 58119a1..69da12d 100644 +--- a/frescobaldi_app/hyphendialog.py ++++ b/frescobaldi_app/hyphendialog.py +@@ -56,6 +56,7 @@ default_paths = [ + "share/scribus/dicts", + "share/scribus-ng/dicts", + "share/hunspell", ++ "data/hunspell", + ] + + +@@ -68,7 +69,14 @@ def settings(): + def directories(): + """ Yields a list of existing paths based on config """ + # prefixes to look in for relative paths +- prefixes = ['/usr/', '/usr/local/'] ++ prefixes = [ ++ '/usr/', ++ '/usr/local/', ++ '/boot/system/', ++ '/boot/home/config/', ++ '/boot/system/non-packaged/', ++ '/boot/home/config/non-packaged/', ++ ] + + def gen(): + # if the path is not absolute, add it to all prefixes. +diff --git a/frescobaldi_app/lilydoc/manager.py b/frescobaldi_app/lilydoc/manager.py +index 9bb39df..2a25c6c 100644 +--- a/frescobaldi_app/lilydoc/manager.py ++++ b/frescobaldi_app/lilydoc/manager.py +@@ -123,6 +123,10 @@ def urls(): + '/usr/local', + '/usr/share/doc', + '/usr/doc', ++ '/boot/system', ++ '/boot/home/config', ++ '/boot/system/non-packaged', ++ '/boot/home/config/non-packaged', + ) if os.path.isdir(p)] + # split in local and non-local ones (local are preferred) + user_prefixes = [] +@@ -136,9 +140,14 @@ def urls(): + def paths(path): + """Yields possible places where LilyPond documentation could live.""" + yield path ++ origpath = path + path = os.path.join(path, 'share', 'doc', 'lilypond', 'html') + yield path + yield os.path.join(path, 'offline-root') ++ # Haiku case ++ path = os.path.join(origpath, 'documentation', 'packages', 'lilypond', 'html') ++ yield path ++ yield os.path.join(path, 'offline-root') + + def find(path): + """Finds LilyPond documentation.""" +diff --git a/frescobaldi_app/lilypondinfo.py b/frescobaldi_app/lilypondinfo.py +index a0e9bbc..c9779b6 100644 +--- a/frescobaldi_app/lilypondinfo.py ++++ b/frescobaldi_app/lilypondinfo.py +@@ -311,6 +311,11 @@ class LilyPondInfo(object): + if os.path.isdir(d): + self.datadir = d + return ++ # Haiku case ++ d = os.path.join(self.prefix(), 'data', 'lilypond', suffix) ++ if os.path.isdir(d): ++ self.datadir = d ++ return + self.datadir = False + app.job_queue().add_job(j, 'generic') + +diff --git a/setup.py b/setup.py +index 7edb3f8..bf5d4af 100644 +--- a/setup.py ++++ b/setup.py +@@ -53,6 +53,10 @@ if sys.platform.startswith('win'): + 'bitmap': 'windows/frescobaldi-wininst.bmp', + } + data_files = [] ++elif sys.platform.startswith('haiku'): ++ data_files = [ ++ ('documentation/man/man1', ['frescobaldi.1']), ++ ] + else: + data_files = [ + ('share/icons/hicolor/scalable/apps', ['frescobaldi_app/icons/org.frescobaldi.Frescobaldi.svg']), +-- +2.36.1 +