freebsd-ports/ports-mgmt/portscout/Makefile
Kubilay Kocak 585f894f1c ports-mgmt/portscout: Loop through all PyPI files
While processing Issue 206746 [1] for a security update to
security/py-rsa (For versions < 3.3), it was noticed that Portscout
had not identified the the newer version, released on 2016-01-13.

Investigation revealed that the PyPI SiteHandler in Portscout only
processed the first url/filename returned by PyPI, which in many cases
is not a tar.gz, the default EXTRACT_SUFFIX for source distribution
(sdist) files:

[py-rsa] VersionCheck()
[py-rsa] Checking site: https://pypi.python.org/packages/source/r/rsa/
Does site handler exist ... Yes
(Portscout::SiteHandler::PyPI) GET https://pypi.python.org/pypi/rsa/json
(Portscout::SiteHandler::PyPI) GET success: 200 Filename: rsa-3.3-py2.py3-none-any.whl
FindNewest: Checking rsa-3.3-py2.py3-none-any.whl ... against port DISTFILES.
FindNewest: Checking DISTFILE ... rsa-3.1.4.tar.gz (ver: 3.1.4, sufx: .tar.gz)
[py-rsa] Done

This change backports a commit [1] made to Portroach which adds a loop to
enumerate all URLs/filenames in the PyPI JSON response, not just the
first.

[1] e93b8331f6

PR:		206746 [1]
Obtained from:	https://github.com/jasperla/portroach
2016-02-04 08:48:40 +00:00

117 lines
4.2 KiB
Makefile

