I have attached an ebuild for ipodder-1.1.2, a cross-platform podcast receiver. It uses http://www.ipodder.org to provide a listing of available podcasts. Then, the user can download the podcast (usually an MP3 file) he/she chooses. Reproducible: Always Steps to Reproduce: 1. 2. 3.
Created attachment 55067 [details] ipodder-1.1.2.ebuild
woo, padcast reciever, I'll take this bundle of joy. Intended location: media-sound/ipodder
Created attachment 55109 [details] ipodder-1.1.2 (Update) This ebuild contains the correct wx dependency. It was supposed to be >=dev-python/wxpython since it's a Python program.
Once again on the todo list.
Created attachment 59990 [details] iPodder-2.0_rc3.ebuild (Update) This ebuild is not only an update for iPodder, it changes the package name (sorry, but I kinda had to for ease of downloading sources), and it's the first ebuild that actually gets iPodder working on Gentoo!
Created attachment 59991 [details] iPodder is the launch script which gets installed in /usr/bin iPodder launch script. files/2.0_rc3/iPodder
Created attachment 59992 [details, diff] unicode_patch_all_.diff unicode_patch_all_.diff is a patch so that iPodder can run on systems on which wxGTK and/or wxpython are NOT compiled with unicode support. The ebuild should instead check the use flags used to compile wxGTK and wxpython and quit if unicode was not used, but I don't know how to do that. And wxGTK takes a while to compile, so I just made this patch. files/2.0_rc3/unicode_patch_all_.diff
Created attachment 60662 [details] iPodder-2.0_rc3-r1.ebuild (Update) iPodder-2.0_rc3-r1.ebuild is an ebuild update. Fixes dependancy bugs, actually downloads the correct tarball, and adds iPodder.desktop, so iPodder should show up in Gnome, xfce4, etc, menus! You will need unicode_patch_all.diff (patch), iPodder (launch script), and iPodder.desktop in files/2.0_rc3-r1
Created attachment 60663 [details] iPodder.desktop (gnome desktop file) iPodder.desktop is the gnome desktop file. It allows iPodder to show up in the gnome menu. Also works with xfce4!
Created attachment 60805 [details] iPodder (launch script update) iPodder (launch script update) This update tests for the iPodder data directory instead of the welcome mp3. This avoids the directory "Adam Curry iPodder Test Channel" from being recreated if the user deletes it.
Lines 38 and 39 are broken: cp ${DISTDIR}/${PVR}/iPodder ${D}/usr/bin/ || die "install failed!" cp ${DISTDIR}/${PVR}/iPodder.desktop ${D}/usr/share/applications/ || die "install failed!" should be: cp ${S}/${PVR}/iPodder ${D}/usr/bin/ || die "install failed!" cp ${S}/${PVR}/iPodder.desktop ${D}/usr/share/applications/ || die "install failed!"
I don't see the lines as you mentioned them. Here's what's on the ebuild: cp ${FILESDIR}/${PVR}/iPodder ${D}/usr/bin/ || die "install failed!" cp ${FILESDIR}/${PVR}/iPodder.desktop ${D}/usr/share/applications/ || die "install failed!" I used ${FILEDIR} not ${DISTDIR}. But as you stated, if I had used ${DISTDIR} if would have failed.
Created attachment 60959 [details] iPodder-2.0_rc3-r2.ebuild (Update) iPodder-2.0_rc3-r2.ebuild (Update) There are many changed with this updated ebuild. I tried to follow what the developers intended for installation purposes. I don't use their install script because it is interactive, but: 1. iPodder now installs in /opt/iPodder 2. Ebuild does not download the two MP3s anymore. So I'm allowing iPodder to work as it normally would on first-time launch. Which means... 3. The launch script that comes with iPodder is used instead of my hack. So to launch iPodder you must execute /usr/bin/ipodder instead of the previous /usr/bin/iPodder. 4. The unicode patch is GONE. Using emerge, the ebuild tests your wxGTK and wxpython installations for unicode support and fails to continue if you have not emerged BOTH wxGTK and wxpython using the unicode USE flag. This means... 5. sys-apps/sed was added as a dependancy. This won't be a problem will it? I hope the iPodder ebuild is now much closer to being portage ready :) Any takers?
I incorrectly referenced DISTDIR instead of FILESDIR in my previous comment. FILESDIR is still incorrect, it should have been ${S} as I suggested. This r2 ebuild is still broken. The following line should be removed as the file isn't downloaded by the ebuild: cp ${S}/iPodder.desktop ${D}/usr/share/applications/ || die "install failed!" The unicode check is broken also. I merged wxGTK and wxpython with UNICODE support, even if +unicode isn't in make.conf Dont know a working solution off the top of my head, but I do know this check fails. Keep trying :)
I've done it again! I posted code I modified. The line that should be removed is: cp ${FILESDIR}/${PVR}/iPodder.desktop ${D}/usr/share/applications/ || die "install failed!"
Well, the reason iPodder.desktop is not downloaded is because it's not part of the tarball. Hopefully the iPodder developers will add it, or something like it later. I put the file iPodder.desktop in files/2.0_rc3-r2/ because I thought you're allowed to put small text files there. If that's going to be a problem, I could easily generate the file from within the ebuild. I guess I shouldn't be surprised the unicode check fails. Not only is it my first time messing with sed, it's... picky code. I'll give it another go! By the way, thanks for the feedback!
Created attachment 61019 [details] iPodder.desktop (gnome desktop file Update) iPodder.desktop (gnome desktop file Update) iPodder is now executed from /usr/bin/ipodder instead of /usr/bin/iPodder, so I had to update the desktop file.
Created attachment 61022 [details] iPodder-2.0_rc3-r3.ebuild (Update) iPodder-2.0_rc3-r3.ebuild (Update) Several changes, again! The iPodder.desktop file is now generated from within the ebuild using echo, so there's no need to download it. In fact, the only download now is the tarball :) Also, I redid the unicode check. This BETTER work! Instead of trying to filter what I wanted using sed, I did a crude search with grep (which changes a dependancy). I simply grep for "+unicode" and then test to see if the result is nothing. If it's nothing, it means the match failed, so then I know unicode was not used :) So PLEASE tell me this works! haha. I still have one issue left. I don't know exactly what version of wxpython to depend on. The README isn't real clear. I'm using wxpython-2.6.0.0 which is only available to ~x86 users so the ebuild is set to require wxpython-2.4.2.4. But, if iPodder requires wxpython-2.6, then I need to adjust the ebuild again. Some would complain but, oh well.
Probably you want to make use of make_desktop_entry function in eutils eclass instead of echo the desktop file from within the ebuild manually.
This ebuild is almost there, keep up the good work! The unicode check still fails for me. This is because rather than add unicode to make.conf I used a temporary flag on the command line: bash# USE=unicode emerge wxGTK wxpython So when you run 'emerge -pv wxpython' my output is: [ebuild R ] dev-python/wxpython-2.6.0.0-r1 +gtk +gtk2 +jpeg +opengl +png +tiff -unicode* 0 kB Note the asterix after -unicode, this means that it is currently compiled with unicode support, but based on the USE flags now it will be recompiled without it. So the check should really grep for "unicode" and continue if it is "+unicode" or "-unicode*". Else die.
Actually there's built_with_use function to test the flag used to compile other packages. Always in eutils eclass. Please also see versionator eclass instead of hardcoding versions in MY_* variables, and remove the src_unpack function (if you just extract the tarball, the default function is enough). Also use dodir to create directories and dobin/do* to install files, don't copy them by hand.
ARG! after I just wrote emerge_with_use_flag()! I'll use it, but I'm leaving my function in until someone tells me built_with_use() works. versionator seems quite complicated, hmm. I'll try... I had removed src_unpack() and the ebuild stated failing. I just tried removing it again, and it seems to work. Confused, but I'll take it out. I've started using dodir, but I don't know how dobin works. It seems to copy the binary/script as-is, and I want to either rename copy /opt/iPodder/ipodder.sh to /usr/bin/ipodder or link /opt/iPodder/ipodder.sh to /usr/bin/ipodder. Linking is the method described in the readme, but I wasn't sure how links are merged into /. I don't want to do any post_install because those files don't show up in the files list of the package. Oh, make_desktop_entry() keeps bombing on me. make_desktop_entry "usr/bin/ipodder" ${PN} "${PN}.png" "media;sound" ||die "make_desktop_entry failed!" gives me... >>> Install iPodder-2.0_rc3-r4 into /var/tmp/portage/iPodder-2.0_rc3-r4/image/ category media-sound /usr/portage/eclass/eutils.eclass: line 880: /var/tmp/portage/iPodder-2.0_rc3-r4/temp/usr/bin/ipodder-iPodder.desktop: No such file or directory install: cannot stat `/var/tmp/portage/iPodder-2.0_rc3-r4/temp/usr/bin/ipodder-iPodder.desktop': No such file or directory (In reply to comment #21) > Actually there's built_with_use function to test the flag used to compile > other packages. Always in eutils eclass. > Please also see versionator eclass instead of hardcoding versions in MY_* > variables, and remove the src_unpack function (if you just extract the > tarball, the default function is enough). > > Also use dodir to create directories and dobin/do* to install files, don't > copy them by hand.
If you need to rename use newbin. Please read the documentation about writing ebuilds, because there you can find both the description of do*/new* functions and the documentation for make_desktop_entry.
Created attachment 61066 [details] iPodder-2.0_rc3-r4.ebuild (Update) iPodder-2.0_rc3-r4.ebuild (Update) I'm trying built_with_use() for the unicode test, but I left my custom function in there just incase. I switched from cp to do* but I had to create newdirinst (something like that) to copy a directory recursively but under a new name. Also, I could not get make_desktop_entry() to work.
Created attachment 61232 [details] iPodder-2.0_rc3-r5.ebuild (Update) iPodder-2.0_rc3-r5.ebuild (Update) * Retired emerged_with_use_flag(). * Removed grep as a dependancy. * Added sys-libs/db-4.2.52_p2 (Berkeley DB) as a dependancy. * Added berkdb USE flag test for dev-lang/python. * Added useflag_test() to clean up pkg_setup(). * Modified wxpython dependancy to dev-python/wxpython-2.6.0.0 * Got make_desktop_entry() to work! Note Some users are having issues with iPodder needing BerkeleyDB support in Python. I'm not sure which version is required for iPodder, yet. Hopefully, with this ebuild I'll get closer to an answer. Let me know how it turns out!
Created attachment 61233 [details] iPodder-2.0_rc3-r6.ebuild (Update) iPodder-2.0_rc3-r6.ebuild (Update) * Re-added sys-apps/grep as a dependancy. * Added code to test dev-lang/python for Berkeley 4.2 support. The USE flag does not prove this, so I had to add an extra test. Basically, this is the test: ldd /usr/lib/python2.3/lib-dynload/_bsddb.so|grep libdb-4.2.so.
Created attachment 61349 [details] iPodder-2.0_rc3-r7.ebuild (Update) iPodder-2.0_rc3-r7.ebuild (Update) * Added linked_against() which tests a binary to see if it's linked against the specified library. It's used to test python for BerkeleyDB 4.2 support, and replaces that part of code in pkg_setup(). * pkg_setup() now detects the current version of python and tests it for db4.2, instead of testing only python-2.3. * Added hack_clean_pyc() to remove *.pyc files. Otherwise, iPodder won't run on Python-2.4 * Added hack_adj_perms() to adjust permissions on files as needed. Currently, int's only used to modify the permission of /opt/iPodder/ipodder/players.py so that users can read it. Otherwise, iPodder can't load the module if using Python-2.4. With Python-2.3, it used players.pyc, so it the incorrect file permission was never a problem. So this ebuild should allow iPodder to run in Python-2.3 and Python-2.4 environments. I don't know if it will fix the bsddb issues.
Created attachment 61528 [details] iPodder-2.0_rc3-r8.ebuild (Update) iPodder-2.0_rc3-r8.ebuild (Update) * Adds the 26_selector_patch_all__.diff patch, which adds the commands: import wxversion wxversion.select("2.6-unicode") to all imports of wx. That way, if the user has both wxpython-2.4 and wxpython-2.6, 2.6 is used. I can't really test the patch because I no longer have wxpython-2.4.
Created attachment 61529 [details, diff] 26_selector_patch_all__.diff (New Patch) 26_selector_patch_all__.diff (New Patch) A patch that tries to ensure wxpython-2.6 gets imported. Useful when both wxpython-2.4 and 2.6 are installed. Save this patch in files/2.0_rc3-r8/
Created attachment 61918 [details] iPodder-2.0_rc4.ebuild (New Ebuild) iPodder-2.0_rc4.ebuild (New Ebuild) * Ebuild for rc4 release. It's not at the sourceforge mirror yet, so an alternate url was used. * Removed hack_clean_pyc() because rc4 comes without the *.pyc files. Note: Requires the 26_selector_patch_all_.diff patch stored at files/2.0_rc4-r0/
Created attachment 62714 [details] iPodder-2.0_rc4.ebuild (updated) The python check on my machine failed (cut didn't work due to ls returning a 1 digit date -- July 6 -- rather than a 2 digit date). I switched it to use the python.eclass instead, which is probably preferable. Thanks for writing this ebuild! I'd love to see a "podcatching" client in the portage tree!
Thank you! the python eclass works great. As you can see, I'm a developer wannabe :) I have a question, when updating an ebuild, should I NOT increase the revision number? I noticed that's what you did, and I've been wondering for a while if this r1, r2, etc is not needed. I'm starting to think that only applies to portage, not ebuild in bugzilla.
when will this be merged into the portage tree? its seriously lacking a podcasting client
That's out of my control. I've been updating the ebuild here for a while, but I don't have the authority to put it in portage :(
Thanks for the ebuild. Commited to portage under package.mask as there are some issues I noticed that were pretty odd.
Please comment on the issues. That way, I could at least try to correct them.
Can I suggest that we add an -AMD64 keyword to this eBuild? 64Bit CPU users love podcasts too!
Trying to make this work on an AMD64 box I get the following error: sal@imelda iPodder $ [<class 'ipodder.players.iTunes'>, <class 'ipodder.players.WindowsMedia'>, <class 'ipodder.players.XMMSPlayer'>, <class 'ipodder.players.NoPlayer'>] Traceback (most recent call last): File "iPodderGui.py", line 3159, in ? main() File "iPodderGui.py", line 3153, in main myApp = iPodderGui(ipodder) File "iPodderGui.py", line 576, in __init__ wx.App.__init__(self, False, None) File "/usr/lib/python2.3/site-packages/wx-2.6-gtk2-unicode/wx/_core.py", line 7473, in __init__ self._BootstrapApp() File "/usr/lib/python2.3/site-packages/wx-2.6-gtk2-unicode/wx/_core.py", line 7125, in _BootstrapApp return _core_.PyApp__BootstrapApp(*args, **kwargs) SystemError: wxEntryStart failed, unable to initialize wxWidgets! (Is DISPLAY set properly?) /usr/bin/ipodder: line 4: 22191 Segmentation fault python iPodderGui.py [2]- Exit 139 ipodder ortage 2.0.51.22-r2 (default-linux/amd64/2004.3, gcc-3.4.3, glibc-2.3.5-r0, 2.6.11-gentoo-r11 x86_64) ================================================================= System uname: 2.6.11-gentoo-r11 x86_64 AMD Athlon(tm) 64 Processor 3500+ Gentoo Base System version 1.6.13 dev-lang/python: 2.3.5 sys-apps/sandbox: 1.2.11 sys-devel/autoconf: 2.13, 2.59-r6 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.5 sys-devel/binutils: 2.15.92.0.2-r10 sys-devel/libtool: 1.5.18-r1 virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="amd64" AUTOCLEAN="yes" CBUILD="x86_64-pc-linux-gnu" CFLAGS="-march=k8 -O2 -pipe" CHOST="x86_64-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/X11/app-defaults /etc/X11/gdm /etc/X11/rstart /etc/X11/xdm /etc/gconf /etc/gnome-vfs-2.0 /etc/hotplug /etc/init.d /etc/logrotate.d /etc/modules.autoload.d /etc/pam.d /etc/sane.d /etc/sound /etc/ssl /etc/ssl/postfix /etc/terminfo /usr/kde /etc/env.d" CXXFLAGS="-march=k8 -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distlocks sandbox sfperms strict" GENTOO_MIRRORS="http://gentoo.ITDNet.net/gentoo http://ftp.linux.ee/pub/gentoo/distfiles/ ftp://trumpetti.atm.tut.fi/gentoo/ http://mir.zyrianes.net/gentoo/ ftp://ftp.tu-clausthal.de/pub/linux/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo ftp://linux.rz.ruhr-uni-bochum.de/gentoo-mirror/ ftp://ftp.uni-erlangen.de/pub/mirrors/gentoo ftp://ftp.wh2.tu-dresden.de/pub/mirrors/gentoo ftp://ftp6.uni-muenster.de/pub/linux/distributions/gentoo http://ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/ ftp://ftp.gentoo.mesh-solutions.com/gentoo/ http://ftp.rhnet.is/pub/gentoo/ http://ftp.heanet.ie/pub/gentoo/ ftp://ftp.heanet.ie/pub/gentoo/ ftp://ftp.easynet.nl/mirror/gentoo/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo ftp://ftp.snt.utwente.nl/pub/os/linux/gentoo http://ftp.du.se/pub/os/gentoo http://mirror.pudas.net/gentoo http://gentoo.mirror.solnet.ch ftp://mirrors.blueyonder.co.uk/mirrors/gentoo http://www.mirrorservice.org/sites/www.ibiblio.org/gentoo/ ftp://ftp.mirrorservice.org/sites/www.ibiblio.org/gentoo/" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.fr.gentoo.org/gentoo-portage" USE="amd64 3dnowex X Xaw3d a52 aac aalib alsa apache2 arts artswrappersuid asterisk audiofile avi bash-completion berkdb bitmap-fonts bootsplash cdda cddb cdio cdparanoia cdr cdrom codecs cracklib css csv cups curl dga directfb dpms dv dvd dvdr dvdread emacs emoticon encode esd ethereal exif fame fbcon festival ffmpeg firefox flac flash fpx freetype gd ggi gif gimp gnome gnomedb gnuplot gnustep gnutls gphoto2 gpm graphviz gs gtk gtk2 gtkhtml haskell httpd icq icu image imagemagick imap imlib innodb ithreads jabber jack java jbig jikes jit joystick jpeg jpeg2k justify jython kde lcms libcaca libwww lirc live lzo lzw mad matroska mng mozcalendar mozdevelop mozilla mozsvg mozxmlterm mp3 mpeg mplayer msn msql mssql multilib music mysql mythtv nagios-dns nagios-game nagios-ntp nagios-ping nagios-ssh nas ncurses net network nls nntp no-old-linux nptl oav objc ogg oggvorbis openal opengl oss pam pam_chroot pam_console pam_timestamp pda perl php pic png pnp posix postgres postgresql povray python qt quicktime rar readline real recode remix remote resperl rogue rss rtc ruby samba scanner sdl sendfile serial shorten sms smtp sndfile soap sockets socks5 sounds sox spamassassin speedo speex spell spl sql sqlite3 ssl stream streamzap subversion svg tcpd tga theora threads tiff truetype truetype-fonts underscores unicode usb v4l v4l2 vcd vcdimager visualization vlm vmdbmysql vnc voice vorbis web webdav wifi wmf wxwindows xanim xchatdccserver xchattext xemacs xface xfs xine xinerama xml xml2 xmlrpc xmms xosd xpm xprint xscreensaver xslt xv xvid xvmc yahoo yp yv12 zaptel zeo zeroconf zlib zvbi userland_GNU kernel_linux elibc_glibc" Unset: ASFLAGS, CTARGET, LANG, LC_ALL, LDFLAGS, LINGUAS, MAKEOPTS
Sounds like a problem with wxPython/wxGTK on AMD64, not really an iPodder problem. I've search the forums but haven't found anything. Uh, I don't know what to tell you. I guess you can try my podpooper (http://sourceforge.net/projects/podpooper).