diff --git a/net/transmission/Makefile b/net/transmission/Makefile new file mode 100644 index 0000000000..df74fd566e --- /dev/null +++ b/net/transmission/Makefile @@ -0,0 +1,122 @@ +# +# Copyright (C) 2009-2014 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=transmission +PKG_VERSION:=2.84 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=http://download-origin.transmissionbt.com/files/ http://mirrors.m0k.org/transmission/files +PKG_MD5SUM:=411aec1c418c14f6765710d89743ae42 + +PKG_FIXUP:=autoreconf +PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/package.mk + +define Package/transmission/template + SUBMENU:=BitTorrent + SECTION:=net + CATEGORY:=Network + TITLE:=A free, lightweight BitTorrent client + URL:=http://www.transmissionbt.com + MAINTAINER:=Cezary Jackiewicz +endef + +define Package/transmission-daemon + $(call Package/transmission/template) + DEPENDS:=+libcurl +libopenssl +libpthread +libevent2 +librt + MENU:=1 +endef + +define Package/transmission-cli + $(call Package/transmission/template) + DEPENDS:=transmission-daemon +endef + +define Package/transmission-remote + $(call Package/transmission/template) + DEPENDS:=+libcurl +libopenssl +libpthread +libevent2 +librt +endef + +define Package/transmission-web + $(call Package/transmission/template) + DEPENDS:=transmission-daemon +endef + + +define Package/transmission-daemon/description + Transmission is a simple BitTorrent client. + It features a very simple, intuitive interface + on top on an efficient, cross-platform back-end. + This package contains the daemon itself. +endef + +define Package/transmission-cli/description + CLI utilities for transmission. +endef + +define Package/transmission-remote/description + CLI remote interface for transmission. +endef + +define Package/transmission-web/description + Webinterface resources for transmission. +endef + +define Package/transmission-daemon/conffiles +/etc/config/transmission +endef + +CONFIGURE_VARS += \ + LIBEVENT_LIBS="$(STAGING_DIR)/usr/lib/libevent-2.0.so.5" + +CONFIGURE_ARGS += \ + --enable-daemon \ + --enable-cli \ + --without-gtk \ + --enable-largefile \ + --enable-lightweight + +MAKE_FLAGS += \ + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" + +define Package/transmission-daemon/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/transmission-daemon $(1)/usr/bin/ + $(INSTALL_DIR) $(1)/etc/init.d/ + $(INSTALL_BIN) files/transmission.init $(1)/etc/init.d/transmission + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) files/transmission.config $(1)/etc/config/transmission +endef + +define Package/transmission-cli/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/transmission-cli \ + $(PKG_INSTALL_DIR)/usr/bin/transmission-create \ + $(PKG_INSTALL_DIR)/usr/bin/transmission-edit \ + $(PKG_INSTALL_DIR)/usr/bin/transmission-show \ + $(1)/usr/bin/ +endef + +define Package/transmission-remote/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/transmission-remote $(1)/usr/bin/ +endef + +define Package/transmission-web/install + $(INSTALL_DIR) $(1)/usr/share/transmission + $(CP) $(PKG_INSTALL_DIR)/usr/share/transmission/web $(1)/usr/share/transmission/ +endef + +$(eval $(call BuildPackage,transmission-daemon)) +$(eval $(call BuildPackage,transmission-cli)) +$(eval $(call BuildPackage,transmission-remote)) +$(eval $(call BuildPackage,transmission-web)) diff --git a/net/transmission/files/transmission.config b/net/transmission/files/transmission.config new file mode 100644 index 0000000000..a8fd56d9b1 --- /dev/null +++ b/net/transmission/files/transmission.config @@ -0,0 +1,71 @@ +config transmission + option enabled 0 + option config_dir '/tmp/transmission' + #option user 'nobody' + option alt_speed_down 50 + option alt_speed_enabled false + option alt_speed_time_begin 540 + option alt_speed_time_day 127 + option alt_speed_time_enabled false + option alt_speed_time_end 1020 + option alt_speed_up 50 + option bind_address_ipv4 '0.0.0.0' + option bind_address_ipv6 '::' + option blocklist_enabled false + option blocklist_url '' + option cache_size_mb 2 + option dht_enabled true + option download_dir '/tmp/transmission/done' + option download_queue_enabled true + option download_queue_size 4 + option encryption 1 + option idle_seeding_limit 30 + option idle_seeding_limit_enabled false + option incomplete_dir '/tmp/transmission/incomplete' + option incomplete_dir_enabled false + option lazy_bitfield_enabled true + option lpd_enabled false + option message_level 1 + option peer_congestion_algorithm '' + option peer_limit_global 240 + option peer_limit_per_torrent 60 + option peer_port 51413 + option peer_port_random_high 65535 + option peer_port_random_low 49152 + option peer_port_random_on_start false + option peer_socket_tos 'default' + option pex_enabled true + option port_forwarding_enabled true + option preallocation 1 + option prefetch_enabled true + option queue_stalled_enabled true + option queue_stalled_minutes 30 + option ratio_limit 2.0000 + option ratio_limit_enabled false + option rename_partial_files true + option rpc_authentication_required false + option rpc_bind_address '0.0.0.0' + option rpc_enabled true + option rpc_password '' + option rpc_port 9091 + option rpc_url '/transmission/' + option rpc_username '' + option rpc_whitelist '127.0.0.1,192.168.1.*' + option rpc_whitelist_enabled true + option scrape_paused_torrents_enabled true + option script_torrent_done_enabled false + option script_torrent_done_filename '' + option seed_queue_enabled false + option seed_queue_size 10 + option speed_limit_down 100 + option speed_limit_down_enabled false + option speed_limit_up 20 + option speed_limit_up_enabled false + option start_added_torrents true + option trash_original_torrent_files false + option umask 18 + option upload_slots_per_torrent 14 + option utp_enabled true + option scrape_paused_torrents true + option watch_dir_enabled false + option watch_dir '' diff --git a/net/transmission/files/transmission.init b/net/transmission/files/transmission.init new file mode 100644 index 0000000000..669e710ec3 --- /dev/null +++ b/net/transmission/files/transmission.init @@ -0,0 +1,111 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2010-2012 OpenWrt.org + +START=99 + +LIST_SEP=" +" + +append_params() { + local p; local v; local s="$1"; shift + for p in $*; do + config_get v "$s" "$p" + IFS="$LIST_SEP" + for v in $v; do + [ -n "$v" ] && ( + echo "\""$p"\": "$v"," | sed -e 's|_|-|g' >> $config_file + ) + done + unset IFS + done +} + +append_params_quotes() { + local p; local v; local s="$1"; shift + for p in $*; do + config_get v "$s" "$p" + IFS="$LIST_SEP" + for v in $v; do + [ -n "$v" ] && ( + echo -n "\""$p | sed -e 's|/|\\/|g;s|_|-|g' >> $config_file; \ + echo "\": \""$v"\"," >> $config_file + ) + done + unset IFS + done +} + +section_enabled() { + config_get_bool enabled "$1" 'enabled' 0 + [ $enabled -gt 0 ] +} + +start_instance() { + local s="$1" + local user + + section_enabled "$section" || return 1 + + config_get config_dir "$s" 'config_dir' '/var/etc/transmission' + config_get user "$s" 'user' + + config_file="$config_dir/settings.json" + [ -d $config_dir ] || { + mkdir -m 0755 -p "$config_dir" + touch $config_file + [ -z "$user" ] || chown -R $user $config_dir + } + + echo "{" > $config_file + + append_params "$s" \ + alt_speed_down alt_speed_enabled alt_speed_time_begin alt_speed_time_day \ + alt_speed_time_enabled alt_speed_time_end alt_speed_up blocklist_enabled \ + cache_size_mb download_queue_enabled download_queue_size \ + dht_enabled encryption idle_seeding_limit idle_seeding_limit_enabled \ + incomplete_dir_enabled lazy_bitfield_enabled lpd_enabled message_level \ + peer_limit_global peer_limit_per_torrent peer_port \ + peer_port_random_high peer_port_random_low peer_port_random_on_start \ + pex_enabled port_forwarding_enabled preallocation prefetch_enabled \ + ratio_limit ratio_limit_enabled rename_partial_files rpc_authentication_required \ + rpc_enabled rpc_port rpc_whitelist_enabled queue_stalled_enabled \ + queue_stalled_minutes scrape_paused_torrents_enabled script_torrent_done_enabled \ + seed_queue_enabled seed_queue_size \ + speed_limit_down speed_limit_down_enabled speed_limit_up \ + speed_limit_up_enabled start_added_torrents trash_original_torrent_files \ + umask upload_slots_per_torrent utp_enabled scrape_paused_torrents \ + watch_dir_enabled + + append_params_quotes "$s" \ + blocklist_url bind_address_ipv4 bind_address_ipv6 download_dir incomplete_dir \ + peer_congestion_algorithm peer_socket_tos rpc_bind_address rpc_password rpc_url \ + rpc_username rpc_whitelist script_torrent_done_filename watch_dir + + echo "\""invalid-key"\": false" >> $config_file + echo "}" >> $config_file + + SERVICE_UID="$user" \ + service_start /usr/bin/transmission-daemon -g $config_dir +} + +stop_instance() { + local s="$1" + local user + + section_enabled "$section" || return 1 + + config_get user "$s" 'user' + + SERVICE_UID="$user" \ + service_stop /usr/bin/transmission-daemon +} + +start() { + config_load 'transmission' + config_foreach start_instance 'transmission' +} + +stop() { + config_load 'transmission' + config_foreach stop_instance 'transmission' +} diff --git a/net/transmission/patches/010_libtransmission_fallocate64_eglibc.patch b/net/transmission/patches/010_libtransmission_fallocate64_eglibc.patch new file mode 100644 index 0000000000..d4f82fc2cd --- /dev/null +++ b/net/transmission/patches/010_libtransmission_fallocate64_eglibc.patch @@ -0,0 +1,12 @@ +--- a/libtransmission/fdlimit.c 2014-07-01 20:08:59.000000000 +0300 ++++ b/libtransmission/fdlimit.c 2014-07-13 13:30:17.000000000 +0300 +@@ -22,7 +22,8 @@ + #include + #endif + +-#ifdef HAVE_FALLOCATE64 ++/* no need to define fallocate64 in glibc/eglibc case */ ++#if defined(__UCLIBC__) && (HAVE_FALLOCATE64) + /* FIXME can't find the right #include voodoo to pick up the declaration.. */ + extern int fallocate64 (int fd, int mode, uint64_t offset, uint64_t len); + #endif diff --git a/net/transmission/patches/020-use-internal-miniupnp.patch b/net/transmission/patches/020-use-internal-miniupnp.patch new file mode 100644 index 0000000000..cf78567957 --- /dev/null +++ b/net/transmission/patches/020-use-internal-miniupnp.patch @@ -0,0 +1,11 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -251,7 +251,7 @@ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([#include ], + [struct UPNPDev dev;])], +- [upnp_version="unknown"], ++ [upnp_version="none"], + [upnp_version="none"] + ) +