# Created by: Shaun Amott <shaun@inerd.com>
# $FreeBSD$
PORTNAME= portscout
PORTVERSION= 0.8.1
PORTREVISION= 7
CATEGORIES= ports-mgmt
MASTER_SITES= http://mirror.inerd.com/FreeBSD/distfiles/${PORTNAME}/ \
http://www.atarininja.org/~wxs/distfiles/ \
http://www.inerd.com/software/${PORTNAME}/
MAINTAINER= koobs@FreeBSD.org
COMMENT= Tool to scan for new versions of FreeBSD ports
LICENSE= BSD2CLAUSE
RUN_DEPENDS= p5-DBI>=0:${PORTSDIR}/databases/p5-DBI \
p5-Proc-Queue>=0:${PORTSDIR}/devel/p5-Proc-Queue \
p5-Net>=0:${PORTSDIR}/net/p5-Net \
p5-URI>=0:${PORTSDIR}/net/p5-URI \
p5-XML-XPath>=0:${PORTSDIR}/textproc/p5-XML-XPath \
p5-MIME-Lite>=0:${PORTSDIR}/mail/p5-MIME-Lite \
p5-libwww>=0:${PORTSDIR}/www/p5-libwww \
p5-JSON>0:${PORTSDIR}/converters/p5-JSON
OPTIONS_DEFINE= DOCS HTTPS
OPTIONS_DEFAULT= HTTPS PGSQL
OPTIONS_MULTI= DATABASE
OPTIONS_MULTI_DATABASE= SQLITE PGSQL
DATABASE_DESC= Database Backends
USES= perl5 shebangfix
NO_BUILD= yes
SHEBANG_FILES= ${WRKSRC}/portscout.pl
PORTDOCS= UPDATING portscout-portconfig.txt xml-datasrc-example.xml
HTTPS_RUN_DEPENDS= p5-LWP-Protocol-https>=0:${PORTSDIR}/www/p5-LWP-Protocol-https
SQLITE_USES= sqlite
SQLITE_RUN_DEPENDS= p5-DBD-SQLite>=0:${PORTSDIR}/databases/p5-DBD-SQLite
PGSQL_USES= pgsql
PGSQL_RUN_DEPENDS= p5-DBD-Pg>=0:${PORTSDIR}/databases/p5-DBD-Pg
.include <bsd.port.options.mk>
pre-everything::
.if ${PORT_OPTIONS:MSQLITE}
@${ECHO_MSG} "+-------------------------------------------------------------+"
@${ECHO_MSG} "| Warning! although SQLite is supported, portscout will only |"
@${ECHO_MSG} "| operate in non-forking mode with this database backend. It |"
@${ECHO_MSG} "| is therefore recommended only for use with light workloads. |"
@${ECHO_MSG} "+-------------------------------------------------------------+"
.endif
post-extract:
@${CP} ${FILESDIR}/files-Portscout-SiteHandler-GitHub.pm ${WRKSRC}/Portscout/SiteHandler/GitHub.pm
@${CP} ${FILESDIR}/files-Portscout-SiteHandler-PyPI.pm ${WRKSRC}/Portscout/SiteHandler/PyPI.pm
pre-install:
.if ${PORT_OPTIONS:MSQLITE}
@${REINPLACE_CMD} 's/^\([^#]*DBI:Pg.*\)$$/#\1/g' ${WRKSRC}/portscout.conf
@${REINPLACE_CMD} 's/^#\(.*DBI:SQLite.*\)$$/\1/g' ${WRKSRC}/portscout.conf
.endif
@${REINPLACE_CMD} -e "s#^\(templates .*\)/etc#\1/share#" \
-e "s#^prefix\( *= *\).*#prefix\1${PREFIX}#" \
${WRKSRC}/portscout.conf
@${REINPLACE_CMD} -e "s#^\(.*PREFIX.*=> *\)'.*'#\1'${PREFIX}'#" \
${WRKSRC}/Portscout/Const.pm
@${MV} ${WRKSRC}/docs/*.* ${WRKSRC}
do-install:
@${MKDIR} ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout
@${MKDIR} ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/DataSrc
@${MKDIR} ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/SiteHandler
@${MKDIR} ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/SQL
${INSTALL_SCRIPT} ${WRKSRC}/Portscout/*.pm ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/
${INSTALL_SCRIPT} ${WRKSRC}/Portscout/DataSrc/*.pm ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/DataSrc/
${INSTALL_SCRIPT} ${WRKSRC}/Portscout/SiteHandler/*.pm ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/SiteHandler/
${INSTALL_SCRIPT} ${WRKSRC}/Portscout/SQL/*.pm ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout/SQL/
${INSTALL_SCRIPT} ${WRKSRC}/Portscout.pm ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}/Portscout.pm
${INSTALL_SCRIPT} ${WRKSRC}/portscout.pl ${STAGEDIR}${PREFIX}/bin/portscout
${INSTALL_DATA} ${WRKSRC}/portscout.pod ${STAGEDIR}${PREFIX}/${SITE_PERL_REL}
pod2man ${WRKSRC}/portscout.pod ${WRKSRC}/portscout.1
${INSTALL_MAN} ${WRKSRC}/portscout.1 ${STAGEDIR}${MAN1PREFIX}/man/man1/
@${MKDIR} ${STAGEDIR}${DATADIR}/templates
cd ${WRKSRC}/templates \
&& ${INSTALL_DATA} * ${STAGEDIR}${DATADIR}/templates
@${MKDIR} ${STAGEDIR}${DATADIR}/sql
cd ${WRKSRC}/sql && ${INSTALL_DATA} *.sql ${STAGEDIR}${DATADIR}/sql
${INSTALL_DATA} ${WRKSRC}/portscout.conf ${STAGEDIR}${PREFIX}/etc/portscout.conf.sample
.if ${PORT_OPTIONS:MDOCS}
@${MKDIR} ${STAGEDIR}${DOCSDIR}
. for f in ${PORTDOCS}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR}
. endfor
.endif
test:
${PERL} ${WRKSRC}/t/00-use.t
${PERL} ${WRKSRC}/t/01-vercompare.t
.if ${PORT_OPTIONS:MSQLITE}
${PERL} ${WRKSRC}/t/10-sqlite.t
#.else
# ${PERL} ${WRKSRC}/10-postgresql.t
.endif
.include <bsd.port.mk>