[new-port] JDownloader
Bernhard Fröhlich
decke at bluelife.at
Sun Jul 1 18:45:31 UTC 2012
On So., 1. Jul. 2012 20:09:09 CEST, Fernando Apesteguía <fernando.apesteguia at gmail.com> wrote:
> On Sun, Jul 1, 2012 at 7:44 PM, Bernhard Fröhlich <decke at bluelife.at>
> wrote:
> > On So., 1. Jul. 2012 19:32:58 CEST, Fernando Apesteguía
> > <fernando.apesteguia at gmail.com> wrote:
> >
> > > Hi all,
> > >
> > > I have a preliminary version of a port for JDownloader[1] since it
> > > seems to be a wanted port[2]
> > >
> > > Here is the Makefile:
> > >
> > > -----------------------------------------------------------------------
> > > # New ports collection makefile for: jdownloader
> > > # Date created: Sun Jul 1 2012
> > > # Whom: Fernando Apesteguia
> > > <fernando.apesteguia at gmail.com> #
> > > # $FreeBSD$
> > >
> > > PORTNAME= jdownloader
> > > PORTVERSION= 1.0
> > > CATEGORIES= java ftp
> > > MASTER_SITES= http://212.117.163.148/
> > > DISTNAME= jd.sh
> > > EXTRACT_SUFX=
> > >
> > > MAINTAINER= fernando.apesteguia at gmail.com
> > > COMMENT= Download management for one-click-hosters
> > >
> > > RUN_DEPENDS= ${LOCALBASE}/bin/java:${PORTSDIR}/java/diablo-jdk16
> > > RUN_DEPENDS+= ${LOCALBASE}/bin/wget:${PORTSDIR}/ftp/wget
> > >
> > > USE_JAVA= yes
> > > JAVA_VERSION= 1.6+
> > > NO_BUILD= yes
> > >
> > > WRKSRC= ${WRKDIR}
> > >
> > > do-extract:
> > > @${MKDIR} ${WRKDIR}
> > > @${CP} ${DISTDIR}/jd.sh ${WRKSRC}
> > >
> > > do-install:
> > > @${MKDIR} ${PREFIX}/${PORTNAME}
> > > @${INSTALL_SCRIPT} ${WRKSRC}/jd.sh ${PREFIX}/bin
> > >
> > > post-install:
> > > @${ECHO_MSG} ""
> > > @${ECHO_MSG}
> > > "*************************************************************************"
> > > @${ECHO_MSG} JDownloader will update itself to the latest version
> > > when it runs for the @${ECHO_MSG} first time. Please run
> > > ${LOCALBASE}/bin/jd.sh @${ECHO_MSG} to complete the installation
> > > @${ECHO_MSG}
> > > "*************************************************************************"
> > > @${ECHO_MSG} "" @${CAT} ${PKGMESSAGE}
> > >
> > > .include <bsd.port.mk>
> > > -----------------------------------------------------------------------
> > >
> > > The port just needs a simple patch file (patch-jd.sh):
> > >
> > > -----------------------------------------------------------------------
> > > --- jd.sh.orig 2012-07-01 14:23:07.000000000 +0200
> > > +++ jd.sh 2012-07-01 14:24:15.000000000 +0200
> > > @@ -1,4 +1,4 @@
> > > -#!/bin/bash
> > > +#!/bin/sh
> > > #JD Installer/Starter Version 0.2
> > > #by Jiaz(JD-Team), jiaz at jdownloader.org
> > > #You need at least:
> > > -----------------------------------------------------------------------
> > >
> > > The jd.sh runs fine with sh(1) so there is no need for a new run
> > > dependency for bash(1).
> > >
> > > The port installs one single file (jd.sh). This script when executed,
> > > checks for the presence of the JDownloader jar files under the ~/.jd
> > > directory. If they don't exist it starts the uploader application and
> > > downloads the latest files. If the files were already present, it
> > > launches the installation and if the installation is already present,
> > > it launches the program.
> > > Uninstalling the port uninstalls the jd.sh file but _not_ the actual
> > > application that might be installed by the users in their respective
> > > home directories. Taking into account that JDownloader can be
> > > installed anyway just by downloading the source I don't suppose this
> > > is a concern. Since the program can act as a server (it installs a
> > > plugin for remote controlling the application similarly to what
> > > transmission torrent does), it shows a message after the
> > > installation.
> > >
> > > I haven't submitted a PR yet, so any suggestions are welcomed.
> > >
> > > Thanks in advance.
> > >
> > > [1] http://jdownloader.org/
> > > [2] http://wiki.freebsd.org/WantedPorts
> >
> > Is there a reason why you explicitly add diablo-jdk16 as runtime
> > dependency? The use_java stuff should be sufficient.
>
> You're right, doesn't seem to be necessary.
>
> >
> > Why have you decided to download and install the jar files on first
> > run of the shellscript? That doesn't sound like a good idea to me
> > because it breaks proper updates, deinstall and creates useless binary
> > packages.
>
> I haven't. jd.sh is provided by the upstream project. The alternative
> is another "nicer" installation program.
FreeBSD portstree is exactly that nicer installer that you are talking about.
> Since this is just a wrapper to do several things and the actual
> software is installed in the user's home directory, I agree we could
> have two different users with two different versions of JDownloader.
> By the way, the jd.sh script tries to update _just the first time_ but
> after that, the user can always look for new versions from inside
> JDownloader (in fact, it checks for new versions from the java code
> every time it runs).
Yeah many projects implement their own update mechanism mostly because windows has no package management. For a FreeBSD user and administrator it should be an seamless integration so that he doesn't need to search for update dialogs or buttons within installed programms. Even fully automated updating is a problem in case of regressions and for major changes in functionality.
So what we need is a port that properly installs the few jar files into system paths and a shellscript that launches a jvm with that jar files. Additionally we should disable the automatic updating stuff. Have a look at other java based ports on how to do that.
> I checked the Fedora 16(?) package for JDownloader and does pretty
> much the same thing.
Yeah, bad habits are spreading easily.
More information about the freebsd-ports
mailing list