From 2d7ce7ef2319d3acdbd4ebe1a3660307bd2ddf5e Mon Sep 17 00:00:00 2001 From: Mattia Rizzolo Date: Sun, 13 Dec 2015 18:21:11 +0100 Subject: jack (3.1.1+cvs20050801-29.1) unstable; urgency=medium * Non-maintainer upload. * Build with dh-python instead of python-support. Closes: #786042 * Update watch file. [dgit import package jack 3.1.1+cvs20050801-29.1] --- debian/NEWS | 119 +++ debian/changelog | 1115 ++++++++++++++++++++ debian/compat | 1 + debian/control | 33 + debian/copyright | 34 + debian/dirs | 2 + debian/docs | 2 + debian/examples | 3 + debian/examples.txt | 61 ++ debian/install | 2 + debian/jackrc | 45 + debian/manpages | 1 + debian/menu | 2 + debian/patches/05_she_bang.patch | 13 + debian/patches/06_link_ncursew.patch | 17 + debian/patches/10_vbr_default_man.patch | 13 + debian/patches/11_choose_bitrate_quality.patch | 20 + debian/patches/12_gogo_vbr-otf-cmd.patch | 15 + debian/patches/13_rc_hash.patch | 91 ++ debian/patches/14_tocfile_abspath.patch | 33 + debian/patches/15_imagefile_abspath.patch | 17 + debian/patches/16_len_unusable_replacement.patch | 23 + debian/patches/17_fix_ref_no_various.patch | 34 + debian/patches/18_warn_no_base_dir.patch | 33 + debian/patches/19_man_duplicate_overwrite.patch | 16 + debian/patches/20_fix_sub_paths_warning.patch | 16 + debian/patches/21_fallback_ripper.patch | 62 ++ debian/patches/22_msf_offset.patch | 21 + debian/patches/23_flac_options.patch | 17 + debian/patches/24_vbr_before_otf.patch | 26 + debian/patches/25_ignore_empty_freedb_info.patch | 115 ++ debian/patches/26_t_artist_cleanup.patch | 66 ++ debian/patches/27_allow_year_genre_sa.patch | 13 + debian/patches/28_allow_edit_cddb.patch | 34 + debian/patches/29_remove_freedb-de.patch | 18 + debian/patches/30_add_freedb_mirrors.patch | 84 ++ debian/patches/31_real_bitrate_progress.patch | 26 + debian/patches/32_man_minus.patch | 84 ++ debian/patches/33_flac_mutagen.patch | 69 ++ debian/patches/34_toc_invocation_fail.patch | 24 + debian/patches/35_fix_xtermset.patch | 14 + debian/patches/36_check_plugin.patch | 21 + debian/patches/37_expand_CBR_acronym.patch | 15 + debian/patches/38_remove_gen_device.patch | 104 ++ debian/patches/39_main_loop_valueerror.patch | 49 + debian/patches/40_enable_term.patch | 55 + debian/patches/41_nicify_wait.patch | 24 + debian/patches/42_cd_device_fallback.patch | 56 + debian/patches/43_string_option.patch | 22 + debian/patches/44_guess_toc_ogg_flac.patch | 89 ++ debian/patches/45_fix_normalize_example.patch | 16 + debian/patches/46_case_insens_fn.dpatch | 33 + debian/patches/47_locale_check.patch | 26 + debian/patches/48_search_base_dir.patch | 21 + debian/patches/49_nicer_ripper_encoder.patch | 32 + debian/patches/50_check_ripper_encoder.patch | 34 + debian/patches/51_error_not_block_device.patch | 36 + debian/patches/52_cdparanoia_toc.patch | 69 ++ debian/patches/53_no_tag_when_freedb_fails.patch | 38 + debian/patches/54_check_cont_failed_query.patch | 19 + debian/patches/55_fix_sloppy.patch | 25 + debian/patches/56_ctrl_c_termset.patch | 71 ++ debian/patches/57_feedb_asciiletters.patch | 18 + debian/patches/58_progress_changed_error.patch | 14 + debian/patches/59_assume_ok_query.patch | 33 + .../60_ask_edit_freedb_when_query_fails.patch | 19 + debian/patches/61_pymem_del.patch | 27 + debian/patches/62_dont_repeat_inexact.patch | 39 + debian/patches/63_date_unicode.patch | 14 + debian/patches/64_catch_id3_error.patch | 29 + debian/patches/66_rename_unicode.patch | 19 + debian/patches/67_progress_utf8_vs_filenames.patch | 16 + debian/patches/68_support_high_char_renames.patch | 21 + debian/patches/69_document_freedb_dir.patch | 19 + debian/patches/70_fix_upd_progress.patch | 76 ++ debian/patches/71_freedb_filename_cleanup.patch | 90 ++ debian/patches/72_upd_progress_renamed.patch | 72 ++ debian/patches/73_err_unknown_sub.patch | 98 ++ debian/patches/74_multi_replace_cleanup.patch | 94 ++ debian/patches/75_fix_datatrack_rename.patch | 177 ++++ debian/patches/76_mkdirname_cleanup.patch | 40 + debian/patches/77_upd_progress_flac.patch | 32 + debian/patches/78_setlocale.patch | 16 + debian/patches/79_unicode_width.patch | 52 + debian/patches/80_dest_exists_abs_path.patch | 16 + debian/patches/81_check_space.patch | 30 + debian/patches/82_fix_append_year_doc.patch | 31 + debian/patches/83_man_plugin.patch | 53 + debian/patches/84_dyear_dgenre.patch | 107 ++ debian/patches/85_dir_template_yg.patch | 54 + debian/patches/86_mention_year_dir_template.patch | 14 + debian/patches/87_use_existing_cddb_category.patch | 121 +++ debian/patches/88_fix_argv_loop.patch | 27 + debian/patches/89_saner_argv_lists.patch | 35 + debian/patches/90_fix_df.patch | 24 + debian/patches/91_fix_cdrdao_image.patch | 34 + debian/patches/92_fix_python2.6_warning.patch | 21 + debian/patches/93_extd_parsing.patch | 44 + debian/patches/94_addstr_error.patch | 40 + debian/patches/95_fix_empty_input.patch | 42 + debian/patches/96_fix_cdda2wav_parsing.patch | 33 + debian/patches/97_man_mp3vsogg.patch | 90 ++ debian/patches/98_man_default_encoders.patch | 13 + debian/patches/99_addstr_error.patch | 43 + debian/patches/99a_correct-category-list.patch | 54 + debian/rules | 16 + debian/watch | 5 + 107 files changed, 5251 insertions(+) create mode 100644 debian/NEWS create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/dirs create mode 100644 debian/docs create mode 100644 debian/examples create mode 100644 debian/examples.txt create mode 100644 debian/install create mode 100644 debian/jackrc create mode 100644 debian/manpages create mode 100644 debian/menu create mode 100644 debian/patches/05_she_bang.patch create mode 100644 debian/patches/06_link_ncursew.patch create mode 100644 debian/patches/10_vbr_default_man.patch create mode 100644 debian/patches/11_choose_bitrate_quality.patch create mode 100644 debian/patches/12_gogo_vbr-otf-cmd.patch create mode 100644 debian/patches/13_rc_hash.patch create mode 100644 debian/patches/14_tocfile_abspath.patch create mode 100644 debian/patches/15_imagefile_abspath.patch create mode 100644 debian/patches/16_len_unusable_replacement.patch create mode 100644 debian/patches/17_fix_ref_no_various.patch create mode 100644 debian/patches/18_warn_no_base_dir.patch create mode 100644 debian/patches/19_man_duplicate_overwrite.patch create mode 100644 debian/patches/20_fix_sub_paths_warning.patch create mode 100644 debian/patches/21_fallback_ripper.patch create mode 100644 debian/patches/22_msf_offset.patch create mode 100644 debian/patches/23_flac_options.patch create mode 100644 debian/patches/24_vbr_before_otf.patch create mode 100644 debian/patches/25_ignore_empty_freedb_info.patch create mode 100644 debian/patches/26_t_artist_cleanup.patch create mode 100644 debian/patches/27_allow_year_genre_sa.patch create mode 100644 debian/patches/28_allow_edit_cddb.patch create mode 100644 debian/patches/29_remove_freedb-de.patch create mode 100644 debian/patches/30_add_freedb_mirrors.patch create mode 100644 debian/patches/31_real_bitrate_progress.patch create mode 100644 debian/patches/32_man_minus.patch create mode 100644 debian/patches/33_flac_mutagen.patch create mode 100644 debian/patches/34_toc_invocation_fail.patch create mode 100644 debian/patches/35_fix_xtermset.patch create mode 100644 debian/patches/36_check_plugin.patch create mode 100644 debian/patches/37_expand_CBR_acronym.patch create mode 100644 debian/patches/38_remove_gen_device.patch create mode 100644 debian/patches/39_main_loop_valueerror.patch create mode 100644 debian/patches/40_enable_term.patch create mode 100644 debian/patches/41_nicify_wait.patch create mode 100644 debian/patches/42_cd_device_fallback.patch create mode 100644 debian/patches/43_string_option.patch create mode 100644 debian/patches/44_guess_toc_ogg_flac.patch create mode 100644 debian/patches/45_fix_normalize_example.patch create mode 100644 debian/patches/46_case_insens_fn.dpatch create mode 100644 debian/patches/47_locale_check.patch create mode 100644 debian/patches/48_search_base_dir.patch create mode 100644 debian/patches/49_nicer_ripper_encoder.patch create mode 100644 debian/patches/50_check_ripper_encoder.patch create mode 100644 debian/patches/51_error_not_block_device.patch create mode 100644 debian/patches/52_cdparanoia_toc.patch create mode 100644 debian/patches/53_no_tag_when_freedb_fails.patch create mode 100644 debian/patches/54_check_cont_failed_query.patch create mode 100644 debian/patches/55_fix_sloppy.patch create mode 100644 debian/patches/56_ctrl_c_termset.patch create mode 100644 debian/patches/57_feedb_asciiletters.patch create mode 100644 debian/patches/58_progress_changed_error.patch create mode 100644 debian/patches/59_assume_ok_query.patch create mode 100644 debian/patches/60_ask_edit_freedb_when_query_fails.patch create mode 100644 debian/patches/61_pymem_del.patch create mode 100644 debian/patches/62_dont_repeat_inexact.patch create mode 100644 debian/patches/63_date_unicode.patch create mode 100644 debian/patches/64_catch_id3_error.patch create mode 100644 debian/patches/66_rename_unicode.patch create mode 100644 debian/patches/67_progress_utf8_vs_filenames.patch create mode 100644 debian/patches/68_support_high_char_renames.patch create mode 100644 debian/patches/69_document_freedb_dir.patch create mode 100644 debian/patches/70_fix_upd_progress.patch create mode 100644 debian/patches/71_freedb_filename_cleanup.patch create mode 100644 debian/patches/72_upd_progress_renamed.patch create mode 100644 debian/patches/73_err_unknown_sub.patch create mode 100644 debian/patches/74_multi_replace_cleanup.patch create mode 100644 debian/patches/75_fix_datatrack_rename.patch create mode 100644 debian/patches/76_mkdirname_cleanup.patch create mode 100644 debian/patches/77_upd_progress_flac.patch create mode 100644 debian/patches/78_setlocale.patch create mode 100644 debian/patches/79_unicode_width.patch create mode 100644 debian/patches/80_dest_exists_abs_path.patch create mode 100644 debian/patches/81_check_space.patch create mode 100644 debian/patches/82_fix_append_year_doc.patch create mode 100644 debian/patches/83_man_plugin.patch create mode 100644 debian/patches/84_dyear_dgenre.patch create mode 100644 debian/patches/85_dir_template_yg.patch create mode 100644 debian/patches/86_mention_year_dir_template.patch create mode 100644 debian/patches/87_use_existing_cddb_category.patch create mode 100644 debian/patches/88_fix_argv_loop.patch create mode 100644 debian/patches/89_saner_argv_lists.patch create mode 100644 debian/patches/90_fix_df.patch create mode 100644 debian/patches/91_fix_cdrdao_image.patch create mode 100644 debian/patches/92_fix_python2.6_warning.patch create mode 100644 debian/patches/93_extd_parsing.patch create mode 100644 debian/patches/94_addstr_error.patch create mode 100644 debian/patches/95_fix_empty_input.patch create mode 100644 debian/patches/96_fix_cdda2wav_parsing.patch create mode 100644 debian/patches/97_man_mp3vsogg.patch create mode 100644 debian/patches/98_man_default_encoders.patch create mode 100644 debian/patches/99_addstr_error.patch create mode 100644 debian/patches/99a_correct-category-list.patch create mode 100755 debian/rules create mode 100644 debian/watch diff --git a/debian/NEWS b/debian/NEWS new file mode 100644 index 0000000..e752ed2 --- /dev/null +++ b/debian/NEWS @@ -0,0 +1,119 @@ +jack (3.1.1-14) unstable; urgency=low + + As of this version, base_dir is no longer set in /etc/jackrc. The + reason for this is that there is no standard location for sound or + media files and users may be surprised to find their files in ~/jack + (the previous default of base_dir). jack will now by default put + the files in the current working directory. You're welcome to set + base_dir in ~/.jack3rc (or /etc/jackrc) if you have a more appropriate + location. + + -- Martin Michlmayr Wed, 11 Jan 2006 13:51:32 +0000 + +jack (3.0.0-1) experimental; urgency=low + + The configuration has changed fundamentally with jack-3.0.0. + There is now a system-wide configuration file /etc/jackrc and + the user configuration files have been renamed to ~/.jack3rc. + Further, jack now has a simple scheme to set options permanently, + by adding --save to the command-line. This is the preferred way + to set options, as the syntax of the jackrc file has changed. + See the commented out options in /etc/jackrc for examples of + useful options and how to set them. + + -- Michael Banck Sat, 28 Feb 2004 21:30:43 +0000 + +jack (2.99.9-6) unstable; urgency=low + + jack now features a '--cddb-id' option, which lets you specify a + freedb CDDB id, even though jack calculates a different one. You + need to specify an ID3 genre via '-G/--id3-genre' for the freedb + lookup, too. Note that this option has not been applied or even + accepted upstream yet and is suspect to change in a later version. + + -- Michael Banck Sun, 31 Aug 2003 00:52:11 +0200 + +jack (2.99.9-2) unstable; urgency=low + + Alban Browaeys has pointed out that invalid OGG Vorbis tags are produced + under certain circumstances. While the OGG Vorbis specification requires + that the field contents is encoded in UTF-8, jack up to 2.99.9-1 wrote + an ASCII string to the field. This has been fixed in 2.99.9-2. + Fortunately, you do not have to re-encode your OGG files. Rather, you + can use jack's -R (rename) feature to simply update the OGG Vorbis tags. + A script is supplied which takes care of this automatically. Simply change + to the directory you keep your OGG files in, and run the script. For + example, if your OGG files are in /media/ogg, you have to do: + + $ cd /media/ogg + $ /usr/share/doc/jack/fix-vorbis-tags.pl + + -- Martin Michlmayr Sun, 22 Dec 2002 21:53:22 +0100 + +jack (2.99.9-1) unstable; urgency=low + + Jack now features an undocumented option to turn off + cdparanoia's --abort-on-skip option. The option's name is + --I-swear-I'll-never-give-these-files-to-anyone,-including-hot-babes-TM + Only use this option (if at all) when you already know that a CD will + not get ripped OK, as this means that unsuccesful rips will be + unnoticed. You have been warned and will continue on your own risk. + + -- Michael Banck Tue, 3 Sep 2002 02:26:19 +0200 + +jack (2.99.8-2) unstable; urgency=low + + It is now preferred to specify the vbr_quality rather than a + bitrate. You can do this by adding vbr_quality = $QUALITY to + your ~/.jackrc, $QUALITY being an integer from 0 (worst + quality, smallest files) to 10 (best quality, biggest files) + + Average bitrates for oggenc will be around 70-100 for 0 up to + 300-500 kbit/s for 10. vbr_quality = 5 (the default if you don't + specify the switch in your ~/.jackrc) will be around 150-170 + kbit/s. Please let me know if you get completely different bit- + rates so I can tune the default. Note that lame and gogo do + support this switch, too, but at least lame will have a much + slimmer bandwidth for the bitrate (from 100-200 kbit/s) than + oggenc. + + If you want to keep using the bitrate (I've been told that the + quality would be inferior at the same filesize), you can switch + the comments in /usr/bin/jack, line 425/426, or add a new helper + section like helpers['oggenc-local'] = {'type':"encoder"[...]"""} + to your ~/.jackrc(see end of auto-generated ~/.jackrc for an example) + + -- Michael Banck Fri, 24 May 2002 20:40:07 +0200 + +jack (2.99.7-4) unstable; urgency=low + + base_dir is now set to 'environ['HOME'] + "/jack"' (i.e. ~/jack) + when a new .jackrc is created. This is in preparation for a jack + menu item, so that jack does not dump the OGGs in the directory + you started X from. If you upgrade, nothing should change ATM. + + -- Michael Banck Sat, 23 Feb 2002 13:16:34 +0100 + +jack (2.99.7-1) unstable; urgency=low + + Jack-2.99.7 had a new .jackrc layout, you'll have to move your + old .jackrc elsewhere and tune the newly generated one. + + If jack fails reading the TOC(table of contents) for your + CD-drive, you can try adding + toc_prog = "cdda2wav" + or + toc_prog = "cdparanoia" + or simply + toc_prog = ripper + manually in your .jackrc. + + But beware, using this is deprecated and should be a last resort. + In particular, you will lose the ability to rip CDs with data tracks, + as jack no longer will be able to compare the TOCs! + + Please add to bug-nr. #118731 if you experience problems with + your CD-drive. + + -- Michael Banck Mon, 08 Oct 2001 18:02:20 +0000 + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..e070eee --- /dev/null +++ b/debian/changelog @@ -0,0 +1,1115 @@ +jack (3.1.1+cvs20050801-29.1) unstable; urgency=medium + + * Non-maintainer upload. + * Build with dh-python instead of python-support. Closes: #786042 + * Update watch file. + + -- Mattia Rizzolo Sun, 13 Dec 2015 17:21:11 +0000 + +jack (3.1.1+cvs20050801-29) unstable; urgency=low + + * debian/control (Depends): Added lame as an alternative to vorbis-tools and + flac. + + -- Michael Banck Fri, 30 Mar 2012 16:03:15 +0200 + +jack (3.1.1+cvs20050801-28) unstable; urgency=low + + * debian/control (Standards-Version): Bumped to 3.9.3. + * debian/rules (binary-predeb/jack): Remove README prior to package build, + it is outdated. + + -- Michael Banck Thu, 29 Mar 2012 18:23:22 +0200 + +jack (3.1.1+cvs20050801-27) unstable; urgency=low + + * debian/control (Uploaders): Removed Martin Michlmayr. + + -- Michael Banck Thu, 29 Mar 2012 17:37:19 +0200 + +jack (3.1.1+cvs20050801-26) unstable; urgency=low + + * debian/patches/99a_correct-category-list.patch: Make sure the correct + FreeDB categories are displayed when submitting a CD. Thanks to + Cédric Boutillier for the patch; closes: #536165. + * debian/control (Depends): Add ${shlibs:Depends} (for glibc) and + ${misc:Depends} (for debhelper). + * debian/copyright: Update to reflect that the license is GPL 2 or + later rather than GPL 2 only. + + -- Martin Michlmayr Mon, 10 Aug 2009 19:18:27 -1000 + +jack (3.1.1+cvs20050801-25) unstable; urgency=low + + * debian/patches/64_catch_id3_error.patch: eyeD3 only accepts years + that have 4 digits. Ignore year values that don't conform with + this; closes: #478784 + + -- Martin Michlmayr Sun, 04 May 2008 16:44:47 +0200 + +jack (3.1.1+cvs20050801-24) unstable; urgency=low + + * debian/patches/63_date_unicode.patch: Deal with abbreviated months + that contain UTF-8 in certain locales; closes: #471843. + + -- Martin Michlmayr Fri, 21 Mar 2008 16:14:53 +0100 + +jack (3.1.1+cvs20050801-23) unstable; urgency=medium + + * debian/patches/61_pymem_del.patch: Fix a bug in the way + the memory API is used since this would lead to a segfault + with Python 2.5. Thanks Barry deFreese and Thomas Viehmann + for the patch; closes: #468972. + * debian/patches/69_document_freedb_dir.patch: Document + freedb_dir since this option doesn't show up with --longhelp; + closes: #458384. + + -- Martin Michlmayr Sun, 09 Mar 2008 11:17:14 +0100 + +jack (3.1.1+cvs20050801-22) unstable; urgency=low + + * debian/patches/87_use_existing_cddb_category.patch: Don't assume + that the CDDB category is set because it doesn't have to be when + -Q and --cont-failed-query is used. Thanks, Stephan Balmer; + closes: #453724. + + -- Martin Michlmayr Thu, 27 Dec 2007 19:23:55 +0100 + +jack (3.1.1+cvs20050801-21) unstable; urgency=low + + * debian/patches/57_feedb_asciiletters.patch: Use ASCII letters only + when parsing Various Artist CDs rather than all letters that are + valid in a user's locale since jack doesn't deal with the latter + at the moment; closes: #452097. + + -- Martin Michlmayr Wed, 21 Nov 2007 20:35:23 +0100 + +jack (3.1.1+cvs20050801-20) unstable; urgency=low + + * debian/patches/76_remove_append_year.patch: Remove this patch since + upstream told me --append-year option is useful after all. This is + at the moment the only option to add a year only when the year is + actually known. Split other changes of this patch out into their + own patches. + * debian/patches/76_mkdirname_cleanup.patch: Clean up some code but + don't change any functionality. + * debian/patches/82_fix_append_year_doc.patch: --append-year is not + a boolean but accepts a string. + * debian/patches/86_mention_year_dir_template.patch: Document that + %y (year) can be used in dir_template. + + -- Martin Michlmayr Sun, 11 Nov 2007 11:10:56 +0100 + +jack (3.1.1+cvs20050801-19) unstable; urgency=low + + * debian/patches/59_assume_ok_query.patch: Tag tracks when the FreeDB + query failed but we can parse the FreeDB file since the user might + have edited the file manually; closes: #441270. + * debian/patches/60_ask_edit_freedb_when_query_fails.patch: Ask users + whether they want to edit the FreeDB data when the query fails. + + * debian/copyright: Add 2007 to the packaging copyright statement. + + -- Martin Michlmayr Sat, 27 Oct 2007 22:57:49 +0200 + +jack (3.1.1+cvs20050801-18) unstable; urgency=medium + + * debian/patches/06_link_ncursew.patch: Update to make sure that + -I/usr/include/ncursesw will be passed to the compiler; closes: + #447479. + + -- Martin Michlmayr Sun, 21 Oct 2007 15:08:50 +0200 + +jack (3.1.1+cvs20050801-17) unstable; urgency=medium + + * debian/control (Build-Depends): Use "libncursesw5-dev" rather + than libncurses5-dev. + + -- Martin Michlmayr Sun, 21 Oct 2007 13:38:22 +0200 + +jack (3.1.1+cvs20050801-16) unstable; urgency=medium + + * Switch back to jack's curses module since jack with Python's + curses module will produce a lot of curses related exceptions + when you resize the terminal; closes: #441369. + * debian/patches/06_dont_build_curses_module.patch: Remove. + * debian/patches/07_dont_warn_jack_curses.patch: Remove. + * debian/control (Architecture): Change architecture to "any". + + * debian/patches/06_link_ncursew.patch: Link against ncursesw rather + than ncurses so UTF-8 will work. + + * debian/patches/92_fix_python2.6_warning.patch: Don't use "with" + since it will become a reserved keyword in Python 2.6. + + * debian/menu: Update to the new menu hierarchy. + + -- Martin Michlmayr Sat, 20 Oct 2007 12:46:21 +0200 + +jack (3.1.1+cvs20050801-15) unstable; urgency=low + + * debian/patches/78_setlocale.patch: Set the locale. This is needed + so Unicode characters will be shown correctly (see the discussion + in #279000). Thanks, Martin v. Löwis. + * debian/patches/06_dont_build_curses_module.patch: Don't build the + curses module that comes with jack. We want to use the curses + module from Python because it supports UTF-8 properly. + * debian/control (Architecture): Change architecture to "all". + * debian/patches/07_dont_warn_jack_curses.patch: Don't warn when the + curses module from jack cannot be found. + * debian/patches/79_unicode_width.patch: Try to guess the real width + of a Unicode string as it's printed on the screen. The solution + used is not ideal but better than what we had before. Thanks, + Martin v. Löwis. + + -- Martin Michlmayr Wed, 29 Aug 2007 13:15:37 +0200 + +jack (3.1.1+cvs20050801-14) unstable; urgency=low + + * debian/patches/94_addstr_error.patch: patch from Anthony DeRobertis + to ignore another curses addstr error; closes: #401127. + + -- Martin Michlmayr Fri, 01 Dec 2006 13:30:48 +0100 + +jack (3.1.1+cvs20050801-13) unstable; urgency=low + + * debian/patches/99_addstr_error.patch: Add a workaround so no error is + produced when a UTF-8 filename cannot be displayed; closes: #387648. + * debian/control (Build-Depends): pump python-support requirement to + >= 0.3. + + -- Martin Michlmayr Tue, 24 Oct 2006 21:18:26 +0100 + +jack (3.1.1+cvs20050801-12) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/42_cd_device_fallback.patch: Update to not abort + immediately when the default CD device doesn't exist because some + actions are still allowed (e.g. -R on an already ripped CD). + + [ Pierre Habouzit ] + * Upgrade to the latest Python policy. + * debian/control (Build-Depends): Remove python and python-dev. + * debian/control (Build-Depends): Add python-all-dev and python-support. + * debian/control (Build-Depends): Pump versioned dependency on debhelper + and cdbs. + * debian/control (Standards-Version): Pump to 3.7.2. + * debian/control (Provides): New. + * debian/rules: Set DEB_PYTHON_SYSTEM. + + -- Martin Michlmayr Mon, 17 Jul 2006 09:02:10 +0200 + +jack (3.1.1+cvs20050801-11) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/50_check_ripper_encoder.patch: Don't check whether the + ripper and encoder exist in $PATH if they have been specified by + plugins since we cannot assume a strict mapping from plugin name to + the name of the executable; closes: #367929. + * debian/patches/36_check_plugin.patch: Better error checking when + plugins are imported. + + -- Martin Michlmayr Sat, 20 May 2006 14:31:35 +0200 + +jack (3.1.1+cvs20050801-10) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/34_toc_invocation_fail.patch: Improve the error message + shown when the invocation of the TOC program fails; closes: #360465. + * debian/patches/35_fix_xtermset.patch: Resize the window to the correct + height when xtermset_enable is set. + * debian/patches/56_ctrl_c_termset.patch: Don't change the window size + on Ctrl-C when xtermset_enable is set; closes: #196429. + * debian/compat: Use debhelper 5. + * debian/control (Build-Depends): Likewise. + + -- Martin Michlmayr Tue, 16 May 2006 18:12:12 +0200 + +jack (3.1.1+cvs20050801-9) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/copyright: Mention license and copyright of the Debian + packaging. + * debian/NEWS: fix typo in undocumented option. + * debian/patches/55_fix_sloppy.patch: Fix syntax error in an + undocumented option; closes: #362676. + + -- Martin Michlmayr Sat, 15 Apr 2006 19:35:27 +0200 + +jack (3.1.1+cvs20050801-8) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/51_error_not_block_device.patch: Print an error + rather than an ugly traceback when the device specified is not + a block device; closes: #360337. + * debian/patches/52_cdparanoia_toc.patch: Make cdparanoia TOC + parsing more robust; closes: #361164. + * debian/patches/53_no_tag_when_freedb_fails.patch: Don't try to tag + files when no FreeDB data is available; closes: #361290. + * debian/patches/54_check_cont_failed_query.patch: Don't automatically + initate a FreeDB query when cont_failed_query is set. + + -- Martin Michlmayr Fri, 07 Apr 2006 20:49:19 +0200 + +jack (3.1.1+cvs20050801-7) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/32_man_minus.patch: Escape minus signs in the man page + properly. Thanks for the report, Francesco Poli. + * debian/patches/45_fix_normalize_example.patch: Likewise. + * debian/patches/83_man_plugin.patch: Likewise. + * debian/patches/47_locale_check.patch: Check whether the locale is + known, otherwise jack will produce a traceback; closes: #360801. + * debian/patches/48_search_base_dir.patch: Search base_dir for + existing directories; closes: #360497. + * debian/patches/33_flac_mutagen.patch: Use mutagen instead of pyflac + since the latter is obsolete and has been removed from the archive. + Thanks, Joe Wreschnig; closes: #356771. + * debian/patches/44_guess_toc_ogg_flac.patch: Update to use mutagen. + * debian/patches/77_upd_progress_flac.patch: Likewise. + * debian/control (Depends): replace python-flac with python-mutagen. + * debian/patches/49_nicer_ripper_encoder.patch: Print a nicer message + when an unknown ripper or encoder is specified. + * debian/patches/50_check_ripper_encoder.patch: Check whether a command + passed via --ripper/--encoder actually exists. + + -- Martin Michlmayr Wed, 05 Apr 2006 00:24:14 +0200 + +jack (3.1.1+cvs20050801-6) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/85_dir_template_yg.patch: Update patch to not fail + when creating the directory when no gengre is set. + + -- Martin Michlmayr Thu, 02 Mar 2006 18:39:22 +0000 + +jack (3.1.1+cvs20050801-5) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/43_string_option.patch: Don't convert a string to + a string, thereby avoiding multiple quotation marks. + * debian/patches/44_guess_toc_ogg_flac.patch: Implement OGG and FLAC + support for --guess-toc. SourceForge #1089407 + * debian/patches/45_fix_normalize_example.patch: Fix the example in the + man page showing how to normalize WAV files with jack. SourceForge + #1311567 + + -- Martin Michlmayr Mon, 27 Feb 2006 13:53:47 +0000 + +jack (3.1.1+cvs20050801-4) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/40_enable_term.patch: After disabling curses within + the signal handler enable it again, otherwise further keyboard input + is ignored; closes: #352755. + * debian/patches/41_nicify_wait.patch: Display a better message in + the signal handler when --wait is on and when a signal was sent. + * debian/patches/42_cd_device_fallback.patch: When no CD default is + specified and the default one does not exist, look in /proc (Linux) + for possible CD devices; closes: #353551. + + -- Martin Michlmayr Tue, 21 Feb 2006 00:26:24 +0000 + +jack (3.1.1+cvs20050801-3) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/77_upd_progress_flac.patch: Support FLAC files in + --update-progress; closes: #351459. + * debian/patches/38_remove_gen_device.patch: Remove (broken) generic + device support from jack since it's obsolete anyway; closes: #184244. + * debian/patches/39_main_loop_valueerror.patch: Make the main loop + (ripping, encoding) more robust against ctrl-c; closes: #352754. + * debian/patches/70_fix_upd_progress.patch: Improve patch and don't + fail if the OGG module is not installed (this can't happen in + Debian, but is still a bug in the patch). + + -- Martin Michlmayr Sun, 19 Feb 2006 02:14:57 +0000 + +jack (3.1.1+cvs20050801-2) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/73_err_unknown_sub.patch: Fixed a bug related to + --append-year. + * debian/patches/74_multi_replace_cleanup.patch: Likewise. + * debian/patches/29_remove_freedb-de.patch: Remove the de.freedb.org + mirror since it no longer exists; closes: #351719. + * debian/patches/30_add_freedb_mirrors.patch: Update the list of + FreeDB mirrors. + * debian/patches/76_remove_append_year.patch: Remove --append-year + since the same can be achieved by sticking a %y in dir_template. + * debian/patches/85_dir_template_yg.patch: Make %y and %g actually + work in dir_template when the information can be found in FreeDB; + closes: #351574. + * debian/patches/31_real_bitrate_progress.patch: Put the real bitrate + in the progress file in case of VBR. + + -- Martin Michlmayr Tue, 07 Feb 2006 01:23:34 +0000 + +jack (3.1.1+cvs20050801-1) unstable; urgency=low + + [ Martin Michlmayr ] + * Update to latest CVS (2005-08-01) since no new upstream release is + forthcoming. + * Changes that were made by upstream in contrast to what the Debian + package did: + + ID3 v1 tags are written by default again for MP3 files. + + The --edit-cddb option got renamed to --edit-freedb for consistency. + * Drop patches that got merged upstream: + + 40_man_page_format_strings.patch + + 41_man_page_minor_improvements.patch + + 42_man_page_renames.patch + + 56_cd_device_error.patch + + 52_add_rename_num.patch + + 36_tag_clarify_error.patch + + 60_utf8_support.patch + + 82_update_defaults.patch + + 50_help_inconsistency.patch + + 51_error_dir_rename.patch + + 55_freedb_email.patch + + 57_flac_parsing.patch + + 61_utf8_unicode_id3v1_fix.patch + + 72_flac_man_page.patch + + 64_flac_tagging.patch + + 76_submit_updated_freedb.patch + + 77_exec_environ.patch + + 85_fix_environ.patch + + 59_ogg_parsing.patch + + 78_ripper_parsing.patch + + 79_verbose_submit_error.patch + * Drop patches that are obsolete (e.g. because they've been solved in + a different way): + + 53_help_show_quality.patch + + 54_oggenc_fixed_bitrate.patch + + 71_no_id3v1.patch + + 65_fix_genre.patch + * Update patches so they still apply: + + 75_ignore_empty_freedb_info.patch + + 87_use_existing_cddb_category.patch + * debian/exec_vorbisgain: Added upstream, remove. + * debian/examples: Update path of exec_vorbisgain. + + * debian/patches/97_man_mp3vsogg.patch: By default, OGGs are generated + now rather than MP3s so update the examples in the man page. Thanks, + David Whitmarsh; closes: #348547. + * debian/examples.txt: Update accordingly. + * debian/patches/98_man_default_encoders.patch: Mention the default value + of the --encoders option in the man page. + * debian/patches/70_fix_upd_progress.patch: Fix the --upd-progress + function; closes: #351453. + * debian/patches/27_allow_year_genre_sa.patch: Allow %y and %g in + filenames of single-artist tracks; closes: #351465. + * debian/patches/71_freedb_filename_cleanup.patch: Clean up the code + generating filenames based on FreeDB information. + * debian/patches/72_upd_progress_renamed.patch: Allow --upd-progress + to work after filenames have been renamed; closes: #351460. + * debian/patches/73_err_unknown_sub.patch: Print a warning or error + when an unknown or empty filename substitution is found. + * debian/patches/69_fail_incomplete_dir_template.patch: Remove since + the previous patch offers a cleaner and more complete solution. + * debian/patches/74_multi_replace_cleanup.patch: Clean up the code + in jack_misc.multi_replace(). + * debian/patches/75_fix_datatrack_rename.patch: Fix "jack -R -t x" + when x is a datatrack and the CD is not in the drive; closes: + #341889. + * debian/patches/26_t_artist_cleanup.patch: Clean up the code which + determines which artist name to use (single vs multi artist CDs). + * debian/patches/28_allow_edit_cddb.patch: Allow --edit-cddb to + continue to work for backwards compatibility. + + * Update patches to make it easier to merge them into upstream: + + debian/patches/84_dyear_dgenre.patch: Merge 92_fix_year_0.patch. + + debian/patches/92_fix_year_0.patch: Drop patch. + + debian/patches/83_man_plugin.patch: Merge 94_clarify_man_plugin.patch. + + debian/patches/94_clarify_man_plugin.patch: Drop patch. + + debian/patches/73_flac_options.patch: Merge 86_flac_vbr.patch. + + debian/patches/86_flac_vbr.patch: Drop patch. + + debian/patches/62_dont_repeat_inexact.patch: Merge + 63_nicify_inexact_warning.patch. + + debian/patches/63_nicify_inexact_warning.patch: Drop patch. + + debian/patches: Add a description to every patch. + + -- Martin Michlmayr Sun, 05 Feb 2006 19:24:07 +0000 + +jack (3.1.1-16) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/21_fallback_ripper.patch: Fallback to an installed + ripper when the default one is not available and the user has not + specified a particular one; closes: #347975. + * debian/patches/96_fix_cdda2wav_parsing.patch: Make cdda2wav parsing + more robust, in particular when errors occur. + + -- Martin Michlmayr Tue, 24 Jan 2006 00:54:09 +0000 + +jack (3.1.1-15) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/19_man_duplicate_overwrite.patch: Don't list the + --overwrite option twice in the man page; closes: #347975. + * debian/patches/69_fail_incomplete_dir_template.patch: Print an + error when information needed to create the album directory (such + as genre or year) is not available; closes: #349368. + * debian/patches/20_fix_sub_paths_warning.patch: Fix the warning + shown when dir_template contains more levels than scan_dirs. + * debian/control (Standards-Version): Set to 3.6.2 (no change needed). + + -- Martin Michlmayr Mon, 23 Jan 2006 14:55:36 +0000 + +jack (3.1.1-14) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/jackrc: Don't set base_dir since this is confusing for + users; closes: #345337. + * debian/patches/18_warn_no_base_dir.patch: Add a warning if base_dir + is not set. + * debian/NEWS: Mention base_dir change. + * debian/patches/17_fix_ref_no_various.patch: Change references from + the removed --no-various option to --various=no; closes: #345367. + * debian/patches/95_fix_empty_input.patch: Don't fail when enter is + pressed at an input prompt; closes: #345614. + + -- Martin Michlmayr Wed, 11 Jan 2006 13:57:02 +0000 + +jack (3.1.1-13) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/92_fix_year_0.patch: Don't put the year into the + file meta data if it is zero (0); closes: #341890. + * debian/patches/93_extd_parsing.patch: Make the parsing of year and + genre in EXTD less restrictive. Now it will recognize the year even + if there is no genre and if there is space instead of newline between + year and EXTD; closes: #341891. + * debian/patches/94_clarify_man_plugin.patch: Clarify how to activate + plug-ins; closes: #341562. + + -- Martin Michlmayr Sat, 03 Dec 2005 22:28:57 +0000 + +jack (3.1.1-12) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/66_rename_unicode.patch: When renaming directories, + make sure both the old and the new dir are Unicode strings; also + make this more robust; see #338816 and #339879. + * debian/patches/67_progress_utf8_vs_filenames.patch: Even though + jack.progress is always UTF-8 encoded, use the local encoding for + filenames mentioned in jack.progress, otherwise jack thinks it has + to rip/encode files again which already exist; closes: #338816. + * debian/patches/68_support_high_char_renames.patch: Allow characters + >128 in unusable_chars and replacement_chars; closes: #339879. + * debian/patches/16_len_unusable_replacement.patch: Print a warning + if the number of elements of replacement_chars and unusable_chars + is different. + + -- Martin Michlmayr Thu, 01 Dec 2005 11:10:54 +0000 + +jack (3.1.1-11) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/11_choose_bitrate_quality.patch: Use fixed bitrate + when a bitrate is given on the command line even when the config + defaults to variable bitrate; closes: #293334. + * debian/patches/10_vbr_default_man.patch: The default of --vbr + has been "yes" for a while. + * debian/patches/12_gogo_vbr-otf-cmd.patch: Fix gogo's vbr-otf-cmd + to use the quality variable rather than a hardcoded value. + * debian/patches/13_rc_hash.patch: Don't automatically assume that + a hash (#) in the configuration file is a comment since it can + also occur in the value of config variables; closes: #338621. + * debian/patches/91_fix_cdrdao_image.patch: Fix support for cdrdao + image files; closes: #338697. + * debian/patches/14_tocfile_abspath.patch: Print a better warning + when the cdrdao toc file cannot be found, and use the absolute + path so the file will be found if it exists; see #338697. + * debian/patches/15_imagefile_abspath.patch: If an image file is + specified without a toc file, print a warning that the TOC will + be obtained from the CD; also use the absolute path of the image + file since we're about to change cwd; thanks to Kristine Daniels + for the report, see #338697. + * debian/copyright: Update the address of the FSF. + * debian/fix-vorbis-tags.pl: Remove since the UTF-8 problems with OGG + Vorbis tags were fixed a long time ago (jack 2.99.9-2, 2002-12-31). + * debian/examples: Remove fix-vorbis-tags.pl. + * debian/rules (binary-predeb/jack): Likewise. + * debian/NEWS: Add all news entries from README.Debian. + * debian/README.Debian: Remove empty file. + * debian/patches-held: Remove obsolete patches. + + -- Martin Michlmayr Sun, 13 Nov 2005 22:04:23 +0000 + +jack (3.1.1-10) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/88_fix_argv_loop.patch: Fix an endless loop in + the parsing of certain command line arguments; closes: #336911. + * debian/patches/89_saner_argv_lists.patch: Make parsing of lists + given on the command line more intuitive; closes: #336343. + * debian/patches/42_man_page_renames.patch: Escape the backslash in + an example so it will get rendered properly. + * debian/patches/90_fix_df.patch: Fix the alternative (and usually + not used) code path of jack_functions.df(); closes: #324946. + + -- Martin Michlmayr Tue, 01 Nov 2005 21:25:55 +0000 + +jack (3.1.1-9) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/87_use_existing_cddb_category.patch: When submitting + updated CDDB entries, use the existing CDDB category of the CD + instead of prompting the user for it; closes: #335299. + + -- Martin Michlmayr Sun, 23 Oct 2005 09:47:48 +0100 + +jack (3.1.1-8) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/86_flac_vbr.patch: Mark FLAC as VBR again, otherwise + size calculation is broken and rename wants to re-encode files; + closes: #328049. + * debian/control: Remove some trailing whitespace. + + -- Martin Michlmayr Mon, 26 Sep 2005 18:06:17 +0100 + +jack (3.1.1-7) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/watch: Add a watch file. + * debian/patches/81_check_space.patch: Fix the code which checks whether + disk space has been freed outside of jack; closes: #200233. + * debian/patches/82_update_defaults.patch: Update defaults in --help + with commands passed via command line arguments; closes: #293339. + * debian/patches/83_man_plugin.patch: Describe the plug-in mechanism + in the man page; closes: #272622 + * debian/examples: Ship the plug-in exampls files jack_plugin_cddb.py + and jack_plugin_lame.py. + * debian/patches/65_fix_genre.patch: Fix the --id3-genre option that + got broken in 60_utf8_support.patch. + * debian/patches/84_dyear_dgenre.patch: Add support for DYEAR and + DGENRE as defined in CDDB protocol level 5; closes: #277932. + * debian/patches/85_fix_environ.patch: Check whether any files have + been added to the playlist; to fix a problem in 77_exec_environ.patch. + + -- Martin Michlmayr Sun, 31 Jul 2005 00:37:30 +0100 + +jack (3.1.1-6) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/59_ogg_parsing.patch: Make OGG parsing more robust; + closes: #224107. + * debian/patches/78_ripper_parsing.patch: Make the parsing of the + output of various rippers (most notably, cdparanoia and cdda2wav) + more robust; closes: #272619, #310478. + * debian/patches/79_verbose_submit_error.patch: When an invalid + FreeDB file is encountered before submission, print more verbous + diagnostic messages; closes: #172634. + * debian/patches/80_dest_exists_abs_path.patch: When a "destination + exists already" error is displayed, show the absolute path rather + than the one corresponding to the album name; closes: #293332. + + -- Martin Michlmayr Thu, 28 Jul 2005 23:42:25 +0100 + +jack (3.1.1-5) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/61_utf8_unicode_id3v1_fix.patch: Improve the patch. + If id3v1 tagging fails and id3v2 tagging is not activated, print a + warning saying that id3v2 should be used. + * debian/patches/64_flac_tagging.patch: Tag FLAC files with FreeDB + metadata; closes: #320168. + * debian/control (Depends): Add python-flac as an alternative to + python-pyvorbis. + * debian/patches/76_submit_updated_freedb.patch: When jack is called + with -Q --edit-cddb and changes are made to the CDDB file, ask + the user if they want to submit the updated template; closes: + #161225. + * debian/patches/77_exec_environ.patch: Export some environment + variables that can be used by exec hooks; closes: #222784. + * debian/exec_vorbisgain: Add an example file for exec hooks. + * debian/examples: Add exec_vorbisgain. + * debian/rules (binary-predeb/jack): Add new rule to make example + files (exec_vorbisgain and fix-vorbis-tags.pl) executable. + * debian/rules (install/jack): Fix install rule so it is actually + run and the upstream changelog installed; thanks, Guillem Jover. + + -- Martin Michlmayr Thu, 28 Jul 2005 19:25:13 +0100 + +jack (3.1.1-4) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/patches/70_msf_offset.patch: Don't assume that the first song + starts right after the MSF offset. This fixes the FreeDB (CDDB) + ID calculation which was broken with some CDs; closes: #319901. + This patch indirectly also causes jack to use the tracksize + information from cdparanoia which is more accurate and therefore + won't lead to failures on tracks right before a data track; closes: + #319894. + * debian/patches/61_utf8_unicode_id3v1_fix.patch: Don't write ID3 + version 1 tracks when strings contain Unicode; closes: #266052. + * debian/patches/71_no_id3v1.patch: Don't write ID3 version 1 + tracks by default anymore, just version 2 tags; closes: #320080. + * debian/patches/72_flac_man_page.patch: Mention FLAC in the + man page as a supported encoder; thanks, Robert Millan; closes: + #319937. + * debian/patches/73_flac_options.patch: Update options passed + to the FLAC encoder; thanks, Robert Millan; closes: #319950. + * debian/patches/74_vbr_before_otf.patch: Check for the availability + of VBR before OTF so it's possible to fall back to fixed bitrate + OTF encoding; thanks, Robert Millan; closes: #320093. + * debian/patches/62_dont_repeat_inexact.patch: Don't print a + warning that the calculated ID and that from FreeDB don't match + when we had an inexact match; closes: #304744. + * debian/patches/63_nicify_inexact_warning.patch: Make the warning + about mismatches between the calculated and FreeDB IDs prettier; + thanks, Era Eriksson; closes: #320102. + * debian/patches/75_ignore_empty_freedb_info.patch: Print a warning + but not an error when the FreeDB file has missing track information + for a track which is not about to be ripped/tagged; closes: #292612. + + -- Martin Michlmayr Wed, 27 Jul 2005 13:26:30 +0100 + +jack (3.1.1-3) unstable; urgency=low + + [ Martin Michlmayr ] + * debian/control (Uploaders): Add myself. + * debian/patches/40_man_page_format_strings.patch: Explain the + format strings in the man page; closes: #293598. + * debian/patches/41_man_page_minor_improvements.patch: Minor + improvements to the man page; closes: #314966. + * debian/patches/42_man_page_renames.patch: Add some documentation + about --unusable-chars and --replacement-chars to the man + page; closes: #274358. + * debian/patches/50_help_inconsistency.patch: Fix inconsistency + with reporting true/false values; closes: #293340. + * debian/patches/51_error_dir_rename.patch: Print a proper error + message when a directory cannot be created or renamed (usually + because of characters in the name the file system doesn't + support); closes: #303273. + * debian/patches/52_add_rename_num.patch: Recognize the + --rename-num option again. Patch by Y Giridhar Appaji Nag; + closes: #293623. + * debian/patches/53_help_show_quality.patch: Show quality instead + of bitrate in --help since the generation of bitrate files is + the default now; closes: #293335. + * debian/patches/54_oggenc_fixed_bitrate.patch: Support fixed + bitrate with the oggenc encoder; closes: #293336. + * debian/patches/55_freedb_email.patch: Support the $EMAIL + environment variable for FreeDB submissions; closes: #276937. + * debian/patches/56_cd_device_error.patch: Significantly improve + the error message given when the CD device doesn't exist, + cannot be accessed or has other problems; closes: #293329. + * debian/patches/57_flac_parsing.patch: Make FLAC status parsing + more robust and don't fail when the filename contains a percent + sign; closes: #312731. + * 58_progress_changed_error.patch: Don't fail when progress() + has never been called before; closes: #295207. + * 60_utf8_support.patch: Switch to FreeDB protocol 6 and support + UTF-8. This support is based on an inital bug report and patch + from Peter Maydell and has been heavily modified and extended + by me. MP3 support was added by Chris Vanden Berghe; closes: + #266052. + * debian/control (Depends): Use python-eyed3 instead of python-id3 + and python-id3lib; closes: #306771. + + -- Martin Michlmayr Mon, 20 Jun 2005 17:31:41 +0100 + +jack (3.1.1-2) unstable; urgency=low + + * debian/control (Depends): Added flac as alternative to vorbis-tools. + * debian/jackrc: Update comment for encoder: to reflect flac's + existence in the Debian archive; closes: #292518. + * debian/patches/36_tag_clarify_error.patch: New patch by Y Giridhar + Appaji Nag; closes: #298837. + * debian/patches/37_expand_CBR_acronym.patch: New patch, change error + message wording to say `fixed bitrate', which is more clear than + `CBR'. Reported by Martin Michlmayr (see #293336). + * debian/jackrc: Add version to silence startup warning. + + -- Michael Banck Fri, 25 Mar 2005 23:48:01 +0100 + +jack (3.1.1-1) unstable; urgency=low + + * New upstream release. + + Fixes crashes in curses; closes: #272731. + + Fixes problems with various artists; closes: #171025. + + Documentation updates for misleading wording of --rename; + closes: #204610. + + Fixes mismatch between lame and jack regarding vbr_quality; + closes: #250322. + + Fixes python future warnings; closes: #257018. + + Evaluates unusable_chars only on values, not dir_template; + closes: #282337. + + Fixes error when printing more tracks than there are; + closes: #157379. + + Long tracks do not overwrite help box anymore; closes: #259517. + + Fixes crashes on small terminals; closes: #243300. + * 18_less_verbose_gen_device_warning.patch: Dropped, applied upstream. + * 24_setup.py.patch: Likewise. + * 28_avoid_empty_USER_LOGNAME.patch: Likewise. + * 31_wrong_char_in_status.patch: Likewise. + * 32_document_workdir_option_in_manpage.patch: Likewise. + + -- Michael Banck Fri, 17 Dec 2004 12:48:22 +0100 + +jack (3.1.0-2) unstable; urgency=low + + * 14_remove_newline_in_unusable_chars.patch: Dropped, no longer + needed according to upstream. + * 16_cddb.py_erg.append.patch: Dropped, no longer needed according + to upstream. + * 22_specify_cddb_id.patch: Moved to patches-held for now, as it + appears to be non-working. + * 24_setup.py.patch: Updated from CVS. + * 26_raw_space.patch: Dropped, applied upstream. + + -- Michael Banck Sun, 12 Dec 2004 13:11:39 +0100 + +jack (3.1.0-1) unstable; urgency=medium + + * New upstream release. + + Fixes --check-toc; closes: #276267. + + Includes --quality float patch; closes: #279400. + * Urgency medium as this is a major improvement over the last version + and should be in Sarge. + * 25_expand_base_dir.patch: Dropped, applied upstream. + * 26_raw_space.patch: Updated, removed second hunk which got applied + upstream. + * 27_disable_debug_mode.patch: Dropped, applied upstream. + * 29_freedb.py_cf_fix.patch: Dropped, applied upstream. + * 30_submit_fix.patch: Dropped, applied upstream. + * 34_manpage_update.patch: Dropped, applied upstream. + + -- Michael Banck Wed, 1 Dec 2004 22:51:44 +0100 + +jack (3.0.0-9) unstable; urgency=low + + * 34_manpage_update.patch: Updated manpage, thanks to James van + Zandt; closes: #273562. + + -- Michael Banck Sun, 3 Oct 2004 21:59:50 +0200 + +jack (3.0.0-8) unstable; urgency=low + + * 31_wrong_char_in_status: Use 'x' instead of '×' to avoid encoding + problems; closes: #253241. + * debian/control: Fix wrong use of 'it's' in long description; + closes: #268516. + * 11_jackrc_base_dir: Removed, as this default is set via /etc/jackrc + now. Also makes the comment in /etc/jackrc concerning this correct + again; closes: #257448. + * 32_document_workdir_option_in_manpage: Document -w/--workdir. + * debian/rules.old: Removed. + * debian/control (Build-Depends): Added python. + * 33_fix_ripping_status: Fix the off-by-one display of the cdparanoia + status. + + -- Michael Banck Sun, 29 Aug 2004 01:25:54 +0200 + +jack (3.0.0-7) experimental; urgency=low + + * 30_submit_fix: Make --submit, --mail-submit (and --silent) work + again, taken from cvs. + + -- Michael Banck Wed, 25 Aug 2004 03:33:19 +0200 + +jack (3.0.0-6) experimental; urgency=low + + * debian/menu: Properly quote entries. + * debian/install: Install doc/ChangeLog as /usr/share/doc/jack/changelog + instead of /usr/share/doc/jack/ChangeLog. + + -- Michael Banck Fri, 28 May 2004 20:55:41 +0200 + +jack (3.0.0-5) experimental; urgency=low + + * debian/control (Depends): Really depend on python-id3 again + this time, d'oh. + + -- Michael Banck Wed, 14 Apr 2004 23:59:11 +0200 + +jack (3.0.0-4) experimental; urgency=low + + * debian/jackrc: Added some comments for clarification. + * debian/control (Depends): Revert depending on python-id3 as well + for now; closes: #243298. + + -- Michael Banck Sun, 11 Apr 2004 01:38:33 +0200 + +jack (3.0.0-3) experimental; urgency=low + + * debian/control (Depends): Switch from python-id3 to python-id3lib. + + -- Michael Banck Sat, 10 Apr 2004 22:51:37 +0200 + +jack (3.0.0-2) experimental; urgency=low + + * 29_freedb.py_cf_fix: Fix a forgotten cf[], by Stephan Helma. + + -- Michael Banck Sun, 28 Mar 2004 13:08:59 +0200 + +jack (3.0.0-1) experimental; urgency=low + + * 26_raw_space: Fix NameError with raw_space when trying to reorder + tracks on low diskspace (taken from cvs, slightly adopted). + * debian/fix-vorbis-tags.pl: Applied patch by Colin Watson/Martin + Michlmayr to properly handle files containing single quotes. + * Adapted old Debian patches to new upstream source and reincluded them, + by Jonas Smedegaard: + + 05_she_bang + + 11_jackrc_base_dir + + 14_remove_newline_in_unusable_chars + + 16_cddb.py_erg.append + + 18_less_verbose_gen_device_warning + + 22_specify_cddb_id + * 27_disable_debug_mode: Disable debug mode, by Jonas Smedegaard. + * 28_avoid_empty_USER_LOGNAME: Avoid empty USER and LOGNAME (whyever + they appear), by Jonas Smedegaard. + * debian/jackrc: Comment out query_on_start again, as it proved to + produce problems with conflicting command-line options. + * debian/NEWS: Added explanation for modified configuration file + handling. + + -- Michael Banck Mon, 1 Mar 2004 18:14:14 +0100 + +jack (3.0.0-pre2) unreleased; urgency=low + + * 25_expand_base_dir: Let '~' be expanded in base_dir (taken from + cvs). + * debian/jackrc: New file, installed as master /etc/jackrc. This lets + one configure most every option side-wide; closes: #205149. + Deviations from default so far: + - query_on_start by default + - base_dir set to '~/jack' instead of current working directory + + -- Michael Banck Sun, 14 Dec 2003 23:29:25 +0100 + +jack (3.0.0-pre1) unreleased; urgency=low + + * The "And another one, and another one" release. + * New upstream release; closes: #225200. + * Repackaged with cdbs. + * debian/control (Build-Depends): dbs dropped, cdbs added. + * (Standards-Version): Bumped to 3.6.1.0 + + -- Michael Banck Sat, 1 Nov 2003 14:40:10 +0100 + +jack (2.99.9-6) unstable; urgency=low + + * The "Who's upstream now, huh?" release + * 21_fix_cdparanoia_output_patch: cdparanoia's smiley indicating + the ripping status got truncated by one character + * 22_specify_cddb_id_patch: add support for specifying a CDDB id + for freedb query; closes: #161226 + * NEWS.Debian: new file + * debian/control(Decription): mention MP3s in paranthesis only + * debian/copyright: change maintainer's email address + * 23_declare_encoding_patch: set encoding to iso-8859-1 to silence + warning; closes: #209169 + * Make /usr/share/doc/jack/fix-vorbis-tags.pl executable + + -- Michael Banck Sat, 13 Sep 2003 14:27:43 +0200 + +jack (2.99.9-5) unstable; urgency=low + + * debian/control(Build-Depends): 4.1.65 is not enough, Build-Depend + on debhelper (>= 4.1.67); closes: #207306 + + -- Michael Banck Tue, 26 Aug 2003 12:49:21 +0200 + +jack (2.99.9-4) unstable; urgency=low + + * debian/control(Build-Depends): tighten debhelper to (>= 4.1.65), + because of dh_python and ${python:Depends} + + -- Michael Banck Fri, 22 Aug 2003 01:36:24 +0200 + +jack (2.99.9-3) unstable; urgency=low + + * Added a copyright and license notice from Martin Michlmayr to + fix-vorbis-tags.pl + * 17_authenticated_http-proxy_support_patch: Use urllib2 for + freedb-queries, urllib does not support authenticated http-proxies + * 12_utf8_ogg_tagging_patch: Updated from CVS; closes: #199244 + * 18_less_verbose_gen_device_warning_patch: Made the warning about + a non-readable generic device only one line; closes: #195319 + * 19_catch_rename_too_long_fix: catch a system traceback when the + title of a file to be renamed is too long; closes: #201597 + * 20_slash_unusable_char_by_default_patch: make "/" an unusable + character for filenames by default, thanks to Adam Kessel; + closes: #203721 + * debian/control(Build-Depends): switch to python-dev (>= 2.3); + closes: #205216 + * debian/rules(binary): added dh_python + * debian/control(Depends): use ${python:Depends} instead of hardcoded + version dependencies + + -- Michael Banck Wed, 20 Aug 2003 03:34:39 +0200 + +jack (2.99.9-2) unstable; urgency=low + + * 12_utf8_ogg_tagging_patch: properly encode ogg tag-strings in + utf8, thanks to Martin Michlmayr; closes: #172738 + - added fix-vorbis-tags.pl to documentation, see README.Debian + * 13_query_socket_error_handling_patch: cleaned up freedb_query() + * 14_remove_newline_in_unusable_chars_patch; closes: #168489 + * 15_extd_tags_fix, thanks to Matthew Mueller; closes: #163162 + * 16_cddb.py_erg.append_fix: changed erg line to conform to + standard CDDB; closes: #160990 + + -- Michael Banck Tue, 31 Dec 2002 15:21:18 +0100 + +jack (2.99.9-1) unstable; urgency=low + + * New upstream release, includes undocumented option for + sloppy ripping; closes: #158671 + * Documented this option with a big warning in README.Debian + * Patches applied upstream: + - 00_ogg_tagging_DATE_fix + - 01_ogg_upd_progress_fix_from_cvs + - 02_vbr_quality_patch + - 03_uppercase_docum_from_cvs + * Switched to python-2.2; closes: #159180 + * 06_adjust_for_quality_-1_patch; closes: #157331 + * 07_continue_various_if_blank_artist; closes: #158175 + * 08_y_Y_input_accept_fix: accept both "y" and "Y" when + asking questions, thanks to Gordon Tyler + * 09_ignore_python_version_patch: ignore the hardcoded + python version in ~/.jackrc + * 11_jackrc_base_dir_patch: changed base_dir back to + environ['HOME'] + "/jack". This obviously got lost during + the upgrade to 2.99.8 + * Clarified in README.Debian that using toc_prog=ripper is a bad + thing and will not work for CDs with data-tracks; closes: #157378 + * Removed emacs-variables from debian/changelog + * Bumped Standards-Version to 3.5.6.1 + + -- Michael Banck Tue, 3 Sep 2002 03:00:47 +0200 + +jack (2.99.8-4) unstable; urgency=low + + * 05_she_bang_patch switched from #!/usr/bin/env python to + #!/usr/bin/python (see: #148415) + + -- Michael Banck Tue, 25 Jun 2002 01:24:29 +0200 + +jack (2.99.8-3) unstable; urgency=low + + * 04_freedb_submit_fix by Michal Politowski; closes: #150699 + + -- Michael Banck Sun, 23 Jun 2002 19:41:12 +0200 + +jack (2.99.8-2) unstable; urgency=low + + * 03_uppercase_docum_from_cvs (closes: #140903) + * 02_vbr_quality_patch (closes: #135719, #147962) + see README.Debian for details on how to use vbr_quality + + -- Michael Banck Fri, 24 May 2002 20:54:35 +0200 + +jack (2.99.8-1) unstable; urgency=low + + * The 'doogie rules'-Release + * New upstream release, repackaged with dbs (Build-Depends) + (closes: #139232, #132985) + * Use the uptodate manpage from the upstream source rather than + the one I wrote for Debian + * 00_ogg_tagging_DATE_fix (closes: #144996) + * 01_ogg_upd_progress_fix_from_cvs (closes: #141781) + * Changed Maintainer address + + -- Michael Banck Sun, 19 May 2002 00:38:48 +0200 + +jack (2.99.7-7) unstable; urgency=high + + * Fixed ogg-tagging with respect to GENRE and YEAR. As ogg- + tagging is performed by default when selecting jack from the + debian menu, this bug might break the package for quite a lot + of people, therefore urgency=high to still get it into + woody (closes: #144717) + + -- Michael Banck Sat, 27 Apr 2002 14:55:30 +0200 + +jack (2.99.7-6) unstable; urgency=low + + * Activated the menu-entry, which was already supposed to be + included in 2.99.7-4 + * Changed upstream's email-adress in copyright + + -- Michael Banck Sun, 21 Apr 2002 23:06:59 +0200 + +jack (2.99.7-5) unstable; urgency=low + + * The 'at long last, thanks to Omnic'-Release + * jack now Depends upon python-pyvorbis (>> 0.5) + * This means that tagging .ogg-files is now fully supported, no + matter when you're doing freedb-lookups + + -- Michael Banck Sun, 7 Apr 2002 14:38:27 +0200 + +jack (2.99.7-4) unstable; urgency=low + + * Applied patch for .ogg-tagging, unusable right now as it Depends + upon python-pyvorbis (>= 0.5), which is not packaged yet. + * Unset LC_* and LANG so that helper apps don't change the parsed + output unexpectedly; (closes: #128642) + * Applied patch from Martin Michlmayr (got applied upstream, too), + concerning display of Various-Artists CDs (closes: #132962) + * Changed 'MP3' to 'OGG' in long description + * Changed base_dir to '~/jack' and searchdirs to 'base_dir, .' for + new installations. + + -- Michael Banck Sat, 23 Feb 2002 13:16:34 +0100 + +jack (2.99.7-3) unstable; urgency=low + + * Applied current CVS concerning base_dir stuff, so that + jack can be called from the Debian Menu + * No menu entry yet, because you cannot specify your favourite + directory yet. + * Corrected spelling mistake in debian/control (closes: #124769) + * Fixed tagging of Various-Artists CDs with OGG (closes: #129677) + * Fixed FreeDB mail submitting (closes: #129247) + * Uses full path (/usr/sbin/sendmail) for FreeDB-Email submission + + -- Michael Banck Fri, 18 Jan 2002 22:04:21 +0100 + +jack (2.99.7-2) unstable; urgency=low + + * Changed description slightly + * Applied patches from Martin Michlmayr (closes: #118733) + * Revived capability to use cdparanoia to read a disc's TOC if + python-cddb fails (see #118731). This has to be enabled in the + user's .jackrc, see README.Debian + * Changed debian/rules to call /usr/bin/python2.1 instead of just + python as /usr/bin/python isn't around (This and the previous + upload 2.99.7-1: closes: #118727) + * Purged menu entry until jack can set a base dir from where to + start working + + -- Michael Banck Fri, 9 Nov 2001 00:56:34 +0100 + +jack (2.99.7-1) unstable; urgency=low + + * New upstream release + * Changed control file to comply with Python Policy, ver 0.3.6 + * Included a menu entry + + -- Michael Banck Wed, 7 Nov 2001 20:29:46 +0100 + +jack (2.99.6-2) unstable; urgency=low + + * Moved all dh_* stuff to binary-arch; jack includes + jack_cursesmodule.so which didn't exist when I first packaged + it + + -- Michael Banck Mon, 15 Oct 2001 08:34:45 +0000 + +jack (2.99.6-1) unstable; urgency=low + + * Initial Release; closes: #115061 + * Wrote a manpage + * Included http://www.home.unix-ag.org/arne/jack/ChangeLog + as upstream changelog + * Added http://www.home.unix-ag.org/arne/jack/examples.html + (converted to text) to documentation + + -- Michael Banck Wed, 10 Oct 2001 23:00:49 +0000 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..3d140ae --- /dev/null +++ b/debian/control @@ -0,0 +1,33 @@ +Source: jack +Section: sound +Priority: optional +Maintainer: Michael Banck +Build-Depends: debhelper (>= 5.0.37.2), cdbs (>= 0.4.43), python-all-dev (>= 2.3.5-11), libncursesw5-dev, dh-python +Standards-Version: 3.9.3 + +Package: jack +Architecture: any +Depends: ${python:Depends}, ${shlibs:Depends}, ${misc:Depends}, python-cddb, python-eyed3, python-pyvorbis (>= 0.5) | python-mutagen, cdparanoia | cdda2wav, vorbis-tools | flac | lame +Description: Rip and encode CDs with one command + Jack has been developed with one main goal: making OGGs (or MP3s) + without having to worry. There is nearly no way that an incomplete rip + goes unnoticed, e.g. jack compares WAV and OGG file sizes when + continuing from a previous run. Jack also checks your HD space before + doing anything (even keeps some MB free). + . + Jack is different from other such tools in a number of ways: + - it supports different rippers and encoders + - it is very configurable + - it doesn't need X + - it can "rip" virtual CD images like the ones created by cdrdao + - when using cdparanoia, cdparanoia's status information is displayed + and archived for all tracks, so you can see if something went wrong + - it uses sophisticated disk space management, i.e. it schedules its + ripping/encoding processes depending on available space. + - freedb query, file renaming and id3/ogg-tagging + - it can resume work after it has been interrupted. If all tracks have + been ripped, it doesn't even need the CD anymore, even if you want + to do a freedb query. + - it can do a freedb query based on OGGs alone, like if you don't + remember from which CD those OGGs came from. + - freedb submissions diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..2399b0c --- /dev/null +++ b/debian/copyright @@ -0,0 +1,34 @@ +This package was debianized by Michael Banck on +Fri, 15 Jun 2001 19:37:10 +0000. + +It was downloaded from http://jack.sourceforge.net + +Upstream Author: Arne Zellentin + +Copyright: + +Copyright (C) 1999-2004 Arne Zellentin + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is licensed under the GPL, see above, and has +the following copyright: + +Copyright (C) 2001-2004 Michael Banck +Copyright (C) 2005-2009 Martin Michlmayr + diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..138f656 --- /dev/null +++ b/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/share/doc/jack diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..b0a8551 --- /dev/null +++ b/debian/docs @@ -0,0 +1,2 @@ +doc/TODO +debian/examples.txt diff --git a/debian/examples b/debian/examples new file mode 100644 index 0000000..d47b403 --- /dev/null +++ b/debian/examples @@ -0,0 +1,3 @@ +contrib/exec_vorbisgain +jack_plugin_cddb.py +jack_plugin_lame.py diff --git a/debian/examples.txt b/debian/examples.txt new file mode 100644 index 0000000..7f642b8 --- /dev/null +++ b/debian/examples.txt @@ -0,0 +1,61 @@ + * Insert a CD, fire up jack: + $ jack + Now watch it work. It's fun for a while. After having finished, you have + the follwing files on your HD: track_01.ogg track_02.ogg, ..., + track_nn.ogg plusjack.toc, jack.freedb, jack.progress. The last three are + used to store the state jack is in so it can resume work when + interrupted. + * Jack will create a directory called jack-xxxxxxxx for you, there it + stores all the file for the CD whose id is xxxxxxxx. After a freedb query + this directory is renamed to something human readable, like "Artist - + Title". + * When jack is interrupted, call it again using the same commandline as + before to resume work, in this case: + $ jack + * The WAV files have been deleted. If you want jack to keep them, try + $ jack -k + * Now let's try a freedb query: + $ jack -q + when succesful the files are now renamed to something more readable and + have been ID3 tagged accordingly. jack.freedb contains the queried freedb + entry, the original file has been backed up to jack.freedb.bak. + * The query failed? Ok, contribute! edit the freedb template: + $ vi jack.freedb + Note: the DTITLE should be set to + Artist / Name Of Album + or + Various Artist / Name Of Compilation + when adding a compilation, use + Artist - Title Of Track + for the track titles. Do not delete any lines from the template. Do not + change the numbers. Yes the TTITLEs start at 0 and end one track too + early. Read the freedb documentation. + * now activate the entries: + $ jack -R + now the files have been renamed and tagged. Check the names two or three + times. Typo made? No problem, you can alway undo the file renaming with + $ jack -u + Note that the ID3 tags are not undone. Fix the freedb file and again, use + $ jack -R + to activate your changes. When you are sure the freedb file is suitable + for submission, submit it (via e-mail (option -m) or via HTTP POST + (option --submit). When using the former, sendmail must be installed and + working on your machine! If you're on a dial-up, you can use the - + m option to queue submits, provided sendmail is set up accordingly): + $ jack -m + or + $jack --submit +Those were the basics. Now some more advanced examples: + * All in one: query, rip, encode, cleanup: + $ jack -Q --remove + * query any time while working: + $ jack + and, from another shell: + $ jack -d -Q + * query for unknown OGGs: + $ jack -q -g track_*.ogg + * rip from image, first, create the image: + $ cdrdao read-cd --datafile data.cdr data.toc + then make OGGs from the image: + $ jack -f data.toc +more to follow. diff --git a/debian/install b/debian/install new file mode 100644 index 0000000..1b221a5 --- /dev/null +++ b/debian/install @@ -0,0 +1,2 @@ +jack usr/bin +debian/jackrc etc diff --git a/debian/jackrc b/debian/jackrc new file mode 100644 index 0000000..be8c517 --- /dev/null +++ b/debian/jackrc @@ -0,0 +1,45 @@ +# jackrc-version:31 + +# Global jackrc file for Debian, documenting some of the most important +# options. The default options are commented out. + +# You can copy this to ~/.jack3rc and customize it youself. But beware, +# the syntax is not trivial and might result in errors. + +# The preferred way to set options is to add --save to the command-line, +# which sets the respective option in your ~/.jack3rc. + +########################################################################## + +# The directory where jack puts the files by default. +# This defaults to the current directory if unset: +#base_dir:~/jack + +# The default ripper. You can choose from 'cdparanoia'(default), 'cdda2wav', +# 'tosha' or 'dagrab' (The last two are not avaiable in Debian). +#ripper:cdparanoia + +# The default encoder. You can choose from 'oggenc'(default), 'flac', 'xing', +# 'mppenc', 'lame', 'l3enc', 'gogo', 'mp3enc' or (only oggenc and flac are +# available in Debian). +#encoder:oggenc + +# The VBR-quality of the encoded OGGs. -1 is lowest, 10 is highest. +#vbr_quality:4 + +# rename_fmt specifies how the resulting files are named: +# %n: track number +# %a: artist +# %t: track title +# %l: album title +# %y: album release year - individual track years are unsupported +# %g: album genre - individual track genres are unsupported +#rename_fmt:%a - %l - %n - %t # "Artist - Album - 01 - Tracktitle.[ext]" + +# If this is set, always query freedb when starting to rip a CD. +# By default, jack does not query freedb +#query_on_start + +# If this is set, continue work even if the freedb-query failed. +# By default, jack stops with an error +#cont_failed_query diff --git a/debian/manpages b/debian/manpages new file mode 100644 index 0000000..847e0a7 --- /dev/null +++ b/debian/manpages @@ -0,0 +1 @@ +jack.man diff --git a/debian/menu b/debian/menu new file mode 100644 index 0000000..ecca2d2 --- /dev/null +++ b/debian/menu @@ -0,0 +1,2 @@ +?package(jack):needs="text" section="Applications/Sound" \ + title="jack" command="/usr/bin/jack -Q -D --wait" diff --git a/debian/patches/05_she_bang.patch b/debian/patches/05_she_bang.patch new file mode 100644 index 0000000..f79b798 --- /dev/null +++ b/debian/patches/05_she_bang.patch @@ -0,0 +1,13 @@ +Debian-specific; in fact, probably a bad idea. Michael, why did you put +this in? Right, so Michael pointed me at Debian #148415. I'll have to +review the arguments at some point. + +diff -urN jack-2.99.9/jack jack-2.99.9.new/jack +--- jack-2.99.9/jack Tue Jun 25 01:16:28 2002 ++++ jack-2.99.9.new/jack Tue Jun 25 01:15:33 2002 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python + ### jack - extract audio from a CD and encode it using 3rd party software + ### Copyright (C) 1999-2003 Arne Zellentin + diff --git a/debian/patches/06_link_ncursew.patch b/debian/patches/06_link_ncursew.patch new file mode 100644 index 0000000..353aea5 --- /dev/null +++ b/debian/patches/06_link_ncursew.patch @@ -0,0 +1,17 @@ +Link against ncursesw rather than ncurses so UTF-8 will work +properly. See http://bugs.debian.org/337328 for a discussion +of this. + +--- setup.py~ 2007-10-21 14:51:07.000000000 +0200 ++++ setup.py 2007-10-21 14:51:42.000000000 +0200 +@@ -14,7 +14,8 @@ + + # Description of the modules and packages in the distribution + ext_modules = [ Extension('jack_cursesmodule', +- ['cursesmodule/jack_cursesmodule.c'], libraries=["ncurses"], ++ ['cursesmodule/jack_cursesmodule.c'], libraries=["ncursesw"], ++ include_dirs=["/usr/include/ncursesw"], + extra_compile_args=["-Wno-strict-prototypes"]) ], + + py_modules = [ 'jack_CDTime', 'jack_TOC', 'jack_TOCentry', 'jack_argv', + diff --git a/debian/patches/10_vbr_default_man.patch b/debian/patches/10_vbr_default_man.patch new file mode 100644 index 0000000..aa5a46f --- /dev/null +++ b/debian/patches/10_vbr_default_man.patch @@ -0,0 +1,13 @@ +The default of --vbr has been "yes" for a while. + +--- a/jack.man~ 2005-11-09 22:06:43.000000000 +0000 ++++ b/jack.man 2004-12-12 04:54:35.000000000 +0000 +@@ -391,7 +391,7 @@ + .TP + .B \-v, \-\-vbr=bool + Generate variable bitrate files, only on encoders which support +-this. Default is no. ++this. Default is yes. + .TP + .B \-\-various=bool + when parsing freedb data, Jack assumes that if the disc\'s artist diff --git a/debian/patches/11_choose_bitrate_quality.patch b/debian/patches/11_choose_bitrate_quality.patch new file mode 100644 index 0000000..2dadbdb --- /dev/null +++ b/debian/patches/11_choose_bitrate_quality.patch @@ -0,0 +1,20 @@ +Use fixed bitrate when a bitrate is given on the command line even when the +config defaults to variable bitrate. Debian #293334. + +--- a/jack_checkopts.py~ 2005-11-09 22:40:49.000000000 +0000 ++++ b/jack_checkopts.py 2005-11-09 23:03:19.000000000 +0000 +@@ -65,6 +65,14 @@ + cf.rupdate({'id3_genre': {'val': genre}}, "check") + del genre + ++ if not cf2.has_key('vbr'): ++ if cf2.has_key('bitrate') and cf2.has_key('vbr_quality'): ++ cf.rupdate({'vbr': {'val': 1}}, "check") ++ elif cf2.has_key('bitrate'): ++ cf.rupdate({'vbr': {'val': 0}}, "check") ++ elif cf2.has_key('vbr_quality'): ++ cf.rupdate({'vbr': {'val': 1}}, "check") ++ + for i in cf2.keys(): + if not cf.has_key(i): + error("unknown config item `%s'" % i) diff --git a/debian/patches/12_gogo_vbr-otf-cmd.patch b/debian/patches/12_gogo_vbr-otf-cmd.patch new file mode 100644 index 0000000..11f759d --- /dev/null +++ b/debian/patches/12_gogo_vbr-otf-cmd.patch @@ -0,0 +1,15 @@ +Fix gogo's vbr-otf-cmd to use the quality variable rather than a hardcoded +value. + +diff -urN jack-3.1.1~/jack_helpers.py jack-3.1.1/jack_helpers.py +--- jack-3.1.1~/jack_helpers.py 2005-11-11 17:22:46.000000000 +0000 ++++ jack-3.1.1/jack_helpers.py 2005-11-11 17:23:11.000000000 +0000 +@@ -145,7 +145,7 @@ + 'cmd': "gogo %i %o -b %r", + 'vbr-cmd': "gogo %i %o -v %q", + 'otf-cmd': "gogo stdin %o -b %r", +- 'vbr-otf-cmd': "gogo stdin %o -v 4", ++ 'vbr-otf-cmd': "gogo stdin %o -v %q", + 'status_blocksize': 160, + 'bitrate_factor': 1, + 'status_start': "%", diff --git a/debian/patches/13_rc_hash.patch b/debian/patches/13_rc_hash.patch new file mode 100644 index 0000000..d936f12 --- /dev/null +++ b/debian/patches/13_rc_hash.patch @@ -0,0 +1,91 @@ +Don't automatically assume that a hash (#) in the configuration file is a +comment since it can also occur in the value of config variables. Debian: +#338621. + +diff -urN jack-3.1.1~/jack_rc.py jack-3.1.1/jack_rc.py +--- jack-3.1.1~/jack_rc.py 2005-11-11 17:48:44.000000000 +0000 ++++ jack-3.1.1/jack_rc.py 2005-11-11 17:48:54.000000000 +0000 +@@ -32,39 +32,45 @@ + + def read(file): + read_rc = [] +- + try: + f = open(file) +- except: ++ except (IOError, OSError): + return read_rc +- + lineno = 0 +- while 1: +- x = f.readline() +- if not x: +- break ++ for x in f.readlines(): ++ lineno += 1 ++ x = x.strip() + opt = val = com = None +- lineno = lineno + 1 +- +- x = string.strip(x) +- x = string.split(x, "#", 1) +- if len(x) > 1: +- opt, com = x ++ if not x: ++ # also return empty lines so --save will honour them ++ pass ++ elif x.startswith("#"): ++ com = x[1:] + else: +- opt = x[0] +- if opt and com: +- opt = string.strip(opt) +- if opt: +- x = string.split(opt, ":", 1) +- if len(x) > 1: +- opt, val = x +- else: ++ x = [i.strip() for i in x.split(":", 1)] ++ if len(x) < 2: + opt = x[0] +- else: +- opt = None ++ else: ++ opt, val = x ++ # check if there's a comment ridden in val ++ if "#" in val: ++ quoted = [] ++ for i in range(len(val)): ++ c = val[i] ++ if c in ('"', "'") and (not i or val[i-1] != "\\"): ++ if quoted and quoted[-1] == c: ++ quoted.pop() ++ else: ++ quoted.append(c) ++ elif c == "#" and not quoted: ++ val, com = val[:i].strip(), val[i+1:] ++ print com ++ break + read_rc.append([opt, val, com, lineno]) + version = get_version(read_rc) +- if version != jack_version.prog_rcversion: ++ if not version: ++ warning("config file %s doesn't define jackrc-version." % file) ++ elif version != jack_version.prog_rcversion: + warning("config file %s is of unknown version %s." % (file, `version`)) + return read_rc + +@@ -80,10 +86,9 @@ + return None + if vers[0] != "jackrc-version": + return None +- ver = int(vers[1]) +- return ver +- else: +- return None ++ if vers[1].isdigit(): ++ return int(vers[1]) ++ return None + + def load(cf, file): + rc = read(expand(file)) diff --git a/debian/patches/14_tocfile_abspath.patch b/debian/patches/14_tocfile_abspath.patch new file mode 100644 index 0000000..cdff8b4 --- /dev/null +++ b/debian/patches/14_tocfile_abspath.patch @@ -0,0 +1,33 @@ +Print a better warning when the cdrdao toc file cannot be found, and use +the absolute path so the file will be found if it exists. Debian #338697. + + +diff -urN jack-3.1.1~/jack_functions.py jack-3.1.1/jack_functions.py +--- jack-3.1.1~/jack_functions.py 2005-11-12 12:16:08.000000000 +0000 ++++ jack-3.1.1/jack_functions.py 2005-11-12 12:16:20.000000000 +0000 +@@ -236,7 +236,12 @@ + "returns TOC object, needs name of toc-file to read" + toc = jack_TOC.TOC() + +- f = open(tocfile, "r") ++ if not os.path.exists(tocfile): ++ error("Can't open TOC file '%s': file does not exist." % os.path.abspath(tocfile)) ++ try: ++ f = open(tocfile, "r") ++ except (IOError, OSError), e: ++ error("Can't open TOC file '%s': %s" % (os.path.abspath(tocfile), e)) + + tocpath, tocfiledummy = os.path.split(tocfile) + +diff -urN jack-3.1.1~/jack_prepare.py jack-3.1.1/jack_prepare.py +--- jack-3.1.1~/jack_prepare.py 2005-11-12 12:16:08.000000000 +0000 ++++ jack-3.1.1/jack_prepare.py 2005-11-12 16:48:29.000000000 +0000 +@@ -58,6 +58,8 @@ + jack_ripstuff.all_tracks = [] + else: + if cf['_image_toc_file']: ++ # put the absolute path in the variable since we'll change cwd soon ++ cf['_image_toc_file'] = os.path.abspath(cf['_image_toc_file']) + jack_ripstuff.all_tracks, dummy, dummy = jack_functions.cdrdao_gettoc(cf['_image_toc_file']) + else: + jack_ripstuff.all_tracks = jack_functions.gettoc(cf['_toc_prog']) diff --git a/debian/patches/15_imagefile_abspath.patch b/debian/patches/15_imagefile_abspath.patch new file mode 100644 index 0000000..58253f3 --- /dev/null +++ b/debian/patches/15_imagefile_abspath.patch @@ -0,0 +1,17 @@ +If an image file is specified without a toc file, print a warning that the +TOC will be obtained from the CD; also use the absolute path of the image +file since we're about to change cwd. Debian #338697. + +diff -urN jack-3.1.1~/jack_prepare.py jack-3.1.1/jack_prepare.py +--- jack-3.1.1~/jack_prepare.py 2005-11-12 18:54:42.000000000 +0000 ++++ jack-3.1.1/jack_prepare.py 2005-11-12 18:55:28.000000000 +0000 +@@ -62,6 +62,9 @@ + cf['_image_toc_file'] = os.path.abspath(cf['_image_toc_file']) + jack_ripstuff.all_tracks, dummy, dummy = jack_functions.cdrdao_gettoc(cf['_image_toc_file']) + else: ++ if cf['_image_file']: ++ warning("No TOC file for image '%s' specified, reading TOC from CD device." % cf['_image_file']) ++ cf['_image_file'] = os.path.abspath(cf['_image_file']) + jack_ripstuff.all_tracks = jack_functions.gettoc(cf['_toc_prog']) + toc_just_read = 1 + # check that the generic device is usable, too diff --git a/debian/patches/16_len_unusable_replacement.patch b/debian/patches/16_len_unusable_replacement.patch new file mode 100644 index 0000000..74ad7b8 --- /dev/null +++ b/debian/patches/16_len_unusable_replacement.patch @@ -0,0 +1,23 @@ +Print a warning if the number of elements of replacement_chars and +unusable_chars is different. + +--- a/jack_checkopts.py~ 2005-12-01 10:50:25.000000000 +0000 ++++ b/jack_checkopts.py 2005-12-01 10:53:54.000000000 +0000 +@@ -135,6 +135,7 @@ + + # stretch replacement_chars + if len(cf['_unusable_chars']) > len(cf['_replacement_chars']): ++ warning("unusable_chars contains more elements than replacement_chars") + u, r = cf['_unusable_chars'], cf['_replacement_chars'] + while len(u) > len(r): + if type(r) == types.ListType: +@@ -145,6 +146,9 @@ + error("unsupported type: " + `type(cf['replacement_chars']['val'][-1])`) + cf.rupdate({'replacement_chars': {'val': r}}, "check") + del u, r ++ elif len(cf['_replacement_chars']) > len(cf['_unusable_chars']): ++ # This has no practical negative effect but print a warning anyway ++ warning("replacement_chars contains more elements than unusable_chars") + + if cf['silent_mode']['val']: + cf['terminal']['val'] = "dumb" diff --git a/debian/patches/17_fix_ref_no_various.patch b/debian/patches/17_fix_ref_no_various.patch new file mode 100644 index 0000000..7f757eb --- /dev/null +++ b/debian/patches/17_fix_ref_no_various.patch @@ -0,0 +1,34 @@ +Change references from the removed --no-various option to --various=no. +Debian #345367. + +diff -urN jack-3.1.1~/doc/usage.html jack-3.1.1/doc/usage.html +--- jack-3.1.1~/doc/usage.html 2005-12-31 15:04:05.000000000 +0100 ++++ jack-3.1.1/doc/usage.html 2005-12-31 15:07:45.000000000 +0100 +@@ -194,12 +194,9 @@ + when parsing freedb data, jack assumes that if the disc's + artist is set to "Various Artists" the track titles have the format "[artist] - + [title]". If the disc title is set to something else and you still want above +-behaviour, use --various. +- +- +---no-various +-use this if freedb data says it't "Various Artists" but you want the normal +-renaming scheme, e.g. if Jack can't seperate artist and track title. ++behaviour, use --various. You can use --various=no if the FreeDB data says ++"Various Artists" but you want the normal renaming scheme, e.g. if Jack ++can't seperate artist and track title. + + + --remove +diff -urN jack-3.1.1~/jack_freedb.py jack-3.1.1/jack_freedb.py +--- jack-3.1.1~/jack_freedb.py 2005-12-31 15:04:05.000000000 +0100 ++++ jack-3.1.1/jack_freedb.py 2005-12-31 15:06:32.000000000 +0100 +@@ -577,7 +577,7 @@ + else: + err = 7 + if verb: +- warning("could not separate artist and title in all TTITLEs. Try setting freedb_pedantic = 0 or use --no-various Maybe additional information is contained in the EXTT fields. check %s and use either --extt-is-artist or --extt-is-title." % cf['_freedb_form_file']) ++ warning("could not separate artist and title in all TTITLEs. Try setting freedb_pedantic = 0 or use --various=no. Maybe additional information is contained in the EXTT fields. check %s and use either --extt-is-artist or --extt-is-title." % cf['_freedb_form_file']) + else: + for i in range(tracks_on_cd): + buf = freedb['TTITLE'+`i`] diff --git a/debian/patches/18_warn_no_base_dir.patch b/debian/patches/18_warn_no_base_dir.patch new file mode 100644 index 0000000..418b508 --- /dev/null +++ b/debian/patches/18_warn_no_base_dir.patch @@ -0,0 +1,33 @@ +Add a warning if base_dir is not set. Maybe Debian-specific, but I think +it doesn't hurt it put this in upstream. Also, we definitely need this +check_rc function for a later patch. + + +diff -urN jack-3.1.1~/jack jack-3.1.1/jack +--- jack-3.1.1~/jack 2006-01-11 13:31:39.000000000 +0000 ++++ jack-3.1.1/jack 2006-01-11 13:48:44.000000000 +0000 +@@ -84,6 +84,7 @@ + debug("user_cf: " + `user_cf`) + debug("argv_cf: " + `argv_cf`) + ++jack_checkopts.check_rc(global_cf, user_cf, argv_cf) + jack_checkopts.consistency_check(cf) + + if cf['save_args']['val'] == 1: +diff -urN jack-3.1.1~/jack_checkopts.py jack-3.1.1/jack_checkopts.py +--- jack-3.1.1~/jack_checkopts.py 2006-01-11 13:31:39.000000000 +0000 ++++ jack-3.1.1/jack_checkopts.py 2006-01-11 13:48:23.000000000 +0000 +@@ -215,3 +215,13 @@ + + if cf['_dont_work'] and cf['_query_when_ready']: + warning("you want to use --query-now / -Q instead of --query / -q") ++ ++# Checks concerning options specified by the user (in the global or user rc ++# files or the command line), i.e. options/values that are not the default ++# jack options from jack_config. ++def check_rc(global_cf, user_cf, argv_cf): ++ ++ all_keys = global_cf.keys() + user_cf.keys() + argv_cf.keys() ++ if 'base_dir' not in all_keys: ++ warning("You have no standard location set, putting files into the current directory. Please consider setting base_dir in ~/.jack3rc.") ++ diff --git a/debian/patches/19_man_duplicate_overwrite.patch b/debian/patches/19_man_duplicate_overwrite.patch new file mode 100644 index 0000000..0c03938 --- /dev/null +++ b/debian/patches/19_man_duplicate_overwrite.patch @@ -0,0 +1,16 @@ +Don't list the --overwrite option twice in the man page. Debian #347975. + + +diff -urN jack-3.1.1~/jack.man jack-3.1.1/jack.man +--- jack-3.1.1~/jack.man 2006-01-16 23:02:45.000000000 +0000 ++++ jack-3.1.1/jack.man 2006-01-16 23:03:44.000000000 +0000 +@@ -256,9 +256,6 @@ + On-the-fly operation. Only on some encoders/rippers. Do not + create WAVs, pipe ripper output through the encoder. Default is + no as it's a torture for the CDROM drive. +-.TP +-.B \-o, \-\-overwrite=bool +-overwrite existing files. + .\" .TP + .\" .B \-\-playorder + .\" use the FreeDB PLAYORDER field to limit the tracks to diff --git a/debian/patches/20_fix_sub_paths_warning.patch b/debian/patches/20_fix_sub_paths_warning.patch new file mode 100644 index 0000000..a645399 --- /dev/null +++ b/debian/patches/20_fix_sub_paths_warning.patch @@ -0,0 +1,16 @@ +Update the variable after, not before, printing the warning, otherwise the +warning is bogus ("dir-template consists of more sub-paths (3) than +scan-dirs (3)", doh). Also fix s/he/it/ - jack is not a person. + +--- a/jack_checkopts.py~ 2006-01-23 14:39:36.000000000 +0000 ++++ b/jack_checkopts.py 2006-01-23 14:40:50.000000000 +0000 +@@ -90,8 +90,8 @@ + + # check dir_template and scan_dirs + if len(cf['_dir_template'].split(os.path.sep)) > cf['_scan_dirs']: ++ warning("dir-template consists of more sub-paths (%i) than scan-dirs (%i). Jack may not find the workdir next time it is run. (Auto-raised)" % (len(cf['_dir_template'].split(os.path.sep)), cf['_scan_dirs'])) + cf.rupdate({'scan_dirs': {'val': len(cf['_dir_template'].split(os.path.sep))}}, "check") +- warning("dir-template consists of more sub-paths (%i) than scan-dirs (%i). Jack may not find the workdir next time he is run. (Auto-raised)" % (len(cf['_dir_template'].split(os.path.sep)), cf['_scan_dirs'])) + + # check for unsername + if cf['username']['val'] == None: diff --git a/debian/patches/21_fallback_ripper.patch b/debian/patches/21_fallback_ripper.patch new file mode 100644 index 0000000..31e21fd --- /dev/null +++ b/debian/patches/21_fallback_ripper.patch @@ -0,0 +1,62 @@ +Fallback to an installed ripper when the default one is not available and +the user has not specified one. Debian #347975. + +Depends on 18_warn_no_base_dir.patch for check_rc(). + +diff -urN jack-3.1.1~/jack jack-3.1.1/jack +--- jack-3.1.1~/jack 2006-01-23 23:40:49.000000000 +0000 ++++ jack-3.1.1/jack 2006-01-23 23:41:52.000000000 +0000 +@@ -84,7 +84,7 @@ + debug("user_cf: " + `user_cf`) + debug("argv_cf: " + `argv_cf`) + +-jack_checkopts.check_rc(global_cf, user_cf, argv_cf) ++jack_checkopts.check_rc(cf, global_cf, user_cf, argv_cf) + jack_checkopts.consistency_check(cf) + + if cf['save_args']['val'] == 1: +diff -urN jack-3.1.1~/jack_checkopts.py jack-3.1.1/jack_checkopts.py +--- jack-3.1.1~/jack_checkopts.py 2006-01-23 23:40:49.000000000 +0000 ++++ jack-3.1.1/jack_checkopts.py 2006-01-24 00:04:35.000000000 +0000 +@@ -219,9 +219,22 @@ + # Checks concerning options specified by the user (in the global or user rc + # files or the command line), i.e. options/values that are not the default + # jack options from jack_config. +-def check_rc(global_cf, user_cf, argv_cf): ++def check_rc(cf, global_cf, user_cf, argv_cf): + + all_keys = global_cf.keys() + user_cf.keys() + argv_cf.keys() + if 'base_dir' not in all_keys: + warning("You have no standard location set, putting files into the current directory. Please consider setting base_dir in ~/.jack3rc.") + ++ # Check if the default ripper is installed, and if not, look for another one ++ if 'ripper' not in all_keys: ++ default_ripper = cf["ripper"]["val"] ++ if not jack_utils.in_path(default_ripper): ++ rippers = [i for i in jack_helpers.helpers if jack_helpers.helpers[i]["type"] == "ripper" and jack_helpers.helpers[i].has_key("toc_cmd")] ++ for cmd in rippers: ++ if jack_utils.in_path(cmd): ++ warning("Using ripper %s since default ripper %s is not available." % (cmd, default_ripper)) ++ cf.rupdate({'ripper': {'val': cmd}}, "check") ++ break ++ else: ++ error("No valid ripper found on your system.") ++ +diff -urN jack-3.1.1~/jack_utils.py jack-3.1.1/jack_utils.py +--- jack-3.1.1~/jack_utils.py 2006-01-23 23:40:49.000000000 +0000 ++++ jack-3.1.1/jack_utils.py 2006-01-24 00:04:35.000000000 +0000 +@@ -207,6 +207,13 @@ + new_path.append(base) + new_path.reverse() + ++def in_path(file): ++ "check if a file is an executable in PATH" ++ for path in os.environ.get("PATH", "").split(os.path.pathsep): ++ p = os.path.join(path, file) ++ if (os.path.isfile(p) and os.access(p, os.X_OK)): return True ++ return False ++ + def ex_edit(file): + editor = "/usr/bin/sensible-editor" + if os.environ.has_key("EDITOR"): + diff --git a/debian/patches/22_msf_offset.patch b/debian/patches/22_msf_offset.patch new file mode 100644 index 0000000..b7bcb2c --- /dev/null +++ b/debian/patches/22_msf_offset.patch @@ -0,0 +1,21 @@ +Don't assume that the first song starts right after the MSF offset. This +fixes the FreeDB (CDDB) ID calculation which was broken with some CDs. +Debian #319901. + +This patch indirectly also causes jack to use the tracksize information +from cdparanoia which is more accurate and therefore won't lead to failures +on tracks right before a data track. Debian #319894. + + +diff -urN jack-3.1.1.orig/jack_helpers.py jack-3.1.1/jack_helpers.py +--- jack-3.1.1.orig/jack_helpers.py 2005-07-26 20:10:09.231433216 +0100 ++++ jack-3.1.1/jack_helpers.py 2005-07-26 20:10:28.655480312 +0100 +@@ -488,7 +488,7 @@ + device.close() + toc.append(min * 60 * 75 + sec * 75 + frame) + for i in range(first, last + 1): +- erg.append([i, toc[i - first + 1] - toc[i - first], toc[i - first] - toc[0], 0, 0, 2, 1, cf['_bitrate'], cf['_name'] % i]) ++ erg.append([i, toc[i - first + 1] - toc[i - first], toc[i - first] - MSF_OFFSET, 0, 0, 2, 1, cf['_bitrate'], cf['_name'] % i]) + """, + } + } diff --git a/debian/patches/23_flac_options.patch b/debian/patches/23_flac_options.patch new file mode 100644 index 0000000..8caf54e --- /dev/null +++ b/debian/patches/23_flac_options.patch @@ -0,0 +1,17 @@ +Update options passed to the FLAC encoder; thanks, Robert Millan. +Debian #319950. + +diff -urN a/jack_helpers.py jack-3.1.1+cvs20050801/jack_helpers.py +--- a/jack_helpers.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_helpers.py 2006-02-05 16:08:39.000000000 +0000 +@@ -210,8 +210,8 @@ + 'flac': { + 'type': "encoder", + 'target': "flac", +- 'vbr-cmd': "flac -o %o %i", +- 'vbr-otf-cmd': "flac -fr -fb -fc 2 -fp 16 -fs 44100 -o %o", ++ 'vbr-cmd': "flac -o %o %i", ++ 'vbr-otf-cmd': "flac --channels 2 --bps 16 --sample-rate 44100 --force-raw-format --endian=big --sign=signed -o %o -", + 'status_blocksize': 160, + 'status_start': "%", + 'percent_fkt': r""" diff --git a/debian/patches/24_vbr_before_otf.patch b/debian/patches/24_vbr_before_otf.patch new file mode 100644 index 0000000..07a5eb8 --- /dev/null +++ b/debian/patches/24_vbr_before_otf.patch @@ -0,0 +1,26 @@ +Check for the availability of VBR before OTF so it's possible to fall back +to fixed bitrate OTF encoding; thanks, Robert Millan. Debia: #320093. + +diff -urN jack-3.1.1~/jack_checkopts.py jack-3.1.1/jack_checkopts.py +--- jack-3.1.1~/jack_checkopts.py 2005-07-26 23:01:54.740757664 +0100 ++++ jack-3.1.1/jack_checkopts.py 2005-07-26 23:06:30.786792288 +0100 +@@ -178,15 +178,15 @@ + warning("disabling on-the-fly operation as we're reading from image.") + cf.rupdate({'otf': {'val': 0}}, "check") + ++ if cf['_vbr'] and not jack_helpers.helpers[cf['_encoder']].has_key('vbr-cmd'): ++ warning("disabling VBR because " + cf['_encoder'] + " doesn't support it.") ++ cf.rupdate({'vbr': {'val': 0}}, "check") ++ + if cf['_otf']: + for i in (cf['_ripper'], cf['_encoder']): + if not jack_helpers.helpers[i].has_key(('vbr-' * cf['_vbr'] * (i == cf['_encoder'])) + 'otf-cmd'): + error("can't do on-the-fly because " + jack_helpers.helpers[i]['type'] + " " + i + " doesn't support it.") + +- if cf['_vbr'] and not jack_helpers.helpers[cf['_encoder']].has_key('vbr-cmd'): +- warning("disabling VBR because " + cf['_encoder'] + " doesn't support it.") +- cf.rupdate({'vbr': {'val': 0}}, "check") +- + if not cf['_vbr'] and not jack_helpers.helpers[cf['_encoder']].has_key('cmd'): + error("can't do CBR because " + cf['encoder']['val'] + " doesn't support it. Use -v") + diff --git a/debian/patches/25_ignore_empty_freedb_info.patch b/debian/patches/25_ignore_empty_freedb_info.patch new file mode 100644 index 0000000..c8b8cee --- /dev/null +++ b/debian/patches/25_ignore_empty_freedb_info.patch @@ -0,0 +1,115 @@ +Print a warning but not an error when the FreeDB file has missing track +information for a track which is not about to be ripped/tagged. +Debian #292612. + +diff -urN a/jack jack-3.1.1+cvs20050801/jack +--- a/jack 2006-02-05 15:18:38.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack 2006-02-05 15:19:32.000000000 +0000 +@@ -149,12 +149,12 @@ + if not os.path.exists(cf['_freedb_form_file'] + ".bak"): + cf['_query_on_start'] = 1 + if cf['_query_on_start']: +- freedb_rename = jack_prepare.query_on_start() ++ freedb_rename = jack_prepare.query_on_start(todo) + + ### (10) update freedb dbfile + if cf['_update_freedb']: + if not jack_tag.track_names: +- err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, cf['_freedb_form_file'], verb = 1, dirs = 0) ++ err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = 1, dirs = 0) + jack_freedb.freedb_template(jack_ripstuff.all_tracks, jack_tag.track_names, revision + 1) + jack_utils.ex_edit(cf['_freedb_form_file']) + info("now submit your changes if you like, using the option --submit (via http POST). Don't forget to activate your changes locally with -R") +@@ -251,7 +251,7 @@ + jack_display.exit() + + if cf['_query_when_ready'] or cf['_read_freedb_file'] or cf['_query_on_start']: +- err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, cf['_freedb_form_file'], verb = 1, dirs = 1) ++ err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = 1, dirs = 1) + if err: + error("could not read freedb file") + +diff -urN a/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- a/jack_freedb.py 2006-02-05 15:18:38.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-05 15:21:03.000000000 +0000 +@@ -53,14 +53,14 @@ + }, + } + +-def interpret_db_file(all_tracks, freedb_form_file, verb, dirs = 0, warn = None): ++def interpret_db_file(all_tracks, todo, freedb_form_file, verb, dirs = 0, warn = None): + "read freedb file and rename dir(s)" + global names_available, dir_created + freedb_rename = 0 + if warn == None: +- err, track_names, locale_names, cd_id, revision = freedb_names(freedb_id(all_tracks), all_tracks, freedb_form_file, verb = verb) ++ err, track_names, locale_names, cd_id, revision = freedb_names(freedb_id(all_tracks), all_tracks, todo, freedb_form_file, verb = verb) + else: +- err, track_names, locale_names, cd_id, revision = freedb_names(freedb_id(all_tracks), all_tracks, freedb_form_file, verb = verb, warn = warn) ++ err, track_names, locale_names, cd_id, revision = freedb_names(freedb_id(all_tracks), all_tracks, todo, freedb_form_file, verb = verb, warn = warn) + if (not err) and dirs: + freedb_rename = 1 + +@@ -319,7 +319,7 @@ + f.close() + return err + +-def freedb_names(cd_id, tracks, name, verb = 0, warn = 1): ++def freedb_names(cd_id, tracks, todo, name, verb = 0, warn = 1): + "returns err, [(artist, albumname), (track_01-artist, track_01-name), ...], cd_id, revision" + err = 0 + tracks_on_cd = tracks[-1][NUM] +@@ -355,7 +355,8 @@ + + for i in tracks: # check that info is there for all tracks + if not freedb.has_key("TTITLE%i" % (i[NUM] - 1)): # -1 because freedb starts at 0 +- err = 1 ++ if i[NUM] in [x[NUM] for x in todo]: ++ err = 1 + if verb: + warning("no freedb info for track %02i (\"TTITLE%i\")" % (i[NUM], i[NUM] - 1)) + freedb["TTITLE%i" % (i[NUM] - 1)] = "[not set]" +diff -urN a/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- a/jack_prepare.py 2006-02-05 15:18:38.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-02-05 15:25:16.000000000 +0000 +@@ -107,7 +107,7 @@ + unique_dirs.append(jack_dirs[i]) + for i in unique_dirs: + jack_ripstuff.all_tracks, dummy, track1_offset = jack_functions.cdrdao_gettoc(os.path.join(i, cf['_toc_file'])) +- err, jack_tag.track_names, jack_tag.locale_names, cd_id, revision = freedb_names(jack_freedb.freedb_id(jack_ripstuff.all_tracks), jack_ripstuff.all_tracks, os.path.join(i, cf['_freedb_form_file']), verb = 0, warn = 0) ++ err, jack_tag.track_names, jack_tag.locale_names, cd_id, revision = freedb_names(jack_freedb.freedb_id(jack_ripstuff.all_tracks), jack_ripstuff.all_tracks, jack_ripstuff.all_tracks, os.path.join(i, cf['_freedb_form_file']), verb = 0, warn = 0) + if err or cf['_force']:# this means freedb data is not there yet + info("matching dir found: %d" % i) + pid = os.fork() +@@ -466,7 +466,7 @@ + if not is_submittable: + error("can't submit in current state, please fix jack.freedb") + +- err, jack_tag.track_names, jack_tag.locale_names, cd_id, revision = jack_freedb.freedb_names(jack_freedb.freedb_id(jack_ripstuff.all_tracks), jack_ripstuff.all_tracks, cf['_freedb_form_file'], verb = 1) ++ err, jack_tag.track_names, jack_tag.locale_names, cd_id, revision = jack_freedb.freedb_names(jack_freedb.freedb_id(jack_ripstuff.all_tracks), jack_ripstuff.all_tracks, jack_ripstuff.all_tracks, cf['_freedb_form_file'], verb = 1) + if err: + error("invalid freedb file") + else: +@@ -477,7 +477,7 @@ + + ### (9) do query on start + +-def query_on_start(): ++def query_on_start(todo): + info("querying...") + if jack_freedb.freedb_query(jack_freedb.freedb_id(jack_ripstuff.all_tracks), jack_ripstuff.all_tracks, cf['_freedb_form_file']): + if cf['_cont_failed_query']: +@@ -519,11 +519,11 @@ + freedb_submit() + + if cf['_query_on_start']: +- err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, cf['_freedb_form_file'], verb = cf['_query_on_start'], dirs = 1) ++ err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = cf['_query_on_start'], dirs = 1) + if err: + error("query on start failed to give a good freedb file, aborting.") + else: +- err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, cf['_freedb_form_file'], verb = cf['_query_on_start'], warn = cf['_query_on_start']) ++ err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = cf['_query_on_start'], warn = cf['_query_on_start']) + return freedb_rename + + def undo_rename(status, todo): diff --git a/debian/patches/26_t_artist_cleanup.patch b/debian/patches/26_t_artist_cleanup.patch new file mode 100644 index 0000000..c2b78fb --- /dev/null +++ b/debian/patches/26_t_artist_cleanup.patch @@ -0,0 +1,66 @@ +Code clean-up: test only _once_ whether it's a multi-artist (VA) CD +(regarding the artist name). + +--- a/jack_tag.py 2006-02-05 01:19:49.000000000 +0000 ++++ b/jack_tag.py 2006-02-05 01:21:23.000000000 +0000 +@@ -76,7 +76,10 @@ + sys.stdout.write(".") ; sys.stdout.flush() + mp3name = i[NAME] + ext + wavname = i[NAME] + ".wav" +- t_artist = track_names[i[NUM]][0] ++ if track_names[i[NUM]][0]: ++ t_artist = track_names[i[NUM]][0] ++ else: ++ t_artist = a_artist + t_name = track_names[i[NUM]][1] + t_comm = "" + if not cf['_only_dae'] and cf['_set_id3tag']: +@@ -105,10 +108,7 @@ + tag.setTitle(t_name) + tag.setTrackNum((i[NUM],len(jack_ripstuff.all_tracks_orig))) + tag.setTitle(t_name) +- if t_artist: +- tag.setArtist(t_artist) +- else: +- tag.setArtist(a_artist) ++ tag.setArtist(t_artist) + if cf['_id3_genre'] != -1: + tag.setGenre("(%d)" % (cf['_id3_genre'])) + if cf['_id3_year'] != -1: +@@ -130,10 +130,7 @@ + tag.setTitle(t_name) + tag.setTrackNum((i[NUM],len(jack_ripstuff.all_tracks_orig))) + tag.setTitle(t_name) +- if t_artist: +- tag.setArtist(t_artist) +- else: +- tag.setArtist(a_artist) ++ tag.setArtist(t_artist) + if cf['_id3_genre'] != -1: + tag.setGenre("(%d)" % (cf['_id3_genre'])) + if cf['_id3_year'] != -1: +@@ -162,10 +159,7 @@ + vc.comments['ALBUM'] = a_title.encode("utf-8") + vc.comments['TRACKNUMBER'] = `i[NUM]` + vc.comments['TITLE'] = t_name.encode("utf-8") +- if t_artist: +- vc.comments['ARTIST'] = t_artist.encode("utf-8") +- else: +- vc.comments['ARTIST'] = a_artist.encode("utf-8") ++ vc.comments['ARTIST'] = t_artist.encode("utf-8") + if cf['_id3_genre'] != -1: + vc.comments['GENRE'] = id3genres[cf['_id3_genre']] + if cf['_id3_year'] != -1: +@@ -183,10 +177,7 @@ + oggi.add_tag('ALBUM', a_title.encode("utf-8")) + oggi.add_tag('TRACKNUMBER', `i[NUM]`) + oggi.add_tag('TITLE', t_name.encode("utf-8")) +- if t_artist: +- oggi.add_tag('ARTIST', t_artist.encode("utf-8")) +- else: +- oggi.add_tag('ARTIST', a_artist.encode("utf-8")) ++ oggi.add_tag('ARTIST', t_artist.encode("utf-8")) + if cf['_id3_genre'] != -1: + oggi.add_tag('GENRE', id3genres[cf['_id3_genre']]) + if cf['_id3_year'] != -1: + diff --git a/debian/patches/27_allow_year_genre_sa.patch b/debian/patches/27_allow_year_genre_sa.patch new file mode 100644 index 0000000..bbe0817 --- /dev/null +++ b/debian/patches/27_allow_year_genre_sa.patch @@ -0,0 +1,13 @@ +Allow %y and %g in filenames of single-artist tracks. Debian #351465 + +--- a/jack_tag.py 2006-02-05 01:17:06.000000000 +0000 ++++ b/jack_tag.py 2006-02-05 01:18:38.000000000 +0000 +@@ -198,7 +198,7 @@ + newname = jack_misc.multi_replace(cf['_rename_fmt_va'], replacelist) + + else: +- replacelist = (("%n", cf['_rename_num'] % i[NUM]), ("%a", a_artist), ("%t", t_name), ("%l", a_title)) ++ replacelist = (("%n", cf['_rename_num'] % i[NUM]), ("%a", a_artist), ("%t", t_name), ("%l", a_title), ("%y", `cf['_id3_year']`), ("%g", genretxt)) + newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist) + exec("newname = newname" + cf['_char_filter']) + for char_i in range(len(cf['_unusable_chars'])): diff --git a/debian/patches/28_allow_edit_cddb.patch b/debian/patches/28_allow_edit_cddb.patch new file mode 100644 index 0000000..9a49b07 --- /dev/null +++ b/debian/patches/28_allow_edit_cddb.patch @@ -0,0 +1,34 @@ +Debian used --edit-cddb for a few months, but upstream changed the option +to --edit-freedb for consistency. Allow --edit-cddb to continue to work, +but only for backwards compatibility, i.e. print a warning. + +diff -urN a/jack_checkopts.py jack-3.1.1+cvs20050801/jack_checkopts.py +--- a/jack_checkopts.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_checkopts.py 2006-02-05 17:27:40.000000000 +0000 +@@ -59,6 +59,10 @@ + if cf2.has_key('freedb_rename') and cf2['freedb_rename']['val']: + cf.rupdate({'read_freedb_file': {'val': 1}, 'set_id3tag':{'val': 1}}, "check") + ++ if cf2.has_key('edit_cddb'): ++ warning("--edit-cddb is obsolete, please use --edit-freedb") ++ cf.rupdate({'edit_freedb': {'val': 1}}, "check") ++ + if cf2.has_key('id3_genre_txt'): + genre = jack_functions.check_genre_txt(cf2['id3_genre_txt']['val']) + if genre != cf['_id3_genre']: +diff -urN a/jack_config.py jack-3.1.1+cvs20050801/jack_config.py +--- a/jack_config.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_config.py 2006-02-05 17:24:46.000000000 +0000 +@@ -524,6 +524,12 @@ + 'usage': "continue without freedb data if query fails", + 'long': 'AUTO', + }, ++ 'edit_cddb': { ++ # For backwards compatibility only, use edit_freedb instead! ++ 'type': 'toggle', ++ 'val': 0, ++ 'long': 'AUTO', ++ }, + 'edit_freedb': { + 'type': 'toggle', + 'val': 0, diff --git a/debian/patches/29_remove_freedb-de.patch b/debian/patches/29_remove_freedb-de.patch new file mode 100644 index 0000000..3eac882 --- /dev/null +++ b/debian/patches/29_remove_freedb-de.patch @@ -0,0 +1,18 @@ +db.freedb.org no longer exists. Debian #351719. + +diff -urN a/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- a/jack_freedb.py 2006-02-06 22:35:38.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-06 22:45:24.000000000 +0000 +@@ -45,12 +45,6 @@ + 'mail': "freedb-submit@freedb.org", + 'my_mail': "default" + }, +- 'freedb-de': { +- 'host': "de.freedb.org", +- 'id': prog_name + " " + prog_version, +- 'mail': "freedb-submit@freedb.org", +- 'my_mail': "default" +- }, + } + + def interpret_db_file(all_tracks, freedb_form_file, verb, dirs = 0, warn = None): diff --git a/debian/patches/30_add_freedb_mirrors.patch b/debian/patches/30_add_freedb_mirrors.patch new file mode 100644 index 0000000..a44a9a7 --- /dev/null +++ b/debian/patches/30_add_freedb_mirrors.patch @@ -0,0 +1,84 @@ +Update the list of FreeDB mirrors. + +Depends on 29_remove_freedb-de.patch + +diff -urN c/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- c/jack_freedb.py 2006-02-07 00:30:07.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-07 00:32:57.000000000 +0000 +@@ -42,6 +42,9 @@ + freedb_inexact_match = -1 + filenames = [] + ++# Warning: code duplication. Make a function through which information can ++# be requested, and let it fall back to generic information (e.g. my_mail, ++# mail, id) and only require individual entries to have 'host'). FIXME + freedb_servers = { + 'freedb': { + 'host': "freedb.freedb.org", +@@ -49,6 +52,66 @@ + 'mail': "freedb-submit@freedb.org", + 'my_mail': "default" + }, ++ 'freedb-at': { ++ 'host': "at.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-au': { ++ 'host': "au.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-ca': { ++ 'host': "ca.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-es': { ++ 'host': "es.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-fi': { ++ 'host': "fi.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-jp': { ++ 'host': "jp.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-ru': { ++ 'host': "ru.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-uk': { ++ 'host': "uk.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-uk2': { ++ 'host': "uk2.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, ++ 'freedb-us': { ++ 'host': "us.freedb.org", ++ 'id': prog_name + " " + prog_version, ++ 'mail': "freedb-submit@freedb.org", ++ 'my_mail': "default" ++ }, + } + + def interpret_db_file(all_tracks, todo, freedb_form_file, verb, dirs = 0, warn = None): diff --git a/debian/patches/31_real_bitrate_progress.patch b/debian/patches/31_real_bitrate_progress.patch new file mode 100644 index 0000000..928480a --- /dev/null +++ b/debian/patches/31_real_bitrate_progress.patch @@ -0,0 +1,26 @@ +Put the real bitrate in the progress file. In case of VBR, jack used to +put the bitrate of CBR into the jack.progress file. (Actually, why does +track[RATE] not always contain the real rate?) Or maybe we should put the +chosen quality rating in the progress file incase of OGG? + +diff -urN c/jack_main_loop.py jack-3.1.1+cvs20050801/jack_main_loop.py +--- c/jack_main_loop.py 2006-02-07 00:57:23.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_main_loop.py 2006-02-07 01:17:15.000000000 +0000 +@@ -344,13 +344,14 @@ + else: + global_done = global_done + exited_proc['track'][LEN] + if cf['_vbr']: +- jack_status.enc_stat_upd(num, "[coding @" + '%s' % jack_functions.pprint_speed(speed) + "x done, %03.0fkbit]" % ((jack_utils.filesize(track[NAME] + ext) * 0.008) / (track[LEN] / 75.0))) ++ rate = int((jack_utils.filesize(track[NAME] + ext) * 0.008) / (track[LEN] / 75.0)) + else: +- jack_status.enc_stat_upd(num, "[coding @" + '%s' % jack_functions.pprint_speed(speed) + "x done, mp3 OK]") ++ rate = track[RATE] ++ jack_status.enc_stat_upd(num, "[coding @" + '%s' % jack_functions.pprint_speed(speed) + "x done, %dkbit" % rate) ++ jack_functions.progress(num, "enc", `rate`, jack_status.enc_status[num]) + if not cf['_otf'] and not cf['_keep_wavs']: + os.remove(track[NAME] + ".wav") + space = space + jack_functions.tracksize(track)[WAV] +- jack_functions.progress(num, "enc", `track[RATE]`, jack_status.enc_status[num]) + + else: + error("child process of unknown type (" + exited_proc['type'] + ") exited") diff --git a/debian/patches/32_man_minus.patch b/debian/patches/32_man_minus.patch new file mode 100644 index 0000000..2cd1dc3 --- /dev/null +++ b/debian/patches/32_man_minus.patch @@ -0,0 +1,84 @@ +Escape minus signs in the man page properly. + +'-' must be escaped ('\-') to be interpreted as minus. If you really +intend a hyphen, write it as '\(hy' to emphasise that fact. See +groff(7) and especially groff_char(7) for details, and also the thread +starting with +http://lists.debian.org/debian-devel/2003/debian-devel-200303/msg01481 + + + +--- jack-3.1.1+cvs20050801~/jack.man 2006-04-02 21:01:32.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack.man 2006-04-02 21:11:02.000000000 +0200 +@@ -148,9 +148,9 @@ + .TP + .B \-\-edit-freedb + open an editor to change the CDDB information which has been obtained +-previously (only useful with -Q). ++previously (only useful with \-Q). + .TP +-.B \-\-encoder-name, -E string ++.B \-\-encoder-name, \-E string + use which encoder (default "oggenc") + .TP + .B \-e, \-\-encoders int +@@ -260,7 +260,7 @@ + .\" rip (non-functional, sorry) + .TP + .B \-\-quality int +-vbr encoding quality. -1 is lowest, 10 highest (default 6). You can also specify a float. ++vbr encoding quality. \-1 is lowest, 10 highest (default 6). You can also specify a float. + .TP + .B \-q, \-\-query + do FreeDB query when all is done. This is useful if Jack was previously +@@ -286,7 +286,7 @@ + enough disk space. + .TP + .B \-\-remove-files +-have Jack remove its temp jack*-files. ++have Jack remove its temp jack*\-files. + Be careful - don't delete them too early! + .TP + .B \-R, \-\-rename +@@ -431,7 +431,7 @@ + track_nn.mp3 plus jack.toc, jack.freedb, jack.progress. The last three are + used to store the state jack is in so it can resume work when interrupted. + .PP +-Jack will create a directory called jack-xxxxxxxx for you, there it ++Jack will create a directory called jack\-xxxxxxxx for you, there it + stores all the file for the CD whose id is xxxxxxxx. After a FreeDB query + this directory is renamed to something human readable, like "Artist - + Title". +@@ -444,7 +444,7 @@ + .PP + Now let's try a FreeDB query: + .RS +-jack -q ++jack \-q + .RE + If the query is successful the files will be renamed to something more readable + and will be tagged accordingly using ID3 or Vorbis tags. The file jack.freedb +@@ -467,7 +467,7 @@ + .B replacement_chars. + For example, + .RS +-jack -Q --rename-fmt "%n-%t" --unusable-chars A I \; --replacement-chars a i \; ++jack \-Q \-\-rename-fmt "%n-%t" \-\-unusable-chars A I \; \-\-replacement-chars a i \; + .RE + will query the FreeDB server, rip and encode all tracks of the CD and save + the files in a format which will contain the track number and the title. +@@ -492,12 +492,12 @@ + .PP + All in one: query, rip, encode, cleanup: + .RS +-jack -Q --remove-files ++jack \-Q \-\-remove-files + .RE + .PP + Editing / normalizing / stripping the WAV files before encoding: + .RS +-jack -O --remove-files ; gnoise *wav ; jack -g *wav ; jack ++jack \-O \-\-remove-files ; gnoise *wav ; jack \-g *wav ; jack + .RE + Just replace gnoise by the operation you'd like to perform. + .SH ENVIRONMENT VARIABLES diff --git a/debian/patches/33_flac_mutagen.patch b/debian/patches/33_flac_mutagen.patch new file mode 100644 index 0000000..58897d1 --- /dev/null +++ b/debian/patches/33_flac_mutagen.patch @@ -0,0 +1,69 @@ +From: Joe Wreschnig + +Attached is a patch to jack_init.py and jack_tag.py to make them use +Mutagen rather than pyflac. Mutagen exposes the stream info as +f.info.{sample_rate,total_samples}, similar to pyflac. [pyflac is no longer +maintained] + + +diff -urN jack-3.1.1+cvs20050801~/jack_init.py jack-3.1.1+cvs20050801/jack_init.py +--- jack-3.1.1+cvs20050801~/jack_init.py 2006-02-05 15:09:07.000000000 +0100 ++++ jack-3.1.1+cvs20050801/jack_init.py 2006-04-04 22:49:42.000000000 +0200 +@@ -62,7 +62,7 @@ + ogg = dummy_ogg() + + try: +- import flac.metadata ++ import mutagen.flac as flac + except ImportError: + flac = None + +diff -urN jack-3.1.1+cvs20050801~/jack_tag.py jack-3.1.1+cvs20050801/jack_tag.py +--- jack-3.1.1+cvs20050801~/jack_tag.py 2006-04-04 22:59:44.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_tag.py 2006-04-04 22:59:10.000000000 +0200 +@@ -153,31 +153,21 @@ + mp3file.close() + elif jack_helpers.helpers[cf['_encoder']]['target'] == "flac": + if flac: +- chain = flac.metadata.Chain() +- chain.read(mp3name) +- it = flac.metadata.Iterator() +- it.init(chain) +- while 1: +- if it.get_block_type() == flac.metadata.VORBIS_COMMENT: +- block = it.get_block() +- vc = flac.metadata.VorbisComment(block) +- break +- if not it.next(): +- break +- if vc: +- vc.comments['ALBUM'] = a_title.encode("utf-8") +- vc.comments['TRACKNUMBER'] = `i[NUM]` +- vc.comments['TITLE'] = t_name.encode("utf-8") +- vc.comments['ARTIST'] = t_artist.encode("utf-8") +- if cf['_id3_genre'] != -1: +- vc.comments['GENRE'] = id3genres[cf['_id3_genre']] +- if cf['_id3_year'] != -1: +- vc.comments['DATE'] = `cf['_id3_year']` +- chain.write(True, True) ++ f = flac.FLAC(mp3name) ++ if f.vc is None: f.add_vorbiscomment() ++ f.vc['ALBUM'] = a_title ++ f.vc['TRACKNUMBER'] = str(i[NUM]) ++ f.vc['TITLE'] = t_name ++ f.vc['ARTIST'] = t_artist ++ if cf['_id3_genre'] != -1: ++ f.vc['GENRE'] = id3genres[cf['_id3_genre']] ++ if cf['_id3_year'] != -1: ++ f.vc['DATE'] = str(cf['_id3_year']) ++ f.save() + else: + print +- print "Please install the pyflac module available at" +- print "http://www.sacredchao.net/quodlibet/wiki/Download" ++ print "Please install the Mutagen module available at" ++ print "http://www.sacredchao.net/quodlibet/wiki/Development/Mutagen" + print "Without it, you'll not be able to tag FLAC tracks." + elif jack_helpers.helpers[cf['_encoder']]['target'] == "ogg": + vf = ogg.vorbis.VorbisFile(mp3name) + diff --git a/debian/patches/34_toc_invocation_fail.patch b/debian/patches/34_toc_invocation_fail.patch new file mode 100644 index 0000000..3f208f6 --- /dev/null +++ b/debian/patches/34_toc_invocation_fail.patch @@ -0,0 +1,24 @@ +The error message when the toc program fails is misleading. Improve the +message and remove some code that is not needed because it's tested +elsewhere already. Debian #360465. + +--- a/jack_functions.py~ 2006-05-16 16:40:17.000000000 +0200 ++++ b/jack_functions.py 2006-05-16 16:40:36.000000000 +0200 +@@ -119,16 +119,7 @@ + l = p.readline() + exec(jack_helpers.helpers[toc_prog]['toc_fkt']) + if p.close(): +- if cf['_cd_device']: +- try: +- f = open(cf['_cd_device'], "r") +- except IOError: +- info("could not open " + cf['_cd_device'] + ". Check permissions and that a disc is inserted.") +- else: +- info("maybe " + toc_prog + " is not installed?") +- else: +- info("try setting cf['_cd_device'] to your CD device, e.g. /dev/cdrom") +- error("could not read CD's TOC.") ++ error("%s failed - could not read CD's TOC." % toc_prog) + else: + return erg + else: diff --git a/debian/patches/35_fix_xtermset.patch b/debian/patches/35_fix_xtermset.patch new file mode 100644 index 0000000..896ddcc --- /dev/null +++ b/debian/patches/35_fix_xtermset.patch @@ -0,0 +1,14 @@ +When xtermset_enable is set, jack resizes the window to something that is +not high enough. + +--- jack_term.py~ 2006-05-16 18:09:55.000000000 +0200 ++++ jack_term.py 2006-05-16 18:10:22.000000000 +0200 +@@ -106,7 +106,7 @@ + want_y = want_y - 1 + if jack_freedb.names_available: + want_y = want_y + 1 +- want_y = max(want_y, 7) ++ want_y += 7 # for the help panel + if (size_x, size_y) != (want_x, want_y): + try: + os.system("xtermset -geom %dx%d" % (want_x, want_y)) diff --git a/debian/patches/36_check_plugin.patch b/debian/patches/36_check_plugin.patch new file mode 100644 index 0000000..5851092 --- /dev/null +++ b/debian/patches/36_check_plugin.patch @@ -0,0 +1,21 @@ +Bette error checking for the plugin import. + +--- jack_plugins.py~ 2006-05-20 14:16:41.000000000 +0200 ++++ jack_plugins.py 2006-05-20 14:27:11.000000000 +0200 +@@ -26,8 +26,14 @@ + def load_plugin(name, structure): + import_statement = "from jack_%s import %s" % (name, structure) + get_statement = "tmp = %s[name]" % structure +- exec(import_statement) in locals() +- exec(get_statement) in locals() ++ try: ++ exec(import_statement) in locals() ++ except ImportError, e: ++ error(str(e)) ++ try: ++ exec(get_statement) in locals() ++ except KeyError: ++ error("Plugin %s doesn't have an appropriate helper definition." % name) + return tmp + + def import_freedb_servers(): diff --git a/debian/patches/37_expand_CBR_acronym.patch b/debian/patches/37_expand_CBR_acronym.patch new file mode 100644 index 0000000..753a75e --- /dev/null +++ b/debian/patches/37_expand_CBR_acronym.patch @@ -0,0 +1,15 @@ +Change error message wording to say `fixed bitrate', which is +more clear than `CBR'. Patch by Michael Banck. Debian #293336 + + +--- a/jack_checkopts.py.orig 2005-03-25 23:12:59.333566976 +0100 ++++ b/jack_checkopts.py 2005-03-25 23:13:12.996489896 +0100 +@@ -188,7 +188,7 @@ + cf.rupdate({'vbr': {'val': 0}}, "check") + + if not cf['_vbr'] and not jack_helpers.helpers[cf['_encoder']].has_key('cmd'): +- error("can't do CBR because " + cf['encoder']['val'] + " doesn't support it. Use -v") ++ error("can't do fixed bitrate because " + cf['encoder']['val'] + " doesn't support it. Use -v") + + if cf['_ripper'] == "cdparanoia" and cf['_sloppy']: + jack_helpers.helpers['cdparanoia']['cmd'] = replace(jack_helpers.helpers['cdparanoia']['cmd'], "--abort-on-skip", "") diff --git a/debian/patches/38_remove_gen_device.patch b/debian/patches/38_remove_gen_device.patch new file mode 100644 index 0000000..f411858 --- /dev/null +++ b/debian/patches/38_remove_gen_device.patch @@ -0,0 +1,104 @@ +Remove (broken) generic device support from jack + +The current support in jack for "generic devices" is completely +broken. While there is a --gen-device option (corresponding to %D in +jack_helpers), it is actually not used anywhere - only in the cmd_old +of cdda2wav but this is not used. The normal cmd uses %d which is the +normal device. + +Furthermore, jack checks that the device specified as --gen-device +exists (i.e. it assumes it's something like /dev/....). However, +according to latest cdda2wav, it expects a SCSI string a la 1,0,0 +(bus, id, lun). Further tests show that using 1,0,0 or /dev/sr0 +on my system with a USB CD-ROM (i.e. one that shows up as SCSI) does +not make any difference at all. + +My conclusion is that this "generic device" stuff is obsolete. +Current Linux kernels should deal with devices properly, regardless of +them being IDE or SCSI. In fact, I just saw a proposal to get rid of +the ide-scsi stuff in the kernel. + +I'll therefore remove the (broken) generic device support from jack. + + +diff -urN jack-3.1.1+cvs20050801~/jack_config.py jack-3.1.1+cvs20050801/jack_config.py +--- jack-3.1.1+cvs20050801~/jack_config.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_config.py 2006-02-13 21:50:33.000000000 +0000 +@@ -64,12 +64,6 @@ + 'usage': "use which device for ripping", + 'long': 'device', + }, +- 'gen_device': { +- 'type': types.StringType, +- 'val': None, +- 'doc': "cdda2wav may need the scsi generic device", +- 'long': 'AUTO', +- }, + 'encoder': { + 'type': types.StringType, + 'val': "oggenc", +diff -urN jack-3.1.1+cvs20050801~/jack_functions.py jack-3.1.1+cvs20050801/jack_functions.py +--- jack-3.1.1+cvs20050801~/jack_functions.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_functions.py 2006-02-13 21:50:24.000000000 +0000 +@@ -111,8 +111,6 @@ + "Returns track list" + if jack_helpers.helpers[toc_prog].has_key('toc_cmd'): + cmd = string.replace(jack_helpers.helpers[toc_prog]['toc_cmd'], "%d", cf['_cd_device']) +- if cf['_gen_device']: +- cmd = string.replace(cmd, "%D", cf['_gen_device']) + p = os.popen(cmd) + start = 0 + erg = [] +diff -urN jack-3.1.1+cvs20050801~/jack_helpers.py jack-3.1.1+cvs20050801/jack_helpers.py +--- jack-3.1.1+cvs20050801~/jack_helpers.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_helpers.py 2006-02-13 21:51:04.000000000 +0000 +@@ -350,7 +350,6 @@ + ch = [ "none", "mono", "stereo", "three", "quad" ].index(ch) + erg.append([num, length, start, copy, pre, ch, 1, cf['_bitrate'], cf['_name'] % (num + 1)]) + """, +- 'toc_cmd_old': "cdda2wav --no-infofile -D %D -J -v 35 2>&1", + 'toc_fkt_old': r""" + new_c2w = 0 + new_toc1 = 0 +diff -urN jack-3.1.1+cvs20050801~/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- jack-3.1.1+cvs20050801~/jack_prepare.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-02-13 21:50:18.000000000 +0000 +@@ -62,9 +62,6 @@ + else: + jack_ripstuff.all_tracks = jack_functions.gettoc(cf['_toc_prog']) + toc_just_read = 1 +- # check that the generic device is usable, too +- if cf['_gen_device'] and not os.access(cf['_gen_device'], os.R_OK | os.W_OK): +- warning(r"""could not open generic device %s for reading and writing.""" % cf['_gen_device']) + + if cf['_scan_dirs']: + dirs = [os.getcwd()] +diff -urN jack-3.1.1+cvs20050801~/jack_workers.py jack-3.1.1+cvs20050801/jack_workers.py +--- jack-3.1.1+cvs20050801~/jack_workers.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_workers.py 2006-02-13 21:50:12.000000000 +0000 +@@ -78,7 +78,6 @@ + if i == "%n": args.append(`track[NUM]`) + elif i == "%o": args.append(track[NAME].decode(cf['_charset'], "replace") + ".wav") + elif i == "%d": args.append(cf['_cd_device']) +- elif i == "%D": args.append(cf['_gen_device']) + else: args.append(i) + data = start_new_process(args) + data['type'] = "ripper" +@@ -165,7 +164,6 @@ + for i in string.split(helpers[ripper]['otf-cmd']): + if i == "%n": args.append(`track[NUM]`) + elif i == "%d": args.append(cf['_cd_device']) +- elif i == "%D": args.append(cf['_gen_device']) + else: args.append(i) + data['rip']['start_time'] = time.time() + pid = os.fork() +@@ -205,8 +203,6 @@ + args.append(track[NAME].decode(cf['_charset'], "replace") + jack_targets.targets[jack_helpers.helpers[cf['_encoder']]['target']]['file_extension']) + elif i == "%d": + args.append(cf['_cd_device']) +- elif i == "%D": +- args.append(cf['_gen_device']) + else: + args.append(i) + data['enc']['start_time'] = time.time() + diff --git a/debian/patches/39_main_loop_valueerror.patch b/debian/patches/39_main_loop_valueerror.patch new file mode 100644 index 0000000..d340d2e --- /dev/null +++ b/debian/patches/39_main_loop_valueerror.patch @@ -0,0 +1,49 @@ +Pressing ctrl-c randomly during ripping leads to ValueError. jack catches +ValueError already in one place, but it needs to do the same in two other +cases. Debian #352754. + + +(-) SPACE:1.60GB waiting_WAVs:01 DAE:1+0 ENC:0+1 errors: 15 :-[ Traceback (most recent call last): + File "/usr/bin/jack", line 235, in ? + global_error = jack_main_loop.main_loop(mp3s_todo, wavs_todo, space, dae_queue, enc_queue, track1_offset) + File "/usr/lib/python2.3/site-packages/jack_main_loop.py", line 216, in main_loop + x = i['file'].read() + ValueError: I/O operation on closed file + *warning* abnormal exit + zsh: exit 1 jack +1815:tbm@deprecation: ~/tmp/jack] + + +diff -urN jack-3.1.1+cvs20050801~/jack_main_loop.py jack-3.1.1+cvs20050801/jack_main_loop.py +--- jack-3.1.1+cvs20050801~/jack_main_loop.py 2006-02-14 01:13:10.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_main_loop.py 2006-02-14 01:13:42.000000000 +0000 +@@ -215,7 +215,7 @@ + if os.uname()[0] == "Linux" and i['type'] != "image_reader": + try: + x = i['file'].read() +- except IOError: ++ except (IOError, ValueError): + pass + else: + read_chars = 0 +@@ -223,7 +223,7 @@ + while read_chars < jack_helpers.helpers[i['prog']]['status_blocksize']: + try: + xchar = i['file'].read(1) +- except IOError: ++ except (IOError, ValueError): + break + x = x + xchar + read_chars = read_chars + 1 +@@ -263,9 +263,7 @@ + x = "" + try: + x = exited_proc['file'].read() +- except IOError: +- pass +- except ValueError: ++ except (IOError, ValueError): + pass + exited_proc['buf'] = (exited_proc['buf'] + x)[-jack_helpers.helpers[exited_proc['prog']]['status_blocksize']:] + exited_proc['file'].close() + diff --git a/debian/patches/40_enable_term.patch b/debian/patches/40_enable_term.patch new file mode 100644 index 0000000..e8b1563 --- /dev/null +++ b/debian/patches/40_enable_term.patch @@ -0,0 +1,55 @@ +When a ripper is killed with ctrl-c, it is properly marked as "DAE failed +with status 15, wav removed". However, afterwards pressing any key +does precisely nothing, e.g. cursor keys or ctrl-l. ctrl-c does work, +but messes up the display. + +The reason for that is that jack_term.disable() is called in the signal +handler, but nobody calls jack_term.enable()... adding this works. + +In addition, let's ignore ctrl-c in the signal handler function because +otherwise people could press ctrl-c again within the signal handler (e.g. +while jack is waiting for the user to press enter when --wait is on), and +then we get the display problem again because jack_term.enable() is not +called. + +Debian #352755 + +P.S. I'm not quite sure whether this fix (and 56_ctrl_c_termset.patch, +which is related) are correct. Basically, according to the code, pressing +Ctrl-C should clean up and then exit the program. However, for some reason +jack never exits; all that happens is that the helpers are killed off. The +sig variable seems to indicate whether we're really exiting or not... +unfortunately, I have no idea why jack doesn't exit all the time or what +the correct behaviour should be. See http://bugs.debian.org/196429 for +some discussion about this. + + +Depends on 21_fallback_ripper.patch + + +diff -urN jack-3.1.1+cvs20050801~/jack_display.py jack-3.1.1+cvs20050801/jack_display.py +--- jack-3.1.1+cvs20050801~/jack_display.py 2006-02-21 00:38:12.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_display.py 2006-02-21 00:38:34.000000000 +0000 +@@ -74,6 +74,10 @@ + else: + exit_code = 0 + ++ # Ignore Ctrl-C while we disable and enable curses, otherwise there may ++ # be display problems. ++ sigint_handler = signal.getsignal(signal.SIGINT) ++ signal.signal(signal.SIGINT, signal.SIG_IGN) + jack_term.disable() + + if sig: +@@ -93,6 +97,10 @@ + if cf['_wait_on_quit']: + raw_input("press ENTER to exit") + ++ if sig: ++ jack_term.enable() ++ signal.signal(signal.SIGINT, sigint_handler) ++ + sys.exit(exit_code) + + #/ end of sig_handler /# + diff --git a/debian/patches/41_nicify_wait.patch b/debian/patches/41_nicify_wait.patch new file mode 100644 index 0000000..ad121cc --- /dev/null +++ b/debian/patches/41_nicify_wait.patch @@ -0,0 +1,24 @@ +When --wait is on jack always display "press ENTER to exit" when leaving +the signal handler. This message is not optimal since it's also displayed +when you e.g. kill a ripper or encoder. Check whether sig is set and adapt +the message accordingly. + +Depends on 40_enable_term.patch + + +diff -urN jack-3.1.1+cvs20050801~/jack_display.py jack-3.1.1+cvs20050801/jack_display.py +--- jack-3.1.1+cvs20050801~/jack_display.py 2006-02-21 00:39:23.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_display.py 2006-02-21 00:39:50.000000000 +0000 +@@ -95,7 +95,10 @@ + progress("all", "err", "abnormal exit (code %i), check %s and %s" % (exit_code, cf['_err_file'], cf['_out_file'])) + + if cf['_wait_on_quit']: +- raw_input("press ENTER to exit") ++ if sig: ++ raw_input("press ENTER\n") ++ else: ++ raw_input("press ENTER to exit\n") + + if sig: + jack_term.enable() + diff --git a/debian/patches/42_cd_device_fallback.patch b/debian/patches/42_cd_device_fallback.patch new file mode 100644 index 0000000..5c40ad7 --- /dev/null +++ b/debian/patches/42_cd_device_fallback.patch @@ -0,0 +1,56 @@ +If the user doesn't specify a device and the default (/dev/cdrom) doesn't +exist, it would be nice if jack could fall back to the device(s) listed in +/proc/sys/dev/cdrom/info (at least on Linux). According to the +linux-kernel mailing list, this is a stable interface. + +Debian #353551 +Depends on 21_fallback_ripper.patch + +diff -urN jack-3.1.1+cvs20050801~/jack_checkopts.py jack-3.1.1+cvs20050801/jack_checkopts.py +--- jack-3.1.1+cvs20050801~/jack_checkopts.py 2006-07-02 20:09:50.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_checkopts.py 2006-07-02 20:10:24.000000000 +0200 +@@ -254,3 +254,44 @@ + if not jack_utils.in_path(helper): + error("Helper %s '%s' not found on your system." % (t, helper)) + ++ # If the default CD device doesn't exist, see whether we can find another one ++ if ('cd_device' not in all_keys and cf["rip_from_device"]["val"] and ++ not os.path.exists(cf["cd_device"]["val"])): ++ default = cf["cd_device"]["val"] ++ devices = [] ++ # All CD devices can be found in /proc on Linux ++ cdrom_info = "/proc/sys/dev/cdrom/info" ++ if os.path.exists(cdrom_info): ++ try: ++ info = open(cdrom_info, "r") ++ except (IOError, OSError): ++ pass ++ else: ++ for line in info.readlines(): ++ if line.startswith("drive name:"): ++ devices = ["/dev/" + x for x in line.rstrip().split("\t")[2:]] ++ break ++ info.close() ++ message = "Default CD device %s does not exist" % default ++ if not devices: ++ warning("%s." % message) ++ elif len(devices) == 1: ++ warning("%s, using %s." % (message, devices[0])) ++ cf.rupdate({'cd_device': {'val': devices[0]}}, "check") ++ else: ++ warning("%s but there are several CD devices." % message) ++ for i in range(len(devices)): ++ print "%2d" % (i+1) + ".) " + devices[i] ++ input = 0 ++ while input <= 0 or input > len(devices): ++ try: ++ input = raw_input("Please choose: ") ++ except KeyboardInterrupt: ++ sys.exit(0) ++ if input.isdigit(): ++ input = int(input) ++ else: ++ input = 0 ++ devices[0] = devices[input-1] ++ cf.rupdate({'cd_device': {'val': devices[0]}}, "check") ++ diff --git a/debian/patches/43_string_option.patch b/debian/patches/43_string_option.patch new file mode 100644 index 0000000..a6229b1 --- /dev/null +++ b/debian/patches/43_string_option.patch @@ -0,0 +1,22 @@ +option is already a string, so don't convert it to a string again, +otherwise we get multiple quotation marks. + +122:tbm@deception: ~/tmp/jack/in_bloom_cd1] jack -g +This is jack 3.1.1 (C)2004 Arne Zellentin + *error* option `'guess_mp3s'' takes a non-empty list (which may be terminated + by ";") +zsh: exit 1 jack -g + + +diff -urN orig/jack_argv.py jack-3.1.1+cvs20050801/jack_argv.py +--- orig/jack_argv.py 2006-02-27 12:38:42.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_argv.py 2006-02-27 12:39:04.000000000 +0000 +@@ -148,7 +148,7 @@ + if l and type(l) == types.ListType: + return i, l + else: +- return None, "option `%s' takes a non-empty list (which may be terminated by \";\")" % `option` ++ return None, "option `%s' takes a non-empty list (which may be terminated by \";\")" % option + # default + return None, "unknown argument type for option `%s'." % option + diff --git a/debian/patches/44_guess_toc_ogg_flac.patch b/debian/patches/44_guess_toc_ogg_flac.patch new file mode 100644 index 0000000..5ce4fc5 --- /dev/null +++ b/debian/patches/44_guess_toc_ogg_flac.patch @@ -0,0 +1,89 @@ +Implement OGG and FLAC support for --guess-toc. SourceForge #1089407 + +Also fix a problem with the progress information ("ren") when a filename +contains Unicode chars. + +Depends on 33_flac_mutagen.patch + + +diff -urN jack-3.1.1+cvs20050801~/jack_functions.py jack-3.1.1+cvs20050801/jack_functions.py +--- jack-3.1.1+cvs20050801~/jack_functions.py 2006-04-04 23:09:17.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_functions.py 2006-04-04 23:25:59.000000000 +0200 +@@ -33,6 +33,8 @@ + import jack_helpers + + from jack_globals import * ++from jack_init import ogg ++from jack_init import flac + + progress_changed = None + +@@ -152,21 +154,17 @@ + erg = [] + progr = [] + for i in names: +- i_name = os.path.basename(i)[:-4] +- i_ext = string.upper(os.path.basename(i)[-4:]) ++ i_name, i_ext = os.path.splitext(os.path.basename(i)) ++ i_ext = i_ext.upper() ++ # erg: NUM, LEN, START, COPY, PRE, CH, RIP, RATE, NAME + if i_ext == ".MP3": + x = jack_mp3.mp3format(i) + if not x: + error("could not get MP3 info for file \"%x\"" % i) + blocks = int(x['length'] * CDDA_BLOCKS_PER_SECOND + 0.5) +- # NUM, LEN, START, COPY, PRE, CH, RIP, RATE, +- # NAME +- erg.append([num, blocks, start, 0, 0, 2, 1, x['bitrate'], +- i_name]) ++ erg.append([num, blocks, start, 0, 0, 2, 1, x['bitrate'], i_name]) + progr.append([num, "dae", " * [ simulated ]"]) + progr.append([num, "enc", `x['bitrate']`, "[ s i m u l a t e d %3ikbit]" % (x['bitrate'] + 0.5)]) +- if cf['_name'] % num != i_name: +- progr.append([num, "ren", cf['_name'] % num + "-->" + i_name]) + elif i_ext == ".WAV": + x = sndhdr.whathdr(i) + if not x: +@@ -190,14 +188,37 @@ + blocks = blocks / CDDA_BLOCKSIZE + erg.append([num, blocks, start, 0, 0, 2, 1, cf['_bitrate'], i_name]) + progr.append([num, "dae", " =p [ s i m u l a t e d ]"]) +- if cf['_name'] % num != i_name: +- progr.append([num, "ren", cf['_name'] % num + "-->" + i_name]) + elif i_ext == ".OGG": +- error("you still have to wait for ogg support for this operation, sorry.") ++ if ogg: ++ x = ogg.vorbis.VorbisFile(i) ++ blocks = int(x.time_total(0) * CDDA_BLOCKS_PER_SECOND + 0.5) ++ bitrate = temp_rate = int(x.raw_total(0) * 8 / x.time_total(0) / 1000 + 0.5) ++ erg.append([num, blocks, start, 0, 0, 2, 1, bitrate, i_name]) ++ progr.append([num, "dae", " * [ simulated ]"]) ++ progr.append([num, "enc", `bitrate`, "[ s i m u l a t e d %3ikbit]" % bitrate]) ++ else: ++ error("The OGG Python bindings are not installed.") + elif i_ext == ".FLAC": +- error("you still have to wait for FLAC support for this ooperation, sorry.") ++ if flac: ++ # TODO: move all of this duplicate code (see update_progress in ++ # jack_prepare.py) into a jack_flac or jack_audio or jack_formats. ++ # The same goes for the OGG stuff above ++ f = flac.FLAC(i) ++ size = os.path.getsize(i) ++ if f.info and size: ++ blocks = int(float(f.info.total_samples)/f.info.sample_rate * CDDA_BLOCKS_PER_SECOND + 0.5) ++ bitrate = int(size * 8 * f.info.sample_rate / f.info.total_samples / 1000) ++ else: ++ blocks = bitrate = 0 ++ erg.append([num, blocks, start, 0, 0, 2, 1, bitrate, i_name]) ++ progr.append([num, "dae", " * [ simulated ]"]) ++ progr.append([num, "enc", `bitrate`, "[ s i m u l a t e d %3ikbit]" % bitrate]) ++ else: ++ error("The FLAC Python bindings are not installed.") + else: + error("this is neither .mp3 nor .ogg nor .wav nor .flac: %s" % i) ++ if cf['_name'] % num != i_name: ++ progr.append([num, "ren", cf['_name'] % num + "-->" + unicode(i_name, cf['_charset'], "replace")]) + num = num + 1 + start = start + blocks + for i in progr: # this is deferred so that it is only written if no + diff --git a/debian/patches/45_fix_normalize_example.patch b/debian/patches/45_fix_normalize_example.patch new file mode 100644 index 0000000..acd426d --- /dev/null +++ b/debian/patches/45_fix_normalize_example.patch @@ -0,0 +1,16 @@ +The example about normalizing WAVs is broken since jack will put WAV files +in a sub-directory. Add the -D option so this is not done. SourceForge +#1311567 + +diff -urN orig/jack.man jack-3.1.1+cvs20050801/jack.man +--- orig/jack.man 2006-02-27 13:33:48.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack.man 2006-02-27 13:34:22.000000000 +0000 +@@ -496,7 +496,7 @@ + .PP + Editing / normalizing / stripping the WAV files before encoding: + .RS +-jack \-O \-\-remove-files ; gnoise *wav ; jack \-g *wav ; jack ++jack \-O \-D \-\-remove-files ; gnoise *wav ; jack \-g *wav ; jack + .RE + Just replace gnoise by the operation you'd like to perform. + .SH PLUG-INS diff --git a/debian/patches/46_case_insens_fn.dpatch b/debian/patches/46_case_insens_fn.dpatch new file mode 100644 index 0000000..93948d7 --- /dev/null +++ b/debian/patches/46_case_insens_fn.dpatch @@ -0,0 +1,33 @@ +Make the search for files in jack_prepare case insensitive (like +jack_function) does, and use the same error message in jack_function and +jack_prepare. + +diff -urN orig/jack_functions.py jack-3.1.1+cvs20050801/jack_functions.py +--- orig/jack_functions.py 2006-02-27 13:50:37.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_functions.py 2006-02-27 13:52:10.000000000 +0000 +@@ -232,7 +232,7 @@ + else: + error("The FLAC Python bindings are not installed.") + else: +- error("this is neither .mp3 nor .ogg nor .wav nor .flac: %s" % i) ++ error("don't know how to handle %s files." % i_ext) + if cf['_name'] % num != i_name: + progr.append([num, "ren", cf['_name'] % num + "-->" + unicode(i_name, cf['_charset'], "replace")]) + num = num + 1 +diff -urN jack-3.1.1+cvs20050801~/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- jack-3.1.1+cvs20050801~/jack_prepare.py 2006-04-04 23:36:28.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-04-04 23:37:10.000000000 +0200 +@@ -339,10 +339,10 @@ + jack_functions.progress(num, "dae", status[num]['dae']) + if not status[num]['enc']: + if os.path.exists(i[NAME] + ext): +- if ext == ".mp3": ++ if ext.upper() == ".MP3": + x = jack_mp3.mp3format(i[NAME] + ext) + temp_rate = x['bitrate'] +- elif ext == ".ogg": ++ elif ext.upper() == ".OGG" and ogg: + x = ogg.vorbis.VorbisFile(i[NAME] + ext) + temp_rate = int(x.raw_total(0) * 8 / x.time_total(0) / 1000 + 0.5) + else: + diff --git a/debian/patches/47_locale_check.patch b/debian/patches/47_locale_check.patch new file mode 100644 index 0000000..90711fd --- /dev/null +++ b/debian/patches/47_locale_check.patch @@ -0,0 +1,26 @@ +jack produces a traceback when the locale is not known or hasn't been +generated. Therefore check whether it is known. + +--- a/jack_config.py~ 2006-04-04 19:43:03.000000000 +0200 ++++ b/jack_config.py 2006-04-04 19:45:11.000000000 +0200 +@@ -22,12 +22,20 @@ + import string + import jack_misc + import locale ++import sys + + import jack_version + from jack_globals import * + + # this must be filled manually (done in main) + ++# we need a working locale ++try: ++ locale.getpreferredencoding() ++except locale.Error, e: ++ print "Locale problem:", e ++ sys.exit(1) ++ + # config space with attributes + + cf = jack_misc.dict2({ diff --git a/debian/patches/48_search_base_dir.patch b/debian/patches/48_search_base_dir.patch new file mode 100644 index 0000000..19e5212 --- /dev/null +++ b/debian/patches/48_search_base_dir.patch @@ -0,0 +1,21 @@ +running "jack -Q" twice from e.g. $HOME will result in an error in the +second case that the directory already exists. This is because jack +doesn't find the existing directory, makes a new generic jack-* dir and +then tries to rename it - but that fails since there's an existing dir +already. jack needs to search base_dir for an existing dir. + +--- jack_prepare.py~ 2006-04-04 22:45:10.000000000 +0200 ++++ jack_prepare.py 2006-04-04 22:45:58.000000000 +0200 +@@ -72,6 +72,12 @@ + + if cf['_scan_dirs']: + dirs = [os.getcwd()] ++ # Also scan base_dir since it's not guaranteed that users ++ # run jack in base_dir ++ if cf['_base_dir']: ++ cf['_base_dir'] = expand(cf['_base_dir']) ++ if os.path.exists(cf['_base_dir']) and cf['_base_dir'] not in dirs: ++ dirs.append(cf['_base_dir']) + else: + dirs = cf['_searchdirs'] + diff --git a/debian/patches/49_nicer_ripper_encoder.patch b/debian/patches/49_nicer_ripper_encoder.patch new file mode 100644 index 0000000..c463dd8 --- /dev/null +++ b/debian/patches/49_nicer_ripper_encoder.patch @@ -0,0 +1,32 @@ +When you specify an unknown ripper or encoder, jack prints a python +array... + +247:tbm@reyes: ~/tmp/jack] jack -E dasdas +This is jack 3.1.1 (C)2004 Arne Zellentin + *error* Invalid encoder, choose one of ['bladeenc', 'xing', 'mppenc', 'lame', + 'oggenc', 'l3enc', 'gogo', 'mp3enc', 'flac', 'lame-user'] +zsh: exit 1 jack -E dasdas + +Print a more readable message instead. + + +diff -urN jack-3.1.1+cvs20050801~/jack_checkopts.py jack-3.1.1+cvs20050801/jack_checkopts.py +--- jack-3.1.1+cvs20050801~/jack_checkopts.py 2006-04-04 23:40:24.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_checkopts.py 2006-04-04 23:41:39.000000000 +0200 +@@ -173,14 +173,14 @@ + for i in jack_helpers.helpers.keys(): + if jack_helpers.helpers[i]['type'] == "encoder": + dummy.append(i) +- error("Invalid encoder, choose one of " + `dummy`) ++ error("Invalid encoder, choose one of " + ", ".join(dummy)) + + if not jack_helpers.helpers.has_key(cf['_ripper']) or jack_helpers.helpers[cf['_ripper']]['type'] != "ripper": + dummy = [] + for i in jack_helpers.helpers.keys(): + if jack_helpers.helpers[i]['type'] == "ripper": + dummy.append(i) +- error("Invalid ripper, choose one of " + `dummy`) ++ error("Invalid ripper, choose one of " + ", ".join(dummy)) + + if (cf['vbr_quality']['val'] > 10) or (cf['vbr_quality']['val'] < -1): + error("invalid vbr quality, must be between -1 and 10") diff --git a/debian/patches/50_check_ripper_encoder.patch b/debian/patches/50_check_ripper_encoder.patch new file mode 100644 index 0000000..5e8b95b --- /dev/null +++ b/debian/patches/50_check_ripper_encoder.patch @@ -0,0 +1,34 @@ +Check whether a command passed via --ripper/--encoder actually exists. + + +Depends on 21_fallback_ripper.patch + + +diff -urN jack-3.1.1+cvs20050801~/jack_checkopts.py jack-3.1.1+cvs20050801/jack_checkopts.py +--- jack-3.1.1+cvs20050801~/jack_checkopts.py 2006-05-20 14:02:09.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_checkopts.py 2006-05-20 14:08:54.000000000 +0200 +@@ -228,6 +228,7 @@ + def check_rc(cf, global_cf, user_cf, argv_cf): + + all_keys = global_cf.keys() + user_cf.keys() + argv_cf.keys() ++ userdef_keys = user_cf.keys() + argv_cf.keys() + if 'base_dir' not in all_keys: + warning("You have no standard location set, putting files into the current directory. Please consider setting base_dir in ~/.jack3rc.") + +@@ -244,6 +245,15 @@ + else: + error("No valid ripper found on your system.") + ++ # Check whether ripper and encoder exist in $PATH. Skip the check if ++ # it's a plugin since we cannot assume the name of the plugin ++ # corresponds to the executable. ++ for t in ("ripper", "encoder"): ++ helper = cf[t]["val"] ++ if t in userdef_keys and not helper.startswith("plugin_"): ++ if not jack_utils.in_path(helper): ++ error("Helper %s '%s' not found on your system." % (t, helper)) ++ + # If the default CD device doesn't exist, see whether we can find another one + if ('cd_device' not in all_keys and cf["rip_from_device"]["val"] and + not os.path.exists(cf["cd_device"]["val"])): + diff --git a/debian/patches/51_error_not_block_device.patch b/debian/patches/51_error_not_block_device.patch new file mode 100644 index 0000000..8b6282e --- /dev/null +++ b/debian/patches/51_error_not_block_device.patch @@ -0,0 +1,36 @@ +Fix an error when the --device passed is a directory. Debian #360337 + +$ jack --device=/dev +This is jack 3.1.1 (C)2004 Arne Zellentin +Traceback (most recent call last): +File "/usr/lib/python2.3/site-packages/jack_functions.py", line 148, in gettoc + exec(jack_helpers.helpers[toc_prog]['toc_fkt']) + File "", line 11, in ? +IndexError: tuple index out of range + *error* CDDB.py could not read the disk's TOC. If you already ripped the CD, + you'll have to cd into the directory which is either named after the + CD's title or still called jack-xxxxxxxx (xxxxxxxx is a hex number). + + +--- a/jack_functions.py~ 2006-04-05 16:04:06.000000000 +0200 ++++ b/jack_functions.py 2006-04-05 16:39:56.000000000 +0200 +@@ -21,6 +21,7 @@ + import traceback + import sndhdr + import types ++import stat + import string + import sys + import os +--- a/jack_helpers.py~ 2006-04-05 16:37:52.000000000 +0200 ++++ b/jack_helpers.py 2006-04-05 16:39:25.000000000 +0200 +@@ -509,6 +509,8 @@ + error("Device %s does not exist!" % cf['_cd_device']) + if not os.access(cf['_cd_device'], os.R_OK): + error("You don't have permission to access device %s!" % cf['_cd_device']) ++if not stat.S_ISBLK(os.stat(cf['_cd_device'])[stat.ST_MODE]): ++ error("Device %s is not a block device!" % cf['_cd_device']) + try: + device = cdrom.open(cf['_cd_device']) + (first, last) = cdrom.toc_header(device) + diff --git a/debian/patches/52_cdparanoia_toc.patch b/debian/patches/52_cdparanoia_toc.patch new file mode 100644 index 0000000..d3decb4 --- /dev/null +++ b/debian/patches/52_cdparanoia_toc.patch @@ -0,0 +1,69 @@ +Make the cdparanoia TOC parsing more robust (and clean up the code while +we're at it). Debian #361164. + + +This is jack 3.1.1 (C)2004 Arne Zellentin +Traceback (most recent call last): + File "/usr/bin/jack", line 134, in ? + jack_prepare.filter_tracks(toc_just_read, status) + File "/usr/lib/python2.3/site-packages/jack_prepare.py", line 216, in +filter_tracks + ripper_tracks = jack_functions.gettoc(cf['_ripper']) + File "/usr/lib/python2.3/site-packages/jack_functions.py", line 125, in +gettoc exec(jack_helpers.helpers[toc_prog]['toc_fkt']) + File "", line 10, in ? +ValueError: invalid literal for int(): 401: Invalid track number + + + +diff -urN jack-3.1.1+cvs20050801~/jack_helpers.py jack-3.1.1+cvs20050801/jack_helpers.py +--- jack-3.1.1+cvs20050801~/jack_helpers.py 2006-04-07 03:58:48.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_helpers.py 2006-04-07 04:25:28.000000000 +0200 +@@ -297,19 +297,38 @@ + """, + #'toc': 1, # we can't generate correct freedb IDs with cdparanoia. + 'toc_cmd': "cdparanoia -d %d -Q 2>&1", ++# The output from cdparanoia which we parse looks like this: ++ ++# cdparanoia III release 9.8 (March 23, 2001) ++# (C) 2001 Monty and Xiphophorus ++# ... ++# track length begin copy pre ch ++# =========================================================== ++# 1. 13584 [03:01.09] 0 [00:00.00] no no 2 ++# 2. 13769 [03:03.44] 13584 [03:01.09] no no 2 ++# ... ++# TOTAL 121128 [26:55.03] (audio only) ++ ++# That is, we look for a line only consisting of === signs as the start, ++# for a line starting with "TOTAL" as the end, and take everything ++# inbetween (to be precise: the first number on each line) + 'toc_fkt': r""" +-while l: ++for l in p.readlines(): + l = string.rstrip(l) +- if l and l[0:5] == "TOTAL": ++ if not l: ++ continue ++ if l.startswith("TOTAL"): + start = 0 +- if l and l == '=' * (len(l)): ++ elif l == ('=' * len(l)): + start = 1 +- elif l and start: +- l = string.split(l, '.', 1) +- num = int(l[0]) +- l = string.split(l[1]) +- erg.append([num, int(l[0]), int(l[2]), l[4] == 'OK', l[5] == 'yes', int(l[6]), 1, cf['_bitrate'], cf['_name'] % num]) +- l = p.readline() ++ elif start: ++ l = l.split('.', 1) ++ if l[0].lstrip().isdigit(): ++ num = int(l[0]) ++ l = l[1].split() ++ erg.append([num, int(l[0]), int(l[2]), l[4] == 'OK', l[5] == 'yes', int(l[6]), 1, cf['_bitrate'], cf['_name'] % num]) ++ else: ++ warning("Cannot parse cdrecord TOC line: " + ". ".join(l)) + """, + }, + diff --git a/debian/patches/53_no_tag_when_freedb_fails.patch b/debian/patches/53_no_tag_when_freedb_fails.patch new file mode 100644 index 0000000..00469ef --- /dev/null +++ b/debian/patches/53_no_tag_when_freedb_fails.patch @@ -0,0 +1,38 @@ +Don't try to tag files when no FreeDB data is available - this can +happen when cont_failed_query is set. Debian #361290 + + +dlakelan@mooch64:~$ jack +This is jack 3.1.1 (C)2004 Arne Zellentin + *info* querying... + *warning* 202 No match for disc ID 520ded06. How about trying another + --server? + +freedb search failed, continue? (y/N) y +Options: vbr read-ahead=99 id=520ded06 len=59:25 | press Q to quit +The final status was: +track_01: 12.4x [ DAE done with cdda2wav ] [coding @16.3x done, 135kbit +track_02: 17.7x [ DAE done with cdda2wav ] [coding @14.8x done, 129kbit +track_03: 19.7x [ DAE done with cdda2wav ] [coding @13.0x done, 130kbit +track_04: 23.5x [ DAE done with cdda2wav ] [coding @16.8x done, 136kbit +track_05: 24.0x [ DAE done with cdda2wav ] [coding @17.0x done, 132kbit +track_06: 23.5x [ DAE done with cdda2wav ] [coding @16.7x done, 134kbit +Tagging.Traceback (most recent call last): + File "/usr/bin/jack", line 274, in ? + jack_tag.tag(freedb_rename) + File "/usr/lib/python2.3/site-packages/jack_tag.py", line 182, in tag + oggi.add_tag('ALBUM', a_title.encode("utf-8")) +AttributeError: 'NoneType' object has no attribute 'encode' + + +diff -urN jack-3.1.1+cvs20050801~/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- jack-3.1.1+cvs20050801~/jack_prepare.py 2006-04-07 20:02:26.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-04-07 20:02:44.000000000 +0200 +@@ -486,6 +486,7 @@ + if string.upper(x[0]) != "Y": + sys.exit(0) + cf['_query_on_start'] = 0 ++ cf['_set_id3tag'] = 0 + else: + jack_display.exit() + diff --git a/debian/patches/54_check_cont_failed_query.patch b/debian/patches/54_check_cont_failed_query.patch new file mode 100644 index 0000000..f2432d9 --- /dev/null +++ b/debian/patches/54_check_cont_failed_query.patch @@ -0,0 +1,19 @@ +I don't see any good reason why cont_failed_query would turn on +query_on_start and set_id3tag. After all, all this option is supposed to +do is to cause jack not to fail when FreeDB is unssuccfully queried - +however, it should be up to users to initiate the query. + + +diff -urN jack-3.1.1+cvs20050801~/jack_checkopts.py jack-3.1.1+cvs20050801/jack_checkopts.py +--- jack-3.1.1+cvs20050801~/jack_checkopts.py 2006-04-07 20:02:26.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_checkopts.py 2006-04-07 20:03:32.000000000 +0200 +@@ -50,9 +50,6 @@ + if cf2.has_key('query_on_start') and cf2['query_on_start']['val']: + cf.rupdate({'set_id3tag': {'val': 1}}, "check") + +- if cf2.has_key('cont_failed_query') and cf2['cont_failed_query']['val']: +- cf.rupdate({'query_on_start': {'val': 1}, 'set_id3tag':{'val': 1}}, "check") +- + if cf2.has_key('create_dirs') and cf2['create_dirs']['val']: + cf.rupdate({'rename_dir': {'val': 1}}, "check") + diff --git a/debian/patches/55_fix_sloppy.patch b/debian/patches/55_fix_sloppy.patch new file mode 100644 index 0000000..c1bafe0 --- /dev/null +++ b/debian/patches/55_fix_sloppy.patch @@ -0,0 +1,25 @@ +Fix "replace" call in undocumented command line option. Debian #362676 + +1126:tbm@reyes: ~/tmp/jack] jack "--I-swear-I'll-never-give-these-files-to-anyone,-including-hot-babes-TM" +This is jack 3.1.1 (C)2004 Arne Zellentin +Traceback (most recent call last): + File "/usr/bin/jack", line 88, in ? + jack_checkopts.consistency_check(cf) + File "/usr/lib/python2.3/site-packages/jack_checkopts.py", line 211, in consistency_check + jack_helpers.helpers['cdparanoia']['cmd'] = replace(jack_helpers.helpers['cdparanoia']['cmd'], "--abort-on-skip", "") +NameError: global name 'replace' is not defined + + +--- a/jack_checkopts.py~ 2006-04-15 19:20:23.000000000 +0200 ++++ b/jack_checkopts.py 2006-04-15 19:21:06.000000000 +0200 +@@ -208,8 +208,8 @@ + error("can't do fixed bitrate because " + cf['encoder']['val'] + " doesn't support it. Use -v") + + if cf['_ripper'] == "cdparanoia" and cf['_sloppy']: +- jack_helpers.helpers['cdparanoia']['cmd'] = replace(jack_helpers.helpers['cdparanoia']['cmd'], "--abort-on-skip", "") +- jack_helpers.helpers['cdparanoia']['otf-cmd'] = replace(jack_helpers.helpers['cdparanoia']['otf-cmd'], "--abort-on-skip", "") ++ jack_helpers.helpers['cdparanoia']['cmd'] = jack_helpers.helpers['cdparanoia']['cmd'].replace("--abort-on-skip", "") ++ jack_helpers.helpers['cdparanoia']['otf-cmd'] = jack_helpers.helpers['cdparanoia']['otf-cmd'].replace("--abort-on-skip", "") + + if cf['_query_on_start'] and cf['_query_when_ready']: + error("it doesn't make sense to query now _and_ when finished.") diff --git a/debian/patches/56_ctrl_c_termset.patch b/debian/patches/56_ctrl_c_termset.patch new file mode 100644 index 0000000..fd477fd --- /dev/null +++ b/debian/patches/56_ctrl_c_termset.patch @@ -0,0 +1,71 @@ +When xtermset_enable is set, pressing ctrl-c influences the window size: +pressing ctrl-c one time (or any odd number) leads to the original window +size whereas even number lead to the new window size. This is because +jack_term.enable() and .disable() are called and those call xtermset_enable +and _disable(). + +Introduce a variable which controls whether xtermset_* are called and don't +call them when ctrl-c is pressed - only call them when we're leaving jack. + +Debian #196429 + +Depends on 40_enable_term.patch, and depends on the possible bogosity of +40_enable_term.patch (see the note there). + +--- a/jack_term.py~ 2006-05-16 17:54:03.000000000 +0200 ++++ b/jack_term.py 2006-05-16 17:54:32.000000000 +0200 +@@ -173,7 +173,7 @@ + if (x, y) != (None, None): + size_x, size_y = x, y + +-def enable(): ++def enable(all = 1): + global enabled + + if not initialized: +@@ -182,11 +182,12 @@ + if enabled: + return + +- xtermset_enable() ++ if all: ++ xtermset_enable() + tmod.enable() + enabled = 1 + +-def disable(): ++def disable(all = 1): + global enabled + import os + +@@ -194,5 +195,6 @@ + return + + tmod.disable() +- xtermset_disable() ++ if all: ++ xtermset_disable() + enabled = 0 +--- a/jack_display.py~ 2006-05-16 17:55:11.000000000 +0200 ++++ b/jack_display.py 2006-05-16 17:55:05.000000000 +0200 +@@ -78,7 +78,10 @@ + # be display problems. + sigint_handler = signal.getsignal(signal.SIGINT) + signal.signal(signal.SIGINT, signal.SIG_IGN) +- jack_term.disable() ++ if sig: ++ jack_term.disable(all = 0) ++ else: ++ jack_term.disable(all = 1) + + if sig: + exit_code = 2 +@@ -101,7 +104,7 @@ + raw_input("press ENTER to exit\n") + + if sig: +- jack_term.enable() ++ jack_term.enable(all = 0) + signal.signal(signal.SIGINT, sigint_handler) + + sys.exit(exit_code) diff --git a/debian/patches/57_feedb_asciiletters.patch b/debian/patches/57_feedb_asciiletters.patch new file mode 100644 index 0000000..855b5d3 --- /dev/null +++ b/debian/patches/57_feedb_asciiletters.patch @@ -0,0 +1,18 @@ +Now that we call call locale.setlocale() (see patch 78_setlocale.patch), +string.letters will contain letters in the user's locale, which breaks +jack. Just use ASCII instead for now. In the long run, all of this +code probably needs to be rewritten. + +Debian bug #452097 + +--- a/jack_freedb.py~ 2007-11-20 17:19:21.000000000 +0100 ++++ b/jack_freedb.py 2007-11-20 17:22:27.000000000 +0100 +@@ -598,7 +598,7 @@ + elif cf['_various']: + found = [[], [], [], [], [], []] + # lenght=3 2 1 , 3 2 1 (secondary) +- ignore = string.letters + string.digits ++ ignore = string.ascii_letters + string.digits + titles = [] + braces = [['"', '"'], ["'", "'"], ["(", ")"], ["[", "]"], ["{", "}"]] + diff --git a/debian/patches/58_progress_changed_error.patch b/debian/patches/58_progress_changed_error.patch new file mode 100644 index 0000000..1116c63 --- /dev/null +++ b/debian/patches/58_progress_changed_error.patch @@ -0,0 +1,14 @@ +Don't fail when progress() has never been called before. Debian #295207. + +diff -urN jack-3.1.1~/jack_functions.py jack-3.1.1/jack_functions.py +--- jack-3.1.1~/jack_functions.py 2005-06-20 17:07:52.237610968 +0100 ++++ jack-3.1.1/jack_functions.py 2005-06-20 17:08:07.111349816 +0100 +@@ -33,6 +33,8 @@ + + from jack_globals import * + ++progress_changed = 0 ++ + def df(fs = ".", blocksize = 1024): + "returns free space on a filesystem (in bytes)" + try: diff --git a/debian/patches/59_assume_ok_query.patch b/debian/patches/59_assume_ok_query.patch new file mode 100644 index 0000000..a0c4f77 --- /dev/null +++ b/debian/patches/59_assume_ok_query.patch @@ -0,0 +1,33 @@ +Under some circumstances we want to tag tracks even when the FreeDB query +failed: it's possible that the user manually added the jack.freedb file. +Therefore, check whether parsing the FreeDB file works. + +Debian bug #441270 + +Depends on 53_no_tag_when_freedb_fails.patch + +--- a/jack_prepare.py 2007-10-27 22:50:40.000000000 +0200 ++++ b/jack_prepare.py 2007-10-27 22:52:58.000000000 +0200 +@@ -507,7 +507,6 @@ + if not x or x[0].upper() != "Y": + sys.exit(0) + cf['_query_on_start'] = 0 +- cf['_set_id3tag'] = 0 + else: + jack_display.exit() + +@@ -546,6 +545,14 @@ + error("query on start failed to give a good freedb file, aborting.") + else: + err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = cf['_query_on_start'], warn = cf['_query_on_start']) ++ # If the FreeDB query failed and the FreeDB data cannot be parsed, ++ # don't tag the files. However, if the FreeDB data can be parsed ++ # even though the query failed assume that the query worked and ++ # do the tagging (the user might have edited the file by hand). ++ if cf['_cont_failed_query'] and err: ++ cf['_set_id3tag'] = 0 ++ else: ++ cf['_query_on_start'] = 1 + return freedb_rename + + def undo_rename(status, todo): diff --git a/debian/patches/60_ask_edit_freedb_when_query_fails.patch b/debian/patches/60_ask_edit_freedb_when_query_fails.patch new file mode 100644 index 0000000..8dc9c25 --- /dev/null +++ b/debian/patches/60_ask_edit_freedb_when_query_fails.patch @@ -0,0 +1,19 @@ +Ask users whether they want to edit the FreeDB data manually when the +FreeDB query fails. + +--- a/jack_prepare.py 2007-10-27 22:53:13.000000000 +0200 ++++ b/jack_prepare.py 2007-10-27 22:53:35.000000000 +0200 +@@ -506,7 +506,12 @@ + x = raw_input("\nfreedb search failed, continue? (y/N) ") + "x" + if not x or x[0].upper() != "Y": + sys.exit(0) +- cf['_query_on_start'] = 0 ++ if not cf['_edit_freedb']: ++ x = raw_input("\nDo you want to edit the freedb data? (y/N) ") + "x" ++ if x and x[0].upper() == "Y": ++ cf['_edit_freedb'] = 1 ++ else: ++ cf['_query_on_start'] = 0 + else: + jack_display.exit() + diff --git a/debian/patches/61_pymem_del.patch b/debian/patches/61_pymem_del.patch new file mode 100644 index 0000000..7fbe913 --- /dev/null +++ b/debian/patches/61_pymem_del.patch @@ -0,0 +1,27 @@ +The C API requires using the same memory API for a given memory block, +which will show up as a segfault, at least in python2.5. See +http://bugs.debian.org/468972 + +Fix by Barry deFreese and Thomas Viehmann + +diff -Nur jack-3.1.1+cvs20050801/cursesmodule/jack_cursesmodule.c jack-3.1.1+cvs20050801.new/cursesmodule/jack_cursesmodule.c +--- jack-3.1.1+cvs20050801/cursesmodule/jack_cursesmodule.c 2006-02-05 09:09:07.000000000 -0500 ++++ jack-3.1.1+cvs20050801.new/cursesmodule/jack_cursesmodule.c 2008-03-05 22:46:41.000000000 -0500 +@@ -259,7 +259,7 @@ + { + PyCursesWindowObject *wo; + +- wo = PyObject_NEW(PyCursesWindowObject, &PyCursesWindow_Type); ++ wo = PyObject_New(PyCursesWindowObject, &PyCursesWindow_Type); + if (wo == NULL) return NULL; + wo->win = win; + return (PyObject *)wo; +@@ -270,7 +270,7 @@ + PyCursesWindowObject *wo; + { + if (wo->win != stdscr) delwin(wo->win); +- PyMem_DEL(wo); ++ PyObject_Del(wo); + } + + /* Addch, Addstr, Addnstr */ diff --git a/debian/patches/62_dont_repeat_inexact.patch b/debian/patches/62_dont_repeat_inexact.patch new file mode 100644 index 0000000..79f879c --- /dev/null +++ b/debian/patches/62_dont_repeat_inexact.patch @@ -0,0 +1,39 @@ +Don't print a warning that the calculated ID and that from FreeDB don't +match when we had an inexact match. Debian #304744. + +diff -urN a/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- a/jack_freedb.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-05 16:51:59.000000000 +0000 +@@ -37,6 +37,7 @@ + names_available = None # freedb info is available + dir_created = None # dirs are only renamed if we have created them + NUM, LEN, START, COPY, PRE, CH, RIP, RATE, NAME = range(9) ++freedb_inexact_match = -1 + + freedb_servers = { + 'freedb': { +@@ -234,6 +235,9 @@ + buf = f.readline() + if buf and buf[0:1] == "2": + if buf[0:3] in ("210", "211"): # Found inexact or multiple exact matches, list follows ++ if buf[0:3] == "211": ++ global freedb_inexact_match ++ freedb_inexact_match = 1 + print "Found the following matches. Choose one:" + num = 1 + matches = [] +@@ -385,10 +389,10 @@ + for i in read_ids: + if i == cd_id: + id_matched = 1 +- if not id_matched and warn: +- print "Warning: calculated id (" + cd_id + ") and id from freedb file" +- print " :", read_ids +- print " : do not match, hopefully due to inexact match." ++ if not id_matched and warn and freedb_inexact_match < 1: ++ print "Warning: CD signature ID and ID from FreeDB file do not match." ++ print " CD signature: " + cd_id ++ print " FreeDB ID: " + ",".join(read_ids) + for i in read_ids: + for j in i: + if j not in "0123456789abcdef": diff --git a/debian/patches/63_date_unicode.patch b/debian/patches/63_date_unicode.patch new file mode 100644 index 0000000..7082577 --- /dev/null +++ b/debian/patches/63_date_unicode.patch @@ -0,0 +1,14 @@ +Fixes a bug when strftime returns UTF-8 because of the locale name. +http://bugs.debian.org/471843 + +--- a/jack~ 2008-03-21 16:03:07.000000000 +0100 ++++ b/jack 2008-03-21 16:07:00.000000000 +0100 +@@ -277,7 +277,7 @@ + jack_tag.tag(freedb_rename) + + if jack_functions.progress_changed: +- jack_functions.progress("all", "done", time.strftime("%b %2d %H:%M:%S", time.localtime(time.time()))) ++ jack_functions.progress("all", "done", unicode(time.strftime("%b %2d %H:%M:%S", time.localtime(time.time())), locale.getpreferredencoding(), "replace")) + + if cf['_remove_files']: + print "cleaning up in", os.getcwd() diff --git a/debian/patches/64_catch_id3_error.patch b/debian/patches/64_catch_id3_error.patch new file mode 100644 index 0000000..f4d1291 --- /dev/null +++ b/debian/patches/64_catch_id3_error.patch @@ -0,0 +1,29 @@ +eyeD3 only accepts years that have 4 digits; catch the exception in case +the year contains something else. Debian bug http://bugs.debian.org/478784 + +--- a/jack_tag.py 2008-05-04 16:28:14.000000000 +0200 ++++ b/jack_tag.py 2008-05-04 16:38:50.000000000 +0200 +@@ -112,7 +112,10 @@ + if cf['_id3_genre'] != -1: + tag.setGenre("(%d)" % (cf['_id3_genre'])) + if cf['_id3_year'] != -1: +- tag.setDate(cf['_id3_year']) ++ try: ++ tag.setDate(cf['_id3_year']) ++ except eyeD3.tag.TagException, e: ++ print "Error tagging file: %s" % e + tag.setPlayCount(int(i[LEN] * 1000.0 / 75 + 0.5)) + tag.update() + mp3file.close() +@@ -139,7 +142,10 @@ + elif old_genre == None: + tag.setGenre("(255)") # unknown + if cf['_id3_year'] != -1: +- tag.setDate(cf['_id3_year']) ++ try: ++ tag.setDate(cf['_id3_year']) ++ except eyeD3.tag.TagException, e: ++ print "Error tagging file: %s" % e + try: + tag.update() + except UnicodeEncodeError: diff --git a/debian/patches/66_rename_unicode.patch b/debian/patches/66_rename_unicode.patch new file mode 100644 index 0000000..ce86002 --- /dev/null +++ b/debian/patches/66_rename_unicode.patch @@ -0,0 +1,19 @@ +When renaming directories, make sure both the old and the new dir are +Unicode strings; also make this more robust; see Debian #338816 and +#339879. + + +Depends on 60_utf8_support.patch + +diff -urN jack-3.1.1~/jack_freedb.py jack-3.1.1/jack_freedb.py +--- jack-3.1.1~/jack_freedb.py 2005-12-01 01:03:55.000000000 +0000 ++++ jack-3.1.1/jack_freedb.py 2005-12-01 01:06:20.000000000 +0000 +@@ -84,7 +84,7 @@ + if jack_utils.check_path(dirs_created, old_dirs) and not jack_utils.check_path(dirs_created, new_dirs): + jack_utils.rename_path(dirs_created, new_dirs) + print "Info: cwd now", os.getcwd() +- jack_functions.progress("all", 'ren', dir_created + "-->" + unicode(new_dir, cf['_charset'])) ++ jack_functions.progress("all", 'ren', unicode(dir_created + "-->" + new_dir, cf['_charset'], "replace")) + + if not err: + names_available = 1 diff --git a/debian/patches/67_progress_utf8_vs_filenames.patch b/debian/patches/67_progress_utf8_vs_filenames.patch new file mode 100644 index 0000000..a367590 --- /dev/null +++ b/debian/patches/67_progress_utf8_vs_filenames.patch @@ -0,0 +1,16 @@ +Even though jack.progress is always UTF-8 encoded, use the local encoding +for filenames mentioned in jack.progress, otherwise jack thinks it has to +rip/encode files again which already exist. Debian #338816. + +diff -urN jack-3.1.1~/jack_prepare.py jack-3.1.1/jack_prepare.py +--- jack-3.1.1~/jack_prepare.py 2005-12-01 01:03:55.000000000 +0000 ++++ jack-3.1.1/jack_prepare.py 2005-12-01 01:48:56.000000000 +0000 +@@ -403,7 +403,7 @@ + if status[i]['names'][-1] == names[0]: + status[i]['names'].append(names[1]) + if type(i) == types.IntType: +- tracknum[i][NAME] = status[i]['names'][-1] ++ tracknum[i][NAME] = unicode(status[i]['names'][-1], "utf-8", "replace").encode(cf['_charset'], "replace") + del status[i]['ren'] + + # status info for the whole CD is treated separately diff --git a/debian/patches/68_support_high_char_renames.patch b/debian/patches/68_support_high_char_renames.patch new file mode 100644 index 0000000..15d16bb --- /dev/null +++ b/debian/patches/68_support_high_char_renames.patch @@ -0,0 +1,21 @@ +Allow characters >128 in unusable_chars and replacement_chars. +Debian #339879. + +--- a/jack_tag.py~ 2005-11-19 14:47:23.000000000 +0000 ++++ b/jack_tag.py 2005-11-19 15:06:54.000000000 +0000 +@@ -202,7 +202,13 @@ + newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist) + exec("newname = newname" + cf['_char_filter']) + for char_i in range(len(cf['_unusable_chars'])): +- newname = string.replace(newname, cf['_unusable_chars'][char_i], cf['_replacement_chars'][char_i]) ++ try: ++ a = unicode(cf['_unusable_chars'][char_i], locale.getpreferredencoding(), "replace") ++ b = unicode(cf['_replacement_chars'][char_i], locale.getpreferredencoding(), "replace") ++ except UnicodeDecodeError: ++ warning("Cannot substitute unusable character %d." % (char_i+1)) ++ else: ++ newname = string.replace(newname, a, b) + try: + i[NAME] = unicode(i[NAME], "utf-8") + except UnicodeDecodeError: + diff --git a/debian/patches/69_document_freedb_dir.patch b/debian/patches/69_document_freedb_dir.patch new file mode 100644 index 0000000..32f51da --- /dev/null +++ b/debian/patches/69_document_freedb_dir.patch @@ -0,0 +1,19 @@ +Document freedb_dir since this doesn't show up with --longhelp. +See http://bugs.debian.org/458384 + +--- a/jack.man 2008-03-09 10:53:21.000000000 +0100 ++++ b/jack.man 2008-03-09 10:56:50.000000000 +0100 +@@ -423,6 +423,13 @@ + .TP + .B \-\-write-m3u + create a playlist in .m3u format. This has bugs, don't rely on it. ++.SH CONFIG FILE OPTIONS ++In addition the the command line options, there are some options that ++can only be set directly in the config file. ++.TP ++.B freedb_dir ++all FreeDB queries will be done in this (local) directory; failed local ++queries will be done via the network. Example: /var/spool/freedb + .SH EXAMPLES + Insert a CD, fire up jack: + .RS diff --git a/debian/patches/70_fix_upd_progress.patch b/debian/patches/70_fix_upd_progress.patch new file mode 100644 index 0000000..0f35ebe --- /dev/null +++ b/debian/patches/70_fix_upd_progress.patch @@ -0,0 +1,76 @@ +Fix the --upd-progress function which dies with the following +traceback. Debian #351453 + +> 11510:tbm@derision: ~/tmp/jack/jack-1210f412] jack --upd-progress +> This is jack 3.1.1 (C)2004 Arne Zellentin +> Traceback (most recent call last): +> File "/usr/bin/jack", line 136, in ? +> jack_prepare.update_progress(todo) +> File "/usr/lib/python2.3/site-packages/jack_prepare.py", line 341, in update_progress +> if not status[num]['dae']: +> NameError: global name 'status' is not defined + +(and when this is fixed, dies because the ogg modules is not loaded) + + +Depends on 33_flac_mutagen.patch + + +diff -urN jack-3.1.1+cvs20050801~/jack jack-3.1.1+cvs20050801/jack +--- jack-3.1.1+cvs20050801~/jack 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack 2006-02-13 23:45:35.000000000 +0000 +@@ -132,7 +132,7 @@ + + ### (6) update progress file at user's request (operation mode) + if cf['_upd_progress']: +- jack_prepare.update_progress(todo) ++ jack_prepare.update_progress(status, todo) + sys.exit(0) + + ### (7) now read in the progress file +diff -urN jack-3.1.1+cvs20050801~/jack_init.py jack-3.1.1+cvs20050801/jack_init.py +--- jack-3.1.1+cvs20050801~/jack_init.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_init.py 2006-02-13 23:46:31.000000000 +0000 +@@ -56,10 +56,8 @@ + try: + import ogg.vorbis + except: +- class dummy_ogg: +- def __init__(self): +- warning("ogg module not installed, ogg support disabled") +- ogg = dummy_ogg() ++ warning("ogg module not installed, ogg support disabled") ++ ogg = None + + try: + import mutagen.flac as flac +diff -urN jack-3.1.1+cvs20050801~/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- jack-3.1.1+cvs20050801~/jack_prepare.py 2006-02-13 21:49:58.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-02-13 23:45:55.000000000 +0000 +@@ -37,6 +37,7 @@ + import jack_tag + + from jack_globals import * ++from jack_init import ogg + + tracknum = None + datatracks = [] +@@ -326,7 +327,7 @@ + status['all']['id3_year'] = ["-1",] + return status + +-def update_progress(todo): ++def update_progress(status, todo): + ext = jack_targets.targets[jack_helpers.helpers[cf['_encoder']]['target']]['file_extension'] + "update progress file at user's request (operation mode)" + +@@ -342,7 +343,7 @@ + if ext == ".mp3": + x = jack_mp3.mp3format(i[NAME] + ext) + temp_rate = x['bitrate'] +- elif ext == ".ogg": ++ elif ext == ".ogg" and ogg: + x = ogg.vorbis.VorbisFile(i[NAME] + ext) + temp_rate = int(x.raw_total(0) * 8 / x.time_total(0) / 1000 + 0.5) + else: + diff --git a/debian/patches/71_freedb_filename_cleanup.patch b/debian/patches/71_freedb_filename_cleanup.patch new file mode 100644 index 0000000..0efe986 --- /dev/null +++ b/debian/patches/71_freedb_filename_cleanup.patch @@ -0,0 +1,90 @@ +Code clean-up (needed for future functionality): move the generation of +filenames based on FreeDB information into jack_freedb.py. + +Depends on 62_dont_repeat_inexact.patch, 66_rename_unicode.patch and +68_support_high_char_renames.patch and 27_allow_year_genre_sa.patch. + +diff -urN jack-3.1.1~/jack_freedb.py jack-3.1.1/jack_freedb.py +--- jack-3.1.1~/jack_freedb.py 2006-02-05 03:58:48.000000000 +0000 ++++ jack-3.1.1/jack_freedb.py 2006-02-05 05:41:16.000000000 +0000 +@@ -30,6 +30,8 @@ + import jack_functions + import jack_progress + import jack_utils ++import jack_tag ++import jack_misc + + from jack_version import prog_version, prog_name + from jack_globals import * +@@ -38,6 +40,7 @@ + dir_created = None # dirs are only renamed if we have created them + NUM, LEN, START, COPY, PRE, CH, RIP, RATE, NAME = range(9) + freedb_inexact_match = -1 ++filenames = [] + + freedb_servers = { + 'freedb': { +@@ -87,6 +90,36 @@ + jack_functions.progress("all", 'ren', unicode(dir_created + "-->" + new_dir, cf['_charset'], "replace")) + + if not err: ++ cd = track_names[0] ++ year = genretxt = None ++ if len(cd) > 2: ++ year = `cd[2]` ++ if len(cd) > 3: ++ genretxt = id3genres[cd[3]] ++ filenames.append('') # FIXME: possibly put the dir here, but in no ++ # case remove this since people access filenames with i[NUM] which starts at 1 ++ num = 1 ++ for i in track_names[1:]: ++ replacelist = [("%n", cf['_rename_num'] % num), ("%l", cd[1]), ("%t", i[1]), ++ ("%y", year), ("%g", genretxt)] ++ if cf['_various']: ++ replacelist.append(("%a", i[0])) ++ newname = jack_misc.multi_replace(cf['_rename_fmt_va'], replacelist) ++ else: ++ replacelist.append(("%a", cd[0])) ++ newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist) ++ exec("newname = newname" + cf['_char_filter']) ++ for char_i in range(len(cf['_unusable_chars'])): ++ try: ++ a = unicode(cf['_unusable_chars'][char_i], locale.getpreferredencoding(), "replace") ++ b = unicode(cf['_replacement_chars'][char_i], locale.getpreferredencoding(), "replace") ++ except UnicodeDecodeError: ++ warning("Cannot substitute unusable character %d." ++% (char_i+1)) ++ else: ++ newname = string.replace(newname, a, b) ++ filenames.append(newname) ++ num += 1 + names_available = 1 + else: + freedb_rename = 0 +diff -urN jack-3.1.1~/jack_tag.py jack-3.1.1/jack_tag.py +--- jack-3.1.1~/jack_tag.py 2006-02-05 05:40:23.000000000 +0000 ++++ jack-3.1.1/jack_tag.py 2006-02-05 05:40:28.000000000 +0000 +@@ -193,22 +193,7 @@ + oggi.add_tag('DATE', `cf['_id3_year']`) + oggi.write_to(mp3name) + if freedb_rename: +- if t_artist: # 'Various Artists' +- replacelist = (("%n", cf['_rename_num'] % i[NUM]), ("%a", t_artist), ("%t", t_name), ("%l", a_title), ("%y", `cf['_id3_year']`), ("%g", genretxt)) +- newname = jack_misc.multi_replace(cf['_rename_fmt_va'], replacelist) +- +- else: +- replacelist = (("%n", cf['_rename_num'] % i[NUM]), ("%a", a_artist), ("%t", t_name), ("%l", a_title), ("%y", `cf['_id3_year']`), ("%g", genretxt)) +- newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist) +- exec("newname = newname" + cf['_char_filter']) +- for char_i in range(len(cf['_unusable_chars'])): +- try: +- a = unicode(cf['_unusable_chars'][char_i], locale.getpreferredencoding(), "replace") +- b = unicode(cf['_replacement_chars'][char_i], locale.getpreferredencoding(), "replace") +- except UnicodeDecodeError: +- warning("Cannot substitute unusable character %d." % (char_i+1)) +- else: +- newname = string.replace(newname, a, b) ++ newname = jack_freedb.filenames[i[NUM]] + try: + i[NAME] = unicode(i[NAME], "utf-8") + except UnicodeDecodeError: diff --git a/debian/patches/72_upd_progress_renamed.patch b/debian/patches/72_upd_progress_renamed.patch new file mode 100644 index 0000000..a28c7f2 --- /dev/null +++ b/debian/patches/72_upd_progress_renamed.patch @@ -0,0 +1,72 @@ +Make --upd-progress work even after files have been renamed by +looking for both the generic and the FreeDB based name. Debian #351460 + +Depends on 71_freedb_filename_cleanup.patch. + +diff -urN a/jack_functions.py jack-3.1.1+cvs20050801/jack_functions.py +--- a/jack_functions.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_functions.py 2006-02-05 16:24:54.000000000 +0000 +@@ -24,6 +24,7 @@ + import string + import sys + import os ++import locale + + import jack_TOCentry + import jack_CDTime +@@ -31,6 +32,7 @@ + import jack_TOC + import jack_mp3 + import jack_helpers ++import jack_freedb + + from jack_globals import * + +@@ -461,3 +463,14 @@ + + import jack_version + error("illegal genre. Try '" + jack_version.prog_name + " --id3-genre help' for a list.") ++ ++def check_file(num, i, ext): ++ "Check if a song exists, either with a generic name or with the FreeDB name" ++ if os.path.exists(i[NAME] + ext): ++ return i[NAME] ++ elif jack_freedb.names_available: ++ s = jack_freedb.filenames[num].encode(locale.getpreferredencoding(), "replace") ++ if os.path.exists(s + ext): ++ return s ++ return None ++ +diff -urN a/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- a/jack_prepare.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-02-05 16:24:34.000000000 +0000 +@@ -331,19 +331,25 @@ + "update progress file at user's request (operation mode)" + + if cf['_upd_progress']: ++ # users may still have a valid jack.freedb file lying around ++ if not jack_freedb.names_available: ++ err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = 0, dirs = 1) ++ + for i in todo: + num = i[NUM] + if not status[num]['dae']: +- if os.path.exists(i[NAME] + ".wav"): ++ filename = jack_functions.check_file(num, i, ".wav") ++ if filename: + status[num]['dae'] = " * [ simulated ]" + jack_functions.progress(num, "dae", status[num]['dae']) + if not status[num]['enc']: +- if os.path.exists(i[NAME] + ext): ++ filename = jack_functions.check_file(num, i, ext) ++ if filename: + if ext == ".mp3": +- x = jack_mp3.mp3format(i[NAME] + ext) ++ x = jack_mp3.mp3format(filename + ext) + temp_rate = x['bitrate'] + elif ext == ".ogg" and ogg: +- x = ogg.vorbis.VorbisFile(i[NAME] + ext) ++ x = ogg.vorbis.VorbisFile(filename + ext) + temp_rate = int(x.raw_total(0) * 8 / x.time_total(0) / 1000 + 0.5) + else: + error("don't know how to handle %s files." % ext) diff --git a/debian/patches/73_err_unknown_sub.patch b/debian/patches/73_err_unknown_sub.patch new file mode 100644 index 0000000..6608750 --- /dev/null +++ b/debian/patches/73_err_unknown_sub.patch @@ -0,0 +1,98 @@ +Print an error if the information for dir_template (or rename_ftm*) cannot +be filled in. Debian #349368. + +Depends on 71_freedb_filename_cleanup.patch. + +diff -urN d/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- d/jack_freedb.py 2006-02-06 22:51:54.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-06 22:52:01.000000000 +0000 +@@ -104,10 +104,10 @@ + ("%y", year), ("%g", genretxt)] + if cf['_various']: + replacelist.append(("%a", i[0])) +- newname = jack_misc.multi_replace(cf['_rename_fmt_va'], replacelist) ++ newname = jack_misc.multi_replace(cf['_rename_fmt_va'], replacelist, "rename_fmt_va", warn = (num == 1)) + else: + replacelist.append(("%a", cd[0])) +- newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist) ++ newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist, "rename_fmt", warn = (num == 1)) + exec("newname = newname" + cf['_char_filter']) + for char_i in range(len(cf['_unusable_chars'])): + try: +diff -urN d/jack_misc.py jack-3.1.1+cvs20050801/jack_misc.py +--- d/jack_misc.py 2006-02-06 22:51:54.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_misc.py 2006-02-06 22:52:01.000000000 +0000 +@@ -20,11 +20,19 @@ + import sys + import os + ++import jack_globals ++ + def id(x): + return x + +-def multi_replace(s, rules, filter = id): ++def multi_replace(s, rules, where, filter = id, warn = 0): + "like string.replace but take list (('from0', 'to0'), ('from1', 'to1'))..." ++ ++ if warn == 2: ++ do_warn = jack_globals.error ++ else: ++ do_warn = jack_globals.warning ++ + # currently all from must be like %x (a percent sign follow by single char. + res = "" + maybe = 0 +@@ -34,10 +42,14 @@ + found = 0 + for j in rules: + if ("%" + i) == j[0]: ++ if not j[1] and warn: ++ do_warn("%%%c is not set but used in %s." % (i, where)) + res = res[:-1] + filter(j[1]) + found = 1 + if found: + continue ++ elif warn: ++ do_warn("Unknown pattern %%%c is used in %s." % (i, where)) + maybe = 0 + if i == "%": + maybe = 1 +diff -urN d/jack_utils.py jack-3.1.1+cvs20050801/jack_utils.py +--- d/jack_utils.py 2006-02-06 22:51:54.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_utils.py 2006-02-06 22:54:21.000000000 +0000 +@@ -27,6 +27,7 @@ + import jack_globals + import jack_misc + import jack_term ++import jack_config + + from jack_globals import * + +@@ -170,15 +171,19 @@ + dirs = template.split(os.path.sep) + + dirs2 = [] ++ if cf['_id3_year'] > 0: ++ year = `cf['_id3_year']` ++ else: ++ year = None ++ replace_list = (("%a", names[0][0].encode(cf['_charset'], "replace")), ++ ("%l", names[0][1].encode(cf['_charset'], "replace")), ++ ("%y", year), ("%g", cf['_id3_genre_txt'])) + for i in dirs: +- replace_list = (("%a", names[0][0].encode(cf['_charset'], "replace")), +- ("%l", names[0][1].encode(cf['_charset'], "replace")), +- ("%y", `cf['_id3_year']`), ("%g", cf['_id3_genre_txt'])) +- x = jack_misc.multi_replace(i, replace_list, unusable_charmap) ++ x = jack_misc.multi_replace(i, replace_list, "dir_template", unusable_charmap, warn = 2) + exec("x = x" + cf['_char_filter']) + dirs2.append(x) +- if cf['_append_year'] and len(`cf['_id3_year']`) == 4: # Y10K bug! +- dirs2[-1] = dirs2[-1] + jack_misc.multi_replace(cf['_append_year'], replace_list) ++ if cf['_append_year'] and year: ++ dirs2[-1] = dirs2[-1] + jack_misc.multi_replace(cf['_append_year'], replace_list, "append-year", warn = 1) + name = "" + for i in dirs2: + name = os.path.join(name, i) + diff --git a/debian/patches/74_multi_replace_cleanup.patch b/debian/patches/74_multi_replace_cleanup.patch new file mode 100644 index 0000000..d4a6c46 --- /dev/null +++ b/debian/patches/74_multi_replace_cleanup.patch @@ -0,0 +1,94 @@ +Code clean-up: make jack_misc.multi_replace() readable. + +Depends on 73_err_unknown_sub.patch + +diff -urN e/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- e/jack_freedb.py 2006-02-06 22:55:33.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-06 22:55:45.000000000 +0000 +@@ -100,13 +100,13 @@ + # case remove this since people access filenames with i[NUM] which starts at 1 + num = 1 + for i in track_names[1:]: +- replacelist = [("%n", cf['_rename_num'] % num), ("%l", cd[1]), ("%t", i[1]), +- ("%y", year), ("%g", genretxt)] ++ replacelist = {"n": cf['_rename_num'] % num, "l": cd[1], "t": i[1], ++ "y": year, "g": genretxt} + if cf['_various']: +- replacelist.append(("%a", i[0])) ++ replacelist["a"] = i[0] + newname = jack_misc.multi_replace(cf['_rename_fmt_va'], replacelist, "rename_fmt_va", warn = (num == 1)) + else: +- replacelist.append(("%a", cd[0])) ++ replacelist["a"] = cd[0] + newname = jack_misc.multi_replace(cf['_rename_fmt'], replacelist, "rename_fmt", warn = (num == 1)) + exec("newname = newname" + cf['_char_filter']) + for char_i in range(len(cf['_unusable_chars'])): +diff -urN e/jack_misc.py jack-3.1.1+cvs20050801/jack_misc.py +--- e/jack_misc.py 2006-02-06 22:55:33.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_misc.py 2006-02-06 22:55:45.000000000 +0000 +@@ -33,28 +33,18 @@ + else: + do_warn = jack_globals.warning + +- # currently all from must be like %x (a percent sign follow by single char. +- res = "" +- maybe = 0 +- for i in s: +- if maybe: +- maybe = 0 +- found = 0 +- for j in rules: +- if ("%" + i) == j[0]: +- if not j[1] and warn: +- do_warn("%%%c is not set but used in %s." % (i, where)) +- res = res[:-1] + filter(j[1]) +- found = 1 +- if found: +- continue +- elif warn: +- do_warn("Unknown pattern %%%c is used in %s." % (i, where)) +- maybe = 0 +- if i == "%": +- maybe = 1 +- res = res + i +- return res ++ # get a list of characters we need to replace (i.e. the x from %x) ++ # currently all from must be like %x (a percent sign follow by single char). ++ pattern = [x[0] for x in s[s.find("%"):].split("%") if x] ++ for p in pattern: ++ if not rules.has_key(p): ++ warn and do_warn("Unknown pattern %%%c is used in %s." % (p, where)) ++ else: ++ if not rules[p]: ++ warn and do_warn("%%%c is not set but used in %s." % (p, where)) ++ else: ++ s = s.replace("%%%c" % p, filter(rules[p])) ++ return s + + def safe_int(number, message): + try: +diff -urN e/jack_utils.py jack-3.1.1+cvs20050801/jack_utils.py +--- e/jack_utils.py 2006-02-06 22:55:34.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_utils.py 2006-02-06 22:56:48.000000000 +0000 +@@ -175,15 +175,15 @@ + year = `cf['_id3_year']` + else: + year = None +- replace_list = (("%a", names[0][0].encode(cf['_charset'], "replace")), +- ("%l", names[0][1].encode(cf['_charset'], "replace")), +- ("%y", year), ("%g", cf['_id3_genre_txt'])) ++ replacelist = {"a": names[0][0].encode(cf['_charset'], "replace"), ++ "l": names[0][1].encode(cf['_charset'], "replace"), ++ "y": year, "g": cf['_id3_genre_txt']} + for i in dirs: +- x = jack_misc.multi_replace(i, replace_list, "dir_template", unusable_charmap, warn = 2) ++ x = jack_misc.multi_replace(i, replacelist, "dir_template", unusable_charmap, warn = 2) + exec("x = x" + cf['_char_filter']) + dirs2.append(x) + if cf['_append_year'] and year: +- dirs2[-1] = dirs2[-1] + jack_misc.multi_replace(cf['_append_year'], replace_list, "append-year", warn = 1) ++ dirs2[-1] = dirs2[-1] + jack_misc.multi_replace(cf['_append_year'], replacelist, "append-year", warn = 1) + name = "" + for i in dirs2: + name = os.path.join(name, i) + diff --git a/debian/patches/75_fix_datatrack_rename.patch b/debian/patches/75_fix_datatrack_rename.patch new file mode 100644 index 0000000..da1edb0 --- /dev/null +++ b/debian/patches/75_fix_datatrack_rename.patch @@ -0,0 +1,177 @@ +Fixes that "jack -R -t x" fails when x is a data track and CD not in drive. +jack doesn't realize that it is in fact a data track. We can fix this by +moving the code around a bit so the jack.progress file is parsed first, +then jack will know it's not a valid audio track. Debian #341889 + +Depends on 70_fix_upd_progress.patch. + + +diff -urN c/jack jack-3.1.1+cvs20050801/jack +--- c/jack 2006-02-05 18:48:20.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack 2006-02-05 19:04:29.000000000 +0000 +@@ -94,36 +94,28 @@ + + ext = jack_targets.targets[jack_helpers.helpers[cf['_encoder']]['target']]['file_extension'] + +-### (1) search for a dir containing a toc-file or do the multi-mode ++### search for a dir containing a toc-file or do the multi-mode + toc_just_read = jack_prepare.find_workdir() + os.environ["JACK_CUR_DIR"] = os.getcwd() + os.environ["JACK_BASE_DIR"] = cf['_base_dir'] + # now we are set to go as we know we are in the right dir + +-### (2) check toc (operation mode) ++### check toc (operation mode) + if cf['_check_toc']: + jack_prepare.check_toc() + sys.exit(0) + +-### (3a) read and interpret toc_file ++### read and interpret toc_file + is_submittable, track1_offset = jack_prepare.read_toc_file() + +-### (3b) make sure we have a freedb file ++### make sure we have a freedb file + if not os.path.exists(cf['_freedb_form_file']): + jack_freedb.freedb_template(jack_ripstuff.all_tracks) + +-### (4a) filter out data tracks +-jack_prepare.filter_tracks(toc_just_read) +- +-### (4b) Parse tracks from argv, generate todo +-todo = jack_prepare.gen_todo() +-if len(todo) == 0: +- error("nothing to do. bye.") +- + ### init status +-jack_status.init(todo) ++jack_status.init(jack_ripstuff.all_tracks) + +-#XXX## (5) read progress info into status ++#XXX## read progress info into status + + jack_ripstuff.all_tracks_orig = [] + for i in jack_ripstuff.all_tracks: +@@ -131,20 +123,27 @@ + + status = jack_prepare.init_status() + +-### (6) update progress file at user's request (operation mode) +-if cf['_upd_progress']: +- jack_prepare.update_progress(status, todo) +- sys.exit(0) ++jack_prepare.tracknum = {} ++for i in jack_ripstuff.all_tracks: ++ jack_prepare.tracknum[i[NUM]] = i + +-### (7) now read in the progress file +-status = jack_prepare.read_progress(status, todo) ++### now read in the progress file ++status = jack_prepare.read_progress(status, jack_ripstuff.all_tracks) + +-### (8) submit freedb data on user's request ++### filter out data tracks ++jack_prepare.filter_tracks(toc_just_read, status) ++ ++### Parse tracks from argv, generate todo ++todo = jack_prepare.gen_todo() ++if len(todo) == 0: ++ error("nothing to do. bye.") ++ ++### submit freedb data on user's request + if cf['_freedb_submit'] or cf['_freedb_mailsubmit']: + jack_prepare.freedb_submit() + sys.exit(0) + +-### (9) do query on start ++### do query on start + freedb_rename = 0 + if cf['_query_if_needed']: + if not os.path.exists(cf['_freedb_form_file'] + ".bak"): +@@ -152,7 +151,7 @@ + if cf['_query_on_start']: + freedb_rename = jack_prepare.query_on_start(todo) + +-### (10) update freedb dbfile ++### update freedb dbfile + if cf['_update_freedb']: + if not jack_tag.track_names: + err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = 1, dirs = 0) +@@ -161,7 +160,12 @@ + info("now submit your changes if you like, using the option --submit (via http POST). Don't forget to activate your changes locally with -R") + sys.exit(0) + +-### (11) undo renaming (operation mode) ++### update progress file at user's request (operation mode) ++if cf['_upd_progress']: ++ jack_prepare.update_progress(status, todo) ++ sys.exit(0) ++ ++### undo renaming (operation mode) + if cf['_undo_rename']: + jack_prepare.undo_rename(status, todo) + sys.exit(0) +diff -urN c/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- c/jack_prepare.py 2006-02-05 18:48:20.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-02-05 19:14:17.000000000 +0000 +@@ -39,7 +39,7 @@ + + from jack_globals import * + +-tracknum = None ++global tracknum + datatracks = [] + + def find_workdir(): +@@ -210,8 +210,9 @@ + is_submittable = 1 + return is_submittable, track1_offset + +-def filter_tracks(toc_just_read): ++def filter_tracks(toc_just_read, status): + "filter out data tracks" ++ global datatracks + + if toc_just_read and jack_helpers.helpers[cf['_ripper']].has_key("toc_cmd") and cf['_ripper'] != cf['_toc_prog']: + ripper_tracks = jack_functions.gettoc(cf['_ripper']) +@@ -223,25 +224,24 @@ + # "NUM LEN START COPY PRE CH" (not: "RIP RATE NAME") + if ripper_tracks[rtn][j] != jack_ripstuff.all_tracks[i][j]: + jack_functions.progress(i + 1, "patch", "%s %d -> %d" % (fields[j], jack_ripstuff.all_tracks[i][j], ripper_tracks[rtn][j])) ++ jack_ripstuff.all_tracks[i][j] = ripper_tracks[rtn][j] + debug("Track %02d %s" % (i + 1, fields[j]) + `jack_ripstuff.all_tracks[i][j]` + " != " + `ripper_tracks[rtn][j]` + " (trusting %s; to the right)" % cf['_ripper']) + else: + jack_functions.progress(i + 1, "off", "non-audio") + datatracks.append(i + 1) + info("Track %02d not found by %s. Treated as non-audio." % (i + 1, cf['_ripper'])) +- ++ if not toc_just_read: ++ datatracks += [x for x in status.keys() if status[x]["off"] and status[x]["off"] == ["non-audio"]] + + def gen_todo(): + "parse tracks from argv, generate todo" +- global tracknum +- +- tracknum = {} +- for i in jack_ripstuff.all_tracks: +- tracknum[i[NUM]] = i + + if not cf['_tracks'] and not jack_playorder.order: + todo = [] + for i in jack_ripstuff.all_tracks: +- if i[CH] == 2: ++ if i[NUM] in datatracks: ++ pass ++ elif i[CH] == 2: + todo.append(i) + else: + info("can't handle non audio track %i" % i[NUM]) +@@ -442,8 +442,6 @@ + error("illegal patch %s. " % j, + "Track %02d: %s is %d" % (i, p_what, todo[jack_utils.has_track(todo, i)][fields.index(p_what)])) + + if status[i]['off']: +- if jack_utils.has_track(todo, i) >= 0: +- del todo[jack_utils.has_track(todo, i)] + if jack_utils.has_track(jack_ripstuff.all_tracks_todo_sorted, i) >= 0: + del jack_ripstuff.all_tracks_todo_sorted[jack_utils.has_track(jack_ripstuff.all_tracks_todo_sorted, i)] + diff --git a/debian/patches/76_mkdirname_cleanup.patch b/debian/patches/76_mkdirname_cleanup.patch new file mode 100644 index 0000000..daabd00 --- /dev/null +++ b/debian/patches/76_mkdirname_cleanup.patch @@ -0,0 +1,40 @@ +Clean-up the code in mkdirname(), but don't change any functionality. + +Depends on 73_err_unknown_sub.patch and 74_multi_replace_cleanup.patch + +--- a/jack_utils.py 2007-11-09 19:19:45.000000000 +0100 ++++ b/jack_utils.py 2007-11-09 19:20:53.000000000 +0100 +@@ -168,9 +168,6 @@ + + def mkdirname(names, template): + "generate mkdir-able directory name(s)" +- dirs = template.split(os.path.sep) +- +- dirs2 = [] + if cf['_id3_year'] > 0: + year = `cf['_id3_year']` + else: +@@ -178,16 +175,16 @@ + replacelist = {"a": names[0][0].encode(cf['_charset'], "replace"), + "l": names[0][1].encode(cf['_charset'], "replace"), + "y": year, "g": cf['_id3_genre_txt']} +- for i in dirs: ++ # Process substitution patterns from dir_template ++ subst = template.split(os.path.sep) ++ dirs = [] ++ for i in subst: + x = jack_misc.multi_replace(i, replacelist, "dir_template", unusable_charmap, warn = 2) + exec("x = x" + cf['_char_filter']) +- dirs2.append(x) ++ dirs.append(x) + if cf['_append_year'] and year: +- dirs2[-1] = dirs2[-1] + jack_misc.multi_replace(cf['_append_year'], replacelist, "append-year", warn = 1) +- name = "" +- for i in dirs2: +- name = os.path.join(name, i) +- return dirs2, name ++ dirs[-1] += jack_misc.multi_replace(cf['_append_year'], replacelist, "append-year", warn = 1) ++ return dirs, os.path.join(*dirs) + + def split_dirname(name): + "split path in components" diff --git a/debian/patches/77_upd_progress_flac.patch b/debian/patches/77_upd_progress_flac.patch new file mode 100644 index 0000000..293a33a --- /dev/null +++ b/debian/patches/77_upd_progress_flac.patch @@ -0,0 +1,32 @@ +Support FLAC files in --update-progress. Debian #351459 + +Depends on 72_upd_progress_renamed.patch and 75_fix_datatrack_rename.patch, +and on 33_flac_mutagen.patch + + +diff -urN jack-3.1.1+cvs20050801~/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- jack-3.1.1+cvs20050801~/jack_prepare.py 2006-04-04 23:29:16.000000000 +0200 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-04-04 23:30:32.000000000 +0200 +@@ -38,6 +38,7 @@ + + from jack_globals import * + from jack_init import ogg ++from jack_init import flac + + global tracknum + datatracks = [] +@@ -360,6 +361,13 @@ + elif ext == ".ogg" and ogg: + x = ogg.vorbis.VorbisFile(filename + ext) + temp_rate = int(x.raw_total(0) * 8 / x.time_total(0) / 1000 + 0.5) ++ elif ext.upper() == ".FLAC" and flac: ++ f = flac.FLAC(filename + ext) ++ size = os.path.getsize(filename + ext) ++ if f.info and size: ++ temp_rate = int(size * 8 * f.info.sample_rate / f.info.total_samples / 1000) ++ else: ++ temp_rate = 0 + else: + error("don't know how to handle %s files." % ext) + status[num]['enc'] = `temp_rate` + cf['_progr_sep'] + "[simulated]" + diff --git a/debian/patches/78_setlocale.patch b/debian/patches/78_setlocale.patch new file mode 100644 index 0000000..25be965 --- /dev/null +++ b/debian/patches/78_setlocale.patch @@ -0,0 +1,16 @@ +We need to set the locale so UTF-8 characters will be printed properly, see +the discussion in Debian #279000 + +--- a/jack 2006-12-01 13:51:22.000000000 +0100 ++++ b/jack 2007-08-29 12:50:16.000000000 +0200 +@@ -64,6 +64,9 @@ + ###################### M A I N ############################################### + ############################################################################## + ++import locale ++locale.setlocale(locale.LC_ALL, "") ++ + # say hello... + print "This is", jack_version.prog_name, jack_version.prog_version, jack_version.prog_copyright, jack_version.prog_devemail + + diff --git a/debian/patches/79_unicode_width.patch b/debian/patches/79_unicode_width.patch new file mode 100644 index 0000000..164240d --- /dev/null +++ b/debian/patches/79_unicode_width.patch @@ -0,0 +1,52 @@ +Try to guess the real width of a string, see comment in the patch. + +Without this patch, we'd get something like this: + +01 03:16 我的地盘 (My Territory).: 6.31x [ !] [coding @3.72x done, 133kbit +02 05:26 七里香 (Orange Jasmine): 6.92x [ ] 2% done, ETA: 01:18, 4.03x +03 03:56 借口 (Excuse).........: 7.51x [ ] waiting for encoder. +04 04:46 外婆 (Grandma)........: :DAE: [ > 057812 00 ] == :^D + ^^^^^^^^^^^^^^^^^^^^^^^ + +--- a/jack_ripstuff.py 2007-08-27 13:59:52.000000000 +0200 ++++ b/jack_ripstuff.py 2007-08-29 12:49:41.000000000 +0200 +@@ -19,6 +19,7 @@ + import jack_freedb + + import locale ++import unicodedata + + from jack_globals import * + +@@ -33,6 +34,21 @@ + + raw_space = None # free diskspace + ++# There's currently no good way in Python to obtain the real width a string ++# will take up on the screen since it may e.g. depend on how the terminal ++# displays wide characters. This function is a first attempt to at least ++# get an approximate idea of the width of a string (assuming that wide ++# characters take up two columns on the screen). This is only to be used ++# until there's a real solution in Python. ++def width(s): ++ w = 0 ++ for c in s.decode(locale.getpreferredencoding()): ++ if unicodedata.east_asian_width(c) in ("W", "F"): ++ w += 2 ++ else: ++ w += 1 ++ return w ++ + def gen_printable_names(track_names, todo): + global printable_names + global max_name_len +@@ -69,7 +85,7 @@ + else: + tmp = tmp + track_names[i[NUM]][1] + p_tmp = tmp.encode(locale.getpreferredencoding(), "replace") +- printable_names[i[NUM]] = p_tmp + "." * (max_name_len - len(tmp)) ++ printable_names[i[NUM]] = p_tmp + "." * (max_name_len - width(p_tmp)) + else: + if cf['_show_time']: + printable_names[i[NUM]] = ("%02i " % i[NUM]) + len_tmp + "." * (max_name_len - len(i[NAME]) - 6) + diff --git a/debian/patches/80_dest_exists_abs_path.patch b/debian/patches/80_dest_exists_abs_path.patch new file mode 100644 index 0000000..4aef413 --- /dev/null +++ b/debian/patches/80_dest_exists_abs_path.patch @@ -0,0 +1,16 @@ +When a "destination exists already" error is displayed, show the absolute +path rather than the one corresponding to the album name. Debian #293332. + + +diff -urN jack-3.1.1~/jack_utils.py jack-3.1.1/jack_utils.py +--- jack-3.1.1~/jack_utils.py 2005-07-28 23:18:40.722448528 +0100 ++++ jack-3.1.1/jack_utils.py 2005-07-28 23:37:18.256557520 +0100 +@@ -94,7 +94,7 @@ + + last_of_new = new[-1] + if os.path.exists(last_of_new): +- error("destination directory already exists: " + last_of_new) ++ error("destination directory already exists: " + os.path.join(*[cf['_base_dir']] + new)) + try: + os.rename(cwd, last_of_new) + except OSError: diff --git a/debian/patches/81_check_space.patch b/debian/patches/81_check_space.patch new file mode 100644 index 0000000..1802059 --- /dev/null +++ b/debian/patches/81_check_space.patch @@ -0,0 +1,30 @@ +Fix the code which checks whether disk space has been freed outside of +jack. Debian #200233. + +I'm not positive whether this fix is 100% correct but it seems to work, +certainly better than the current broken code which never updates +space_adjust at all. -- tbm + +diff -urN jack-3.1.1~/jack_main_loop.py jack-3.1.1/jack_main_loop.py +--- jack-3.1.1~/jack_main_loop.py 2005-07-30 00:17:58.603803952 +0100 ++++ jack-3.1.1/jack_main_loop.py 2005-07-30 00:18:36.513040872 +0100 +@@ -71,9 +71,8 @@ + + global_start = time.time() + while mp3s_todo or enc_queue or dae_queue or enc_running or dae_running: +- ++ orig_space = space + # feed in the WAVs which have been there from the start +- + if mp3s_todo and jack_functions.tracksize(mp3s_todo[0])[ENC] < space: + waiting_space = 0 + enc_queue.append(mp3s_todo[0]) +@@ -358,6 +357,8 @@ + if global_error: + jack_display.smile = " :-[" + ++ space_adjust += orig_space-space ++ + if last_update + cf['_update_interval'] <= time.time(): + last_update = time.time() + diff --git a/debian/patches/82_fix_append_year_doc.patch b/debian/patches/82_fix_append_year_doc.patch new file mode 100644 index 0000000..b07f64c --- /dev/null +++ b/debian/patches/82_fix_append_year_doc.patch @@ -0,0 +1,31 @@ +Fix the documentation of --append-year. The docs used to say it's a +boolean whereas it's really a string. (A string makes sense because +it's more flexible.) + +--- a/jack.man 2007-11-09 19:25:01.000000000 +0100 ++++ b/jack.man 2007-11-09 19:31:04.000000000 +0100 +@@ -102,8 +102,9 @@ + .PP + Jack understands the following options: + .TP +-.B \-\-append-year=bool +-if known, append the year to dir in the format " (%y)" ++.B \-\-append-year string ++append this string to the directory name (useful with %y to add the year ++an album was released) + .TP + .B \-b, \-\-bitrate int + target bitrate (in kbit/s, default is 160). +--- a/jack_config.py 2007-11-09 19:31:13.000000000 +0100 ++++ b/jack_config.py 2007-11-09 19:32:05.000000000 +0100 +@@ -166,8 +166,8 @@ + }, + 'append_year': { + 'type': types.StringType, +- 'val': " (%y)", +- 'usage': "if known, append the year to dir", ++ 'val': "", ++ 'usage': "append this string to the directory name", + 'long': 'AUTO', + }, + 'dir_template': { diff --git a/debian/patches/83_man_plugin.patch b/debian/patches/83_man_plugin.patch new file mode 100644 index 0000000..9665e48 --- /dev/null +++ b/debian/patches/83_man_plugin.patch @@ -0,0 +1,53 @@ +Describe the plug-in mechanism in the man page. Debian #272622 + + +diff -urN a/jack.man jack-3.1.1+cvs20050801/jack.man +--- a/jack.man 2006-02-05 15:54:02.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack.man 2006-02-05 15:59:14.000000000 +0000 +@@ -53,6 +53,11 @@ + .B /etc/jackrc + or by saving them to + .BR ~/.jack3rc . ++Additional rippers, encoders and FreeDB servers can be defined by users ++through the help of a plug-in directory (as defined by the ++.BR plugin_path ++option which defaults to ++.BR ~/.jack_plugins ). + .PP + While Jack is running, these keyboard commands are available: + .RS +@@ -500,6 +505,34 @@ + jack \-O \-\-remove-files ; gnoise *wav ; jack \-g *wav ; jack + .RE + Just replace gnoise by the operation you'd like to perform. ++.SH PLUG-INS ++Additional rippers, encoders and FreeDB servers currently not known by jack ++can be defined using jack's plug-in mechanism. Plug-ins have to be put in ++the ++.BR ~/.jack_plugins ++directory (or the path defined by the ++.BR plugin_path ++option). The plug-ins are simple Python scripts which define a hash with ++the values for your ripper, encoder or FreeDB server. For rippers and ++encoders, the hash ++.BR plugin_helpers ++has to be defined while additional FreeDB servers are specified in ++.BR plugin_freedb_servers . ++Both expect another hash whose names corresponds to the entry you want to ++add (prefixed by ++.BR plugin_ ) ++and have to define certain values. Two examples are provided, ++.BR jack_plugin_cddb.py ++(to define a new FreeDB server) and ++.BR jack_plugin_lame.py ++(to show how rippers and encoders can be defined). After defining ++plug-ins, you have to manually select them by specifying the ripper, ++encoder, or CDDB server. An example would be: ++.RS ++jack \-\-encoder-name plugin_lame \-\-ripper plugin_foo \-\-server plugin_cddb ++.RE ++Plug-ins can also be used to define your own rippers and encoders which ++uses different options than those used by default by jack. + .SH ENVIRONMENT VARIABLES + There are several environment variables which can be used in jack's exec + hooks: diff --git a/debian/patches/84_dyear_dgenre.patch b/debian/patches/84_dyear_dgenre.patch new file mode 100644 index 0000000..a4bf1d1 --- /dev/null +++ b/debian/patches/84_dyear_dgenre.patch @@ -0,0 +1,107 @@ +Add support for DYEAR and DGENRE as defined in CDDB protocol level 5. +Debian #277932. + +diff -urN a/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- a/jack_freedb.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-05 15:54:32.000000000 +0000 +@@ -179,6 +179,23 @@ + f.write(freedb_split("DTITLE", names[0][0] + " / " + names[0][1])) + else: + f.write("DTITLE=\n") ++ freedb_year, freedb_id3genre = -1, -1 ++ if cf['_id3_genre'] >= 0 and cf['_id3_genre'] < len(id3genres) or cf['_id3_genre'] == 255: ++ freedb_id3genre = cf['_id3_genre'] ++ elif names and len(names[0]) == 4: ++ freedb_id3genre = names[0][3] ++ if cf['_id3_year'] >= 0: ++ freedb_year = cf['_id3_year'] ++ elif names and len(names[0]) == 4: ++ freedb_year = names[0][2] ++ if freedb_year >= 0: ++ f.write("DYEAR=%d\n" % freedb_year) ++ else: ++ f.write("DYEAR=\n") ++ if freedb_id3genre >= 0: ++ f.write("DGENRE=%s\n" % id3genres[freedb_id3genre]) ++ else: ++ f.write("DGENRE=\n") + for i in tracks: + if names: + if names[i[NUM]][0]: # various +@@ -193,15 +210,6 @@ + f.write(freedb_split("TTITLE" + `i[NUM]-1`, names[i[NUM]][1])) + else: + f.write("TTITLE" + `i[NUM]-1` + "=\n") +- freedb_year, freedb_id3genre = -1, -1 +- if cf['_id3_genre'] >= 0 and cf['_id3_genre'] < len(id3genres) or cf['_id3_genre'] == 255: +- freedb_id3genre = cf['_id3_genre'] +- elif names and len(names[0]) == 4: +- freedb_id3genre = names[0][3] +- if cf['_id3_year'] >= 0: +- freedb_year = cf['_id3_year'] +- elif names and len(names[0]) == 4: +- freedb_year = names[0][2] + if freedb_year >= 0 or freedb_id3genre >= 0: + f.write("EXTD=\\nYEAR: %4s ID3G: %3s\n" % (freedb_year, freedb_id3genre)) + else: +@@ -338,7 +346,7 @@ + line = string.replace(line, "\r", "") # I consider "\r"s as bugs in db info + if jack_functions.starts_with(line, "# Revision:"): + revision = int(line[11:]) +- for i in ["DISCID", "DTITLE", "TTITLE", "EXTD", "EXTT", "PLAYORDER"]: ++ for i in ["DISCID", "DTITLE", "DYEAR", "DGENRE", "TTITLE", "EXTD", "EXTT", "PLAYORDER"]: + if jack_functions.starts_with(line, i): + buf = line + if string.find(buf, "=") != -1: +@@ -418,7 +426,29 @@ + dtitle = "(unknown artist)/" + dtitle + + names = [string.split(dtitle,"/",1)] +- if freedb.has_key('EXTD'): ++ year = -1 ++ if freedb.has_key('DYEAR'): ++ try: ++ year = int(freedb['DYEAR']) ++ except ValueError: ++ warning("DYEAR has to be an integer but it's the string '%s'" % freedb['DYEAR']) ++ else: ++ if year == 0: ++ warning("DYEAR should not be 0 but empty") ++ genre = -1 ++ if freedb.has_key('DGENRE'): ++ try: ++ genre = int(freedb['DGENRE']) ++ except ValueError: ++ if freedb['DGENRE'].upper() in [x.upper() for x in id3genres]: ++ genre = [x.upper() for x in id3genres].index(freedb['DGENRE'].upper()) ++ else: ++ warning("DGENRE should be a string, not an integer.") ++ if genre != -1: ++ names[0].extend([year, genre]) ++ elif year != -1: ++ names[0].extend([year]) ++ if freedb.has_key('EXTD') and not(freedb.has_key('DYEAR') or freedb.has_key('DGENRE')): + extra_tag_pos = string.find(freedb['EXTD'], "\\nYEAR:") + if extra_tag_pos >= 0: + try: +diff -urN a/jack_tag.py jack-3.1.1+cvs20050801/jack_tag.py +--- a/jack_tag.py 2006-02-05 15:54:03.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_tag.py 2006-02-05 15:54:25.000000000 +0000 +@@ -65,12 +65,11 @@ + + if cf['_set_id3tag'] or freedb_rename: + jack_m3u.init() +- if len(track_names[0]) == 4: +- # use freedb year and genre data if available +- if cf['_id3_genre'] == -1: +- cf['_id3_genre'] = track_names[0][3] +- if cf['_id3_year'] == -1: +- cf['_id3_year'] = track_names[0][2] ++ # use freedb year and genre data if available ++ if cf['_id3_year'] == -1 and len(track_names[0]) >= 3: ++ cf['_id3_year'] = track_names[0][2] ++ if cf['_id3_genre'] == -1 and len(track_names[0]) == 4: ++ cf['_id3_genre'] = track_names[0][3] + + print "Tagging", + for i in jack_ripstuff.all_tracks_todo_sorted: diff --git a/debian/patches/85_dir_template_yg.patch b/debian/patches/85_dir_template_yg.patch new file mode 100644 index 0000000..5e17fb3 --- /dev/null +++ b/debian/patches/85_dir_template_yg.patch @@ -0,0 +1,54 @@ +Make %y and %g actually work dir_template (when the user doesn't explicitly +specify it with -G and -Y). First we need to set it when doing the FreeDB +lookup, and secondly we need to use the right variable for the replacement. +_id3_genre_txt is not set anywhere at all. Debian #351574 + +Depends on 76_mkdirname_cleanup.patch and 84_dyear_dgenre.patch + +--- orig/jack_freedb.py 2006-03-02 18:37:52.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-03-02 18:37:56.000000000 +0000 +@@ -525,6 +525,10 @@ + if freedb.has_key('DYEAR'): + try: + year = int(freedb['DYEAR']) ++ if cf['_id3_year'] <= 0: ++ cf['_id3_year'] = year ++ elif cf['_id3_year'] != year: ++ warning("Specified and FreeDB year differ (%d vs %d)" % (cf['_id3_year'], year)) + except ValueError: + warning("DYEAR has to be an integer but it's the string '%s'" % freedb['DYEAR']) + else: +@@ -537,6 +541,11 @@ + except ValueError: + if freedb['DGENRE'].upper() in [x.upper() for x in id3genres]: + genre = [x.upper() for x in id3genres].index(freedb['DGENRE'].upper()) ++ if cf['_id3_genre'] <= 0: ++ cf['_id3_genre'] = genre ++ elif cf['_id3_genre'] != genre: ++ warning("Specified and FreeDB genre differ (%s vs %s)" % ++ (id3genres[cf['_id3_genre']], id3genres[genre])) + else: + warning("DGENRE should be a string, not an integer.") + if freedb.has_key('EXTD') and not freedb.has_key('DYEAR'): +diff -urN orig/jack_utils.py jack-3.1.1+cvs20050801/jack_utils.py +--- orig/jack_utils.py 2006-03-02 18:37:52.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_utils.py 2006-03-02 18:38:15.000000000 +0000 +@@ -168,13 +168,14 @@ + + def mkdirname(names, template): + "generate mkdir-able directory name(s)" ++ year = genretxt = None + if cf['_id3_year'] > 0: + year = `cf['_id3_year']` +- else: +- year = None ++ if cf['_id3_genre'] != -1: ++ genretxt = id3genres[cf['_id3_genre']] + replacelist = {"a": names[0][0].encode(cf['_charset'], "replace"), + "l": names[0][1].encode(cf['_charset'], "replace"), +- "y": year, "g": cf['_id3_genre_txt']} ++ "y": year, "g": genretxt} + # Process substitution patterns from dir_template + subst = template.split(os.path.sep) + dirs = [] + diff --git a/debian/patches/86_mention_year_dir_template.patch b/debian/patches/86_mention_year_dir_template.patch new file mode 100644 index 0000000..ec4984d --- /dev/null +++ b/debian/patches/86_mention_year_dir_template.patch @@ -0,0 +1,14 @@ +%y is a valid option for dir_template too. + +--- a/jack_config.py 2007-11-09 19:12:11.000000000 +0100 ++++ b/jack_config.py 2007-11-09 19:12:59.000000000 +0100 +@@ -175,7 +175,8 @@ + 'doc': """specify how the resulting files are named: + %a: artist + %l: album title +- %g: album genre - individual track genres are unsupported""", ++ %g: album genre - individual track genres are unsupported ++ %y: album release year - individual track years are unsupported""", + 'long': 'AUTO', + }, + 'char_filter': { diff --git a/debian/patches/87_use_existing_cddb_category.patch b/debian/patches/87_use_existing_cddb_category.patch new file mode 100644 index 0000000..d9cf6e2 --- /dev/null +++ b/debian/patches/87_use_existing_cddb_category.patch @@ -0,0 +1,121 @@ +When submitting updated CDDB entries, use the existing CDDB category of the +CD instead of prompting the user for it. Debian #335299. (Note that there +might be no CDDB category yet when -Q and --cont-failed-query is used; +Debian #453724). + + +Won't cleanly apply without 25_ignore_empty_freedb_info.patch but doesn't +depend on it. + + +diff -urN a/jack_freedb.py jack-3.1.1+cvs20050801/jack_freedb.py +--- a/jack_freedb.py 2006-02-05 15:37:18.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_freedb.py 2006-02-05 15:37:12.000000000 +0000 +@@ -651,34 +651,35 @@ + + return cat[x] + +-def do_freedb_submit(file, cd_id): ++def do_freedb_submit(file, cd_id, cat = None): + import httplib + +- hello = "hello=" + cf['_username'] + " " + cf['_hostname'] + " " + prog_name + " " + prog_version +- print "Info: querying categories..." +- url = "http://" + freedb_servers[cf['_freedb_server']]['host'] + "/~cddb/cddb.cgi?" + urllib.quote_plus("cmd=cddb lscat" + "&" + hello + "&proto=6", "=&") +- f = urllib2.urlopen(url) +- buf = f.readline() +- if buf[0:3] == "500": +- print "Info: LSCAT failed, using builtin categories..." +- cat = choose_cat() +- +- elif buf[0:3] == "210": +- cat = ["null", ] +- while 1: +- buf = f.readline() +- if not buf: +- break +- buf = string.rstrip(buf) +- if buf != ".": +- cat.append(buf) +- f.close() +- cat = choose_cat(cat) ++ if not cat: ++ hello = "hello=" + cf['_username'] + " " + cf['_hostname'] + " " + prog_name + " " + prog_version ++ print "Info: querying categories..." ++ url = "http://" + freedb_servers[cf['_freedb_server']]['host'] + "/~cddb/cddb.cgi?" + urllib.quote_plus("cmd=cddb lscat" + "&" + hello + "&proto=6", "=&") ++ f = urllib2.urlopen(url) ++ buf = f.readline() ++ if buf[0:3] == "500": ++ print "Info: LSCAT failed, using builtin categories..." ++ cat = choose_cat() ++ ++ elif buf[0:3] == "210": ++ cat = ["null", ] ++ while 1: ++ buf = f.readline() ++ if not buf: ++ break ++ buf = string.rstrip(buf) ++ if buf != ".": ++ cat.append(buf) ++ f.close() ++ cat = choose_cat(cat) + +- else: +- error("LSCAT failed: " + string.rstrip(buf) + f.read()) ++ else: ++ error("LSCAT failed: " + string.rstrip(buf) + f.read()) + +- print "OK, using `" + cat + "'." ++ print "OK, using category `" + cat + "'." + email = freedb_servers[cf['_freedb_server']]['my_mail'] + print "Your e-mail address is needed to send error messages to you." + x = raw_input("enter your e-mail-address [" + email + "]: ") +@@ -757,11 +758,12 @@ + print "consider submitting via mail (" + progname + " -m). full error:\n" + print err, msg + +-def do_freedb_mailsubmit(file, cd_id): ++def do_freedb_mailsubmit(file, cd_id, cat = None): + warning("Support for freedb submission via e-mail may be dropped in future versions. Please begin to use HTTP to submit your entries (--submit)") + sendmail = '/usr/lib/sendmail -t' + #sendmail = 'cat > /tmp/jack.test.mailsubmit' +- cat = choose_cat() ++ if not cat: ++ cat = choose_cat() + print "OK, using `" + cat + "'." + if string.find(freedb_servers[cf['_freedb_server']]['my_mail'], "@") >= 1 and len(freedb_servers[cf['_freedb_server']]['my_mail']) > 3: + return os.system("( echo 'To: " + freedb_servers[cf['_freedb_server']]['mail'] + "'; echo From: '" + freedb_servers[cf['_freedb_server']]['my_mail'] + "'; echo 'Subject: cddb " + cat + " " + cd_id + "' ; cat '" + file + "' ) | " + sendmail) +diff -urN a/jack_prepare.py jack-3.1.1+cvs20050801/jack_prepare.py +--- a/jack_prepare.py 2006-02-05 15:37:18.000000000 +0000 ++++ jack-3.1.1+cvs20050801/jack_prepare.py 2006-02-05 15:37:12.000000000 +0000 +@@ -461,7 +461,7 @@ + + return status + +-def freedb_submit(): ++def freedb_submit(cat = None): + "submit freedb data on user's request" + if not is_submittable: + error("can't submit in current state, please fix jack.freedb") +@@ -471,9 +471,9 @@ + error("invalid freedb file") + else: + if cf['_freedb_mailsubmit']: +- jack_freedb.do_freedb_mailsubmit(cf['_freedb_form_file'], cd_id) ++ jack_freedb.do_freedb_mailsubmit(cf['_freedb_form_file'], cd_id, cat) + else: +- jack_freedb.do_freedb_submit(cf['_freedb_form_file'], cd_id) ++ jack_freedb.do_freedb_submit(cf['_freedb_form_file'], cd_id, cat) + + ### (9) do query on start + +@@ -516,7 +516,7 @@ + x = raw_input("Would you like to submit these changes to the FreeDB server? (y/N) ") + if string.upper(x[0]) == "Y": + jack_freedb.update_revision(file) +- freedb_submit() ++ freedb_submit(jack_progress.status_all.get('freedb_cat', None)) + + if cf['_query_on_start']: + err, jack_tag.track_names, jack_tag.locale_names, freedb_rename, revision = jack_freedb.interpret_db_file(jack_ripstuff.all_tracks, todo, cf['_freedb_form_file'], verb = cf['_query_on_start'], dirs = 1) diff --git a/debian/patches/88_fix_argv_loop.patch b/debian/patches/88_fix_argv_loop.patch new file mode 100644 index 0000000..e37b595 --- /dev/null +++ b/debian/patches/88_fix_argv_loop.patch @@ -0,0 +1,27 @@ +Fix an endless loop in the parsing of certain command line arguments. +Debian #336911. + +--- a/jack_argv.py~ 2005-11-01 19:22:23.000000000 +0000 ++++ b/jack_argv.py 2005-11-01 19:25:27.000000000 +0000 +@@ -61,10 +61,10 @@ + else: + print "These are the most commom options. For a complete list, run jack --longhelp" + +-def get_next(argv, i, extra_arg = None): ++def get_next(argv, i, extra_arg = None, allow_equal = 1): + if extra_arg != None: + return i, extra_arg +- elif argv[i].find("=") > 0: ++ elif allow_equal and argv[i].find("=") > 0: + return i, argv[i].split("=", 1)[1] + else: + i = i + 1 +@@ -118,7 +118,7 @@ + l = [] + if origin == "argv": + while 1: +- i, data = get_next(argv, i, alt_arg) ++ i, data = get_next(argv, i, alt_arg, 0) + if data != None: + if data == ";": + break diff --git a/debian/patches/89_saner_argv_lists.patch b/debian/patches/89_saner_argv_lists.patch new file mode 100644 index 0000000..f9d4edf --- /dev/null +++ b/debian/patches/89_saner_argv_lists.patch @@ -0,0 +1,35 @@ +Make parsing of lists given on the command line more intuitive. Debian +#336343. + + +Depends on 88_fix_argv_loop.patch + + + +--- a/jack_argv.py~ 2005-11-01 19:30:34.000000000 +0000 ++++ b/jack_argv.py 2005-11-01 19:41:11.000000000 +0000 +@@ -117,11 +117,23 @@ + if ty == types.ListType: + l = [] + if origin == "argv": ++ valid_short_opts = [cf[key]['short'] for key in cf.keys() if cf[key].has_key('short')] ++ valid_long_opts = [cf[key]['long'] for key in cf.keys() if cf[key].has_key('long')] + while 1: + i, data = get_next(argv, i, alt_arg, 0) + if data != None: + if data == ";": + break ++ # The end of a list has to be signaled with a semicolon but ++ # many users forget this; therefore, check whether the next list ++ # entry is a valid option, and if so, assume the end of the list ++ # has been reached. ++ if data.startswith("--") and data[2:].split('=', 1)[0] in valid_long_opts: ++ i -= 1 ++ break ++ if data.startswith("-") and len(data) == 2 and data[1] in valid_short_opts: ++ i -= 1 ++ break + l.append(data) + if alt_arg: # only one option in --opt=val form + break + diff --git a/debian/patches/90_fix_df.patch b/debian/patches/90_fix_df.patch new file mode 100644 index 0000000..ebe0b29 --- /dev/null +++ b/debian/patches/90_fix_df.patch @@ -0,0 +1,24 @@ +Fix the alternative path of jack_functions.df(): + - close p after reading from it, not before... + - get rid of 'keep_free' which is no defined. It's really cf['_keep_free'] + but it should not be there anyway since the code which calls + jack_functions.df() will deduct it. + - also close p when 'Available' is not found (unlikely, but still...) + +Debian #324946. + +--- a/jack_functions.py~ 2005-11-01 21:06:30.000000000 +0000 ++++ b/jack_functions.py 2005-11-01 21:14:33.000000000 +0000 +@@ -53,9 +53,10 @@ + s = string.split(string.rstrip(p.readline())) + for i in range(len(s)): + if s[i] == "Available": +- p.close() + s = string.split(string.rstrip(p.readline())) +- return int(s[i]) * long(blocksize) - long(keep_free) ++ p.close() ++ return int(s[i]) * long(blocksize) ++ p.close() + + def get_sysload_linux_proc(): + "extract sysload from /proc/loadavg, linux only (?)" diff --git a/debian/patches/91_fix_cdrdao_image.patch b/debian/patches/91_fix_cdrdao_image.patch new file mode 100644 index 0000000..f5d8755 --- /dev/null +++ b/debian/patches/91_fix_cdrdao_image.patch @@ -0,0 +1,34 @@ +Fix support for cdrdao image files. Debian #338697. + + +diff -urN jack-3.1.1~/jack_main_loop.py jack-3.1.1/jack_main_loop.py +--- jack-3.1.1~/jack_main_loop.py 2005-11-12 16:50:35.000000000 +0000 ++++ jack-3.1.1/jack_main_loop.py 2005-11-12 17:52:31.000000000 +0000 +@@ -392,10 +392,11 @@ + #jack_term.tmod.dae_stat_upd(i['track'][NUM], None, i['percent']) + + elif i['type'] == "image_reader": +- line = string.strip(jack_status.get_2_line(i['buf'])) +- jack_status.dae_stat_upd(i['track'][NUM], line) +- if line.startswith("Error"): +- global_error = global_error + 1 ++ line = string.strip(jack_status.get_2_line(i['buf'], default="")) ++ if line: ++ jack_status.dae_stat_upd(i['track'][NUM], line) ++ if line.startswith("Error"): ++ global_error = global_error + 1 + + else: + error("unknown subprocess type \"" + i['type'] + "\".") +diff -urN jack-3.1.1~/jack_workers.py jack-3.1.1/jack_workers.py +--- jack-3.1.1~/jack_workers.py 2005-11-12 16:50:35.000000000 +0000 ++++ jack-3.1.1/jack_workers.py 2005-11-12 16:50:49.000000000 +0000 +@@ -315,7 +315,7 @@ + # + ## set up output wav file: + # +- wav = wave.open(track[NAME].decode(cf['_charset'], "replace") + ".wav", 'w') ++ wav = wave.open(track[NAME] + ".wav", 'w') + wav.setnchannels(2) + wav.setsampwidth(2) + wav.setframerate(44100) diff --git a/debian/patches/92_fix_python2.6_warning.patch b/debian/patches/92_fix_python2.6_warning.patch new file mode 100644 index 0000000..08ce231 --- /dev/null +++ b/debian/patches/92_fix_python2.6_warning.patch @@ -0,0 +1,21 @@ +Fix the following warning: + +/var/lib/python-support/python2.5/jack_functions.py:243: Warning: 'with' will become a reserved keyword in Python 2.6 +/var/lib/python-support/python2.5/jack_functions.py:245: Warning: 'with' will become a reserved keyword in Python 2.6 +/var/lib/python-support/python2.5/jack_functions.py:245: Warning: 'with' will become a reserved keyword in Python 2.6 + +--- a/jack_functions.py 2007-10-20 12:24:55.000000000 +0200 ++++ b/jack_functions.py 2007-10-20 12:25:24.000000000 +0200 +@@ -240,9 +240,9 @@ + ff = blocks % CDDA_BLOCKS_PER_SECOND + return mm, ss, ff, blocks + +-def starts_with(str, with): +- "checks whether str starts with with" +- return str[0:len(with)] == with ++def starts_with(str, x): ++ "checks whether str starts with a given string x" ++ return str[0:len(x)] == x + + ## #XXX the following will be used if all references to it have been updated. + ## meanwhile the wrapper below is used. diff --git a/debian/patches/93_extd_parsing.patch b/debian/patches/93_extd_parsing.patch new file mode 100644 index 0000000..7eec713 --- /dev/null +++ b/debian/patches/93_extd_parsing.patch @@ -0,0 +1,44 @@ +Make the parsing of year and genre in EXTD less restrictive. Now it will +recognize the year even if there is no genre and if there is space instead +of newline between year and EXTD. Debian #341891. + +Depends on 84_dyear_dgenre.patch + +diff -urN jack-3.1.1~/jack_freedb.py jack-3.1.1/jack_freedb.py +--- jack-3.1.1~/jack_freedb.py 2005-12-03 21:50:24.000000000 +0000 ++++ jack-3.1.1/jack_freedb.py 2005-12-03 21:57:59.000000000 +0000 +@@ -449,22 +449,22 @@ + genre = [x.upper() for x in id3genres].index(freedb['DGENRE'].upper()) + else: + warning("DGENRE should be a string, not an integer.") ++ if freedb.has_key('EXTD') and not freedb.has_key('DYEAR'): ++ extra_tag_pos = string.find(freedb['EXTD'], "YEAR:") ++ if extra_tag_pos >= 0: ++ arg = freedb['EXTD'][extra_tag_pos + 5:].lstrip().split()[0] ++ if arg.isdigit(): ++ year = int(arg) ++ if freedb.has_key('EXTD') and not freedb.has_key('DGENRE'): ++ extra_tag_pos = string.find(freedb['EXTD'], "ID3G:") ++ if extra_tag_pos >= 0: ++ arg = freedb['EXTD'][extra_tag_pos + 5:].lstrip().split()[0] ++ if arg.isdigit(): ++ genre = int(arg) + if genre != -1: + names[0].extend([year, genre]) + elif year != -1: + names[0].extend([year]) +- if freedb.has_key('EXTD') and not(freedb.has_key('DYEAR') or freedb.has_key('DGENRE')): +- extra_tag_pos = string.find(freedb['EXTD'], "\\nYEAR:") +- if extra_tag_pos >= 0: +- try: +- extd_info = freedb['EXTD'][extra_tag_pos + 7:] +- extd_year, extd_id3g = string.split(extd_info, "ID3G:", 1) +- extd_year, extd_id3g = int(extd_year), int(extd_id3g) +- except: +- print "can't handle '%s'." % freedb['EXTD'] +- else: +- names = [string.split(dtitle, "/", 1)] +- names[0].extend([extd_year, extd_id3g]) + if names[0][0] == "(unknown artist)": + if verb: + warning("the disc's title must be set to \"artist / title\" (\"DTITLE\").") diff --git a/debian/patches/94_addstr_error.patch b/debian/patches/94_addstr_error.patch new file mode 100644 index 0000000..a19be71 --- /dev/null +++ b/debian/patches/94_addstr_error.patch @@ -0,0 +1,40 @@ +Debian bug #401127, related to #387648 (99_addstr_error.patch). Probably a +workaround, not a real fix. + + +I see tracebacks like this a lot when the tags have "funny" characters: + +Traceback (most recent call last): + File "/usr/bin/jack", line 235, in ? + global_error = jack_main_loop.main_loop(mp3s_todo, wavs_todo, space, dae_queue, enc_queue, track1_offset) + File "/var/lib/python-support/python2.3/jack_main_loop.py", line 374, in main_loop + jack_status.dae_stat_upd(i['track'][NUM], ":DAE: " + new_status) + File "/var/lib/python-support/python2.3/jack_status.py", line 51, in dae_stat_upd + jack_term.tmod.dae_stat_upd(num, string) + File "/var/lib/python-support/python2.3/jack_t_curses.py", line 262, in dae_stat_upd + status_pad.addstr(map_track_num[num], 0, (jack_ripstuff.printable_names[num] + ": " + jack_status.dae_status[num] + " " + jack_status.enc_status[num])) +curses.error: addstr() returned ERR + *warning* abnormal exit + + +It's just a display error; it really shouldn't abort jack. The following +patch makes it not abort: + + +diff -dU3 /tmp/old.py /var/lib/python-support/python2.3/jack_main_loop.py +--- a/old.py 2006-11-30 19:08:06.000000000 -0500 ++++ b/jack_main_loop.py 2006-11-30 19:00:31.000000000 -0500 +@@ -371,7 +371,10 @@ + else: + exec(jack_helpers.helpers[i['prog']]['status_fkt']) in globals(), locals() + if new_status: +- jack_status.dae_stat_upd(i['track'][NUM], ":DAE: " + new_status) ++ try: ++ jack_status.dae_stat_upd(i['track'][NUM], ":DAE: " + new_status) ++ except: ++ debug("error in dae_stat_upd") + + elif i['type'] == "encoder": + if len(i['buf']) == jack_helpers.helpers[i['prog']]['status_blocksize']: + + diff --git a/debian/patches/95_fix_empty_input.patch b/debian/patches/95_fix_empty_input.patch new file mode 100644 index 0000000..fe6470b --- /dev/null +++ b/debian/patches/95_fix_empty_input.patch @@ -0,0 +1,42 @@ +Don't fail when enter is pressed at an input prompt; closes: #345614. + +Depends on 87_use_existing_cddb_category.patch + + +diff -urN jack-3.1.1~/jack_prepare.py jack-3.1.1/jack_prepare.py +--- jack-3.1.1~/jack_prepare.py 2006-01-02 10:15:43.000000000 +0100 ++++ jack-3.1.1/jack_prepare.py 2006-01-02 10:18:24.000000000 +0100 +@@ -487,8 +487,8 @@ + if jack_freedb.freedb_query(jack_freedb.freedb_id(jack_ripstuff.all_tracks), jack_ripstuff.all_tracks, cf['_freedb_form_file']): + if cf['_cont_failed_query']: + +- x = raw_input("\nfreedb search failed, continue? ") + "x" +- if string.upper(x[0]) != "Y": ++ x = raw_input("\nfreedb search failed, continue? (y/N) ") + "x" ++ if not x or x[0].upper() != "Y": + sys.exit(0) + cf['_query_on_start'] = 0 + else: +@@ -519,7 +519,7 @@ + print + print pdiff + x = raw_input("Would you like to submit these changes to the FreeDB server? (y/N) ") +- if string.upper(x[0]) == "Y": ++ if x and x[0].upper() == "Y": + jack_freedb.update_revision(file) + freedb_submit(jack_progress.status_all['freedb_cat']) + +@@ -753,11 +753,11 @@ + print "/\\" * 40 + for i in remove_q: + print i +- x = raw_input("These files will be deleted, continue? ") + "x" ++ x = raw_input("These files will be deleted, continue? (y/N) ") + "x" + if cf['_force']: + info("(forced)") + else: +- if string.upper(x[0]) != "Y": ++ if not x or x[0].upper() != "Y": + sys.exit(0) + + for i in remove_q: diff --git a/debian/patches/96_fix_cdda2wav_parsing.patch b/debian/patches/96_fix_cdda2wav_parsing.patch new file mode 100644 index 0000000..8b40b07 --- /dev/null +++ b/debian/patches/96_fix_cdda2wav_parsing.patch @@ -0,0 +1,33 @@ +Make cdda2wav parsing more robust, in particular when errors occur. + + +diff -urN jack-3.1.1~/jack_helpers.py jack-3.1.1/jack_helpers.py +--- jack-3.1.1~/jack_helpers.py 2006-01-23 23:40:49.000000000 +0000 ++++ jack-3.1.1/jack_helpers.py 2006-01-24 00:44:57.000000000 +0000 +@@ -321,10 +321,23 @@ + 'status_fkt': r""" + tmp = string.split(i['buf'], "\r") + if len(tmp) >= 2: +- if string.find(tmp[-2], '%') != -1: +- new_status = "ripping: " + string.strip(tmp[-2]) +- else: ++ tmp = tmp[-2].lstrip() ++ pct = tmp.find("%") ++ if pct == -1: + new_status = "waiting..." ++ else: ++ # A normal line when it's ripping looks like this: ++ # 7% ++ # However, when an error occurs, it'll look something like this: ++ # 0%cdda2wav: Operation not permitted. Cannot send SCSI cmd via ioctl ++ info = tmp[:pct+1] ++ error = info + "cdda2wav:" ++ if tmp == info: ++ new_status = "ripping: " + info ++ elif tmp.startswith(error): ++ new_status = "Error: " + tmp[len(error):].lstrip() ++ else: ++ new_status = "Cannot parse status" + else: + new_status = "Cannot parse status" + """, diff --git a/debian/patches/97_man_mp3vsogg.patch b/debian/patches/97_man_mp3vsogg.patch new file mode 100644 index 0000000..5861328 --- /dev/null +++ b/debian/patches/97_man_mp3vsogg.patch @@ -0,0 +1,90 @@ +By default, OGGs are generated now rather than MP3s so update the examples +in the man page. Thanks, David Whitmarsh. Debian #348547. + +--- jack~/jack.man 2006-01-27 15:12:00.000000000 +0000 ++++ jack/jack.man 2006-01-27 15:19:09.000000000 +0000 +@@ -23,8 +23,8 @@ + .SH DESCRIPTION + .B Jack + transforms your audio-CDs to FLAC, MP3 or Ogg Vorbis files. It uses several +-helper programs in order to achieve things like ripping, encoding and +-ID3-tagging. Ripping is either done via ++helper programs in order to achieve functions such as ripping, encoding and, ++tagging files with meta information. Ripping is either done via + .B cdparanoia + (in which case the ripping status is displayed by Jack as well) or + .B cdda2wav. +@@ -33,11 +33,10 @@ + and + .B xing. + Any time during operation (and even when everything is finished and +-the original CD lost) you can let Jack look up the track names at ++the original CD lost) you can let Jack look up the track names at + .B freedb.org +-and rename the tracks accordingly. ID3-tagging of MP3s (or insertion +-of equivalent comment fields in Ogg Vorbis files) is performed +-as well. ++and rename the tracks accordingly. Tagging of audio files with meta ++information about artist, track title, etc. is performed as well. + .PP + If no freedb-lookup has been performed, Jack drops all files in a + directory +@@ -48,7 +47,7 @@ + This directory is renamed by Jack when the appropriate information is known. + .PP + Most options like ripper, encoder, preferred FreeDB-Server, directory +-and MP3-filename format, etc. can be user defined by changing the ++and sound file format, etc. can be user defined by changing the + defaults in + .B /etc/jackrc + or by saving them to +@@ -196,15 +195,15 @@ + the TOC is read from the CD itself. + .TP + .B \-g, \-\-guess-toc list +-make up a TOC from the MP3 file given in mp3_files. Format is +-.B track_01.mp3 ... track_nn.mp3 ; ++make up a TOC from the list of sound file given. The format is ++.B track_01.ogg ... track_nn.ogg ; + Note that the trailing " + .B ; + " is only necessary if you want to + append more options to your command line. +-You can use it to do a FreeDB query based on +-MP3s alone - no need for the CD. Very useful if you have no idea +-which CD the MP3s are from. The MP3s must be given in the same ++You can use it to do a FreeDB query based on your sound files ++alone - no need for the CD. Very useful if you have no idea ++which CD the songs are from. The songs must be given in the same + order as they were on their CD. The generated TOC file is + similar, but not identical to the TOC of the CD - do not submit + these! +@@ -213,7 +212,8 @@ + set ID3 genre. Use 'help' to get a list of all known genres. (You can also specify the ID3v1 genre as an int) + .TP + .B \-Y, \-\-id3-year int +-set ID3 year. ++set the year of the album (the term ID3 comes from MP3 but this option also ++works with other audio formats, such as OGG Vorbis and FLAC) + .TP + .B \-h, \-\-help + Show summary of options. +@@ -298,7 +298,7 @@ + is used, + then the file is queried from your FreeDB server). If you have + changed its contents (e.g. because the CD was unknown to FreeDB) +-and want to rename and tag your MP3s accordingly, use this option. ++and want to rename and tag your audio files accordingly, use this option. + Give all other needed options too, like + .B \-t + , +@@ -379,7 +379,7 @@ + undo file renaming and exit. If you don't like how Jack renamed + your files, use this option to restore the previous state. + Several levels of undo are possible. Note +-that ID3 tags are not restored. ++that meta information tags are not restored. + .TP + .B \-\-unusable-chars list + characters which can't be used in filenames (default "/"). + diff --git a/debian/patches/98_man_default_encoders.patch b/debian/patches/98_man_default_encoders.patch new file mode 100644 index 0000000..5e0384d --- /dev/null +++ b/debian/patches/98_man_default_encoders.patch @@ -0,0 +1,13 @@ +Mention the default of the --encoders option in the man page. + +--- jack/jack.man~ 2006-01-27 15:20:25.000000000 +0000 ++++ jack/jack.man 2006-01-27 15:21:19.000000000 +0000 +@@ -160,7 +160,7 @@ + .B \-e, \-\-encoders int + encode how many files in parallel. If you have a SMP machine or + simply want to stress your system, you can have Jack encode +-several files at once. ++several files at once (default 1). + .TP + .B \-x, \-\-exec + run predefined command when finished. diff --git a/debian/patches/99_addstr_error.patch b/debian/patches/99_addstr_error.patch new file mode 100644 index 0000000..ff5b975 --- /dev/null +++ b/debian/patches/99_addstr_error.patch @@ -0,0 +1,43 @@ +This is a _workaround_ for Debian #387648 - a testcase can be found in that +bug. + + +diff -urN jack-3.1.1+cvs20050801~/jack_t_curses.py jack-3.1.1+cvs20050801/jack_t_curses.py +--- jack-3.1.1+cvs20050801~/jack_t_curses.py 2006-10-24 21:10:12.000000000 +0100 ++++ jack-3.1.1+cvs20050801/jack_t_curses.py 2006-10-24 21:11:16.000000000 +0100 +@@ -33,11 +33,11 @@ + enabled = None + + try: +- from jack_curses import endwin, resizeterm, A_REVERSE, newwin, newpad, initscr, noecho, cbreak, echo, nocbreak ++ from jack_curses import endwin, resizeterm, A_REVERSE, newwin, newpad, initscr, noecho, cbreak, echo, nocbreak, error + except ImportError: + warning("jack_curses module not found, trying normal curses...") + try: +- from curses import endwin, A_REVERSE, newwin, newpad, initscr, noecho, cbreak, echo, nocbreak ++ from curses import endwin, A_REVERSE, newwin, newpad, initscr, noecho, cbreak, echo, nocbreak, error + def resizeterm(y, x): + pass + except ImportError: +@@ -255,11 +255,17 @@ + front = jack_ripstuff.printable_names[num] + ": " + jack_status.dae_status[num][:6] + middle = jack_status.dae_status[num][6:split_point] + end = jack_status.dae_status[num][split_point:] + " " + jack_status.enc_status[num] +- status_pad.addstr(map_track_num[num], 0, front) +- status_pad.addstr(map_track_num[num], len(front), middle, A_REVERSE) +- status_pad.addstr(map_track_num[num], len(front + middle), end) ++ try: ++ status_pad.addstr(map_track_num[num], 0, front) ++ status_pad.addstr(map_track_num[num], len(front), middle, A_REVERSE) ++ status_pad.addstr(map_track_num[num], len(front + middle), end) ++ except error: ++ pass + else: +- status_pad.addstr(map_track_num[num], 0, (jack_ripstuff.printable_names[num] + ": " + jack_status.dae_status[num] + " " + jack_status.enc_status[num])) ++ try: ++ status_pad.addstr(map_track_num[num], 0, (jack_ripstuff.printable_names[num] + ": " + jack_status.dae_status[num] + " " + jack_status.enc_status[num])) ++ except error: ++ pass + + dummy = """ + if ripper == "cdparanoia" and track in dae_tracks or (track in enc_queue and track not in mp3s_done): diff --git a/debian/patches/99a_correct-category-list.patch b/debian/patches/99a_correct-category-list.patch new file mode 100644 index 0000000..c35c302 --- /dev/null +++ b/debian/patches/99a_correct-category-list.patch @@ -0,0 +1,54 @@ +Cédric Boutillier reports: + +When I try to send a submission to a freedb server, the list of +categories appearing on the screen does not contain 'blues' (which is a +freedb category) and contains 'null' (which is not a freedb category). + +I think that a few changes must be made to jack_freedb.py: +* when the list is fetched from the server, it is unnecessarily + initialised with "null" +* subtract 1 to the index to get the correct category +* When the list is displayed, the index is running from 1 to len(cat)-1, + missing the first item. + +The attached patch solved the problem for me, to be applied after the +already very long list of patches. + +See http://bugs.debian.org/536165 + +--- jack-3.1.1+cvs20050801/jack_freedb.py 2009-07-07 21:04:06.000000000 +0200 ++++ jack-3.1.1+cvs20050801-cb/jack_freedb.py 2009-07-07 21:03:22.000000000 +0200 +@@ -761,11 +761,11 @@ + def choose_cat(cat = ["blues", "classical", "country", "data", "folk", "jazz", "misc", "newage", "reggae", "rock", "soundtrack"]): + print "choose a category:" + cat.sort() +- for i in range(1, len(cat)): +- print "%2d" % i + ".) " + cat[i] ++ for i in range(0, len(cat)): ++ print "%2d" % (i+1) + ".) " + cat[i] + + x = -1 +- while x < 0 or x > len(cat) - 1: ++ while x < 0 or x > len(cat): + if jack_progress.status_all.has_key('freedb_cat') and jack_progress.status_all['freedb_cat'][-1] in cat: + input = raw_input(" 0.) none of the above (default='%s'): " % jack_progress.status_all['freedb_cat'][-1]) + if not input: +@@ -782,7 +782,7 @@ + print "ok, aborting." + sys.exit(0) + +- return cat[x] ++ return cat[x-1] + + def do_freedb_submit(file, cd_id, cat = None): + import httplib +@@ -798,7 +798,7 @@ + cat = choose_cat() + + elif buf[0:3] == "210": +- cat = ["null", ] ++ cat = [] + while 1: + buf = f.readline() + if not buf: + diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..6e79750 --- /dev/null +++ b/debian/rules @@ -0,0 +1,16 @@ +#!/usr/bin/make -f + +DEB_PYTHON2_MODULE_PACKAGES := jack + +include /usr/share/cdbs/1/rules/buildcore.mk +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/python-distutils.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk + +install/jack:: + install doc/ChangeLog debian/$(cdbs_curpkg)/usr/share/doc/jack/changelog + +binary-predeb/jack:: + rm debian/$(cdbs_curpkg)/usr/share/doc/jack/README + chmod +x debian/$(cdbs_curpkg)/usr/share/doc/jack/examples/exec_vorbisgain + diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..d773028 --- /dev/null +++ b/debian/watch @@ -0,0 +1,5 @@ +version=3 + +opts=dversionmangle=s/\+cvs\S*$// \ +http://www.home.unix-ag.org/arne/jack/download.html \ + (?:|.*/)jack[_\-](\d\S*)\.(?:tar\.xz|txz|tar\.bz2|tbz2|tar\.gz|tgz) -- cgit v1.2.3