debian/0000755000000000000000000000000013353215766007201 5ustar debian/uwsgi-plugin-greenlet-python.prerm.in0000644000000000000000000000220412214577571016427 0ustar #!/bin/sh # prerm script for uwsgi-plugin-greenlet-python # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) for PYVER_DOTLESS in @@available_python_versions_dotless@@; do update-alternatives --quiet \ --remove \ uwsgi-plugin-greenlet-python \ /usr/lib/uwsgi/plugins/greenlet_python${PYVER_DOTLESS}_plugin.so done ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-files/0000755000000000000000000000000012215746244011433 5ustar debian/uwsgi-files/conf/0000755000000000000000000000000012214577571012364 5ustar debian/uwsgi-files/conf/default.ini0000644000000000000000000000404212214577571014511 0ustar # User-made changes in this file will be silently lost, as it is silently # rewrited with upgrade of uwsgi package. # # If you want to change default options of uWSGI daemon, then: # * copy this file somewhere # * add/remove/change options in copied file # * edit /etc/default/uwsgi and change location of inherited configuration # file to path to copied file [uwsgi] # -------------------------- # About %(deb-confnamespace) # -------------------------- # # uWSGI init.d script passes environment variable UWSGI_DEB_CONFNAMESPACE to # started uWSGI daemon, which is recognized as a (fake) option with name # 'deb-confnamespace'. # # 'confnamespace' means 'configuration files namespace'. Namespace is the name # of first directory in relative path to configuration file, but with stripped # suffix 's-enabled'. "Relative path" means "path relative to /etc/uwsgi". # # Example: namespace of '/etc/uwsgi/apps-enabled/site.ini' is 'app'. # --------------------- # About %(deb-confname) # --------------------- # # uWSGI init.d script passes environment variable UWSGI_DEB_CONFNAME to # started uWSGI daemon, which is recognized as a (fake) option with name # 'deb-confname'. # # 'confname' means 'configuration name', which is a filename without # extension of the configuration file. # # Example: name of '/etc/uwsgi/apps-enabled/site.ini' is 'site'. # try to autoload appropriate plugin if "unknown" option has been specified autoload = true # enable master process manager master = true # spawn 2 uWSGI worker processes workers = 2 # automatically kill workers on master's death no-orphans = true # write master's pid in file /run/uwsgi///pid pidfile = /run/uwsgi/%(deb-confnamespace)/%(deb-confname)/pid # bind to UNIX socket at /run/uwsgi///socket socket = /run/uwsgi/%(deb-confnamespace)/%(deb-confname)/socket # set mode of created UNIX socket chmod-socket = 660 # place timestamps into log log-date = true # user identifier of uWSGI processes uid = www-data # group identifier of uWSGI processes gid = www-data debian/uwsgi-files/etc/0000755000000000000000000000000012215746244012206 5ustar debian/uwsgi-files/etc/uwsgi/0000755000000000000000000000000012215746244013344 5ustar debian/uwsgi-files/etc/uwsgi/apps-enabled/0000755000000000000000000000000012215746244015677 5ustar debian/uwsgi-files/etc/uwsgi/apps-enabled/README0000644000000000000000000000065012215746244016560 0ustar Some files found in this directory are processed by uWSGI init.d script as uWSGI configuration files. On system boot for each configuration file new uWSGI daemon instance is started with additional option. Name of this option is based on configuration file extension. Path to configuration files is passed as option value. See more detailed information at: * /usr/share/doc/uwsgi/README.Debian.gz * /etc/default/uwsgi debian/uwsgi-files/etc/uwsgi/apps-available/0000755000000000000000000000000012215746244016225 5ustar debian/uwsgi-files/etc/uwsgi/apps-available/README0000644000000000000000000000032212215746244017102 0ustar This is staging directory for uWSGI configuration files. You should place configuration files here and create soft links to them in /etc/uwsgi/apps-enabled directory. See also /etc/uwsgi/apps-enabled/README. debian/uwsgi-files/init/0000755000000000000000000000000012214577571012402 5ustar debian/uwsgi-files/init/specific_daemon0000644000000000000000000000674512214577571015451 0ustar # This is shell script, (indirectly) sourced by uWSGI init.d script . /usr/share/uwsgi/init/snippets # Return: # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started do_start_specific_daemon() { local RELATIVE_CONFPATH="$@" local CONFFILE="$(absolute_path_to_conffile "$RELATIVE_CONFPATH")" if [ -z "$CONFFILE" ]; then return 2 fi local CONFNAMESPACE="$(extract_confnamespace "$RELATIVE_CONFPATH")" local CONFNAME="$(extract_confname "$RELATIVE_CONFPATH")" local UWSGI_UID="$(extract_id uid "$RELATIVE_CONFPATH")" local UWSGI_GID="$(extract_id gid "$RELATIVE_CONFPATH")" local SPECIFIC_RUNDIR="$(find_specific_rundir "$RELATIVE_CONFPATH")" local PIDFILE="$(find_specific_pidfile "$RELATIVE_CONFPATH")" install -d -o root -g root -m 755 "${UWSGI_RUNDIR}/${CONFNAMESPACE}" install -d -o "$UWSGI_UID" -g "$UWSGI_GID" -m 755 "$SPECIFIC_RUNDIR" start-stop-daemon --start --quiet \ --pidfile "$PIDFILE" \ --exec "$DAEMON" \ --test > /dev/null \ || return 1 local CONFTYPE="$(type_of_conffile "$CONFFILE")" local CONFFILE_OPTION_NAME="$(conffile_option_name "$CONFTYPE")" local INHERITED_TYPE="$(type_of_conffile "$INHERITED_CONFIG")" local INHERITED_OPTION_NAME="$(conffile_option_name "$INHERITED_TYPE")" # Value of an environment variable of form 'UWSGI_' is recognized by uWSGI as # an option value and is available in configuration files. # # Value of (fake) option 'deb-confnamespace' is used in INHERITED inherited # configuration file. UWSGI_DEB_CONFNAMESPACE="$CONFNAMESPACE" \ UWSGI_DEB_CONFNAME="$CONFNAME" \ start-stop-daemon --start --quiet \ --pidfile "$PIDFILE" \ --exec "$DAEMON" \ -- --"${INHERITED_OPTION_NAME}" "${INHERITED_CONFIG}" \ --"${CONFFILE_OPTION_NAME}" "${CONFFILE}" \ --daemonize "/var/log/uwsgi/${CONFNAMESPACE}/${CONFNAME}.log" \ 1> /dev/null 2>&1 \ || return 2 chown_and_chmod_pidfile "$PIDFILE" start-stop-daemon --start --quiet \ --pidfile "$PIDFILE" \ --exec "$DAEMON" \ --test > /dev/null \ && return 2 return 0 } # Return: # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred do_stop_specific_daemon() { local RELATIVE_CONFPATH="$@" local SPECIFIC_RUNDIR="$(find_specific_rundir "$RELATIVE_CONFPATH")" local PIDFILE="$(find_specific_pidfile "$RELATIVE_CONFPATH")" start-stop-daemon --stop --quiet \ --retry=QUIT/30/KILL/5 \ --pidfile "$PIDFILE" \ --name "$NAME" RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 rm -rf "$SPECIFIC_RUNDIR" return "$RETVAL" } # Return: # 0 if daemon has been reloaded # 3 if daemon could not be reloaded do_reload_specific_daemon() { local RELATIVE_CONFPATH="$@" local PIDFILE="$(find_specific_pidfile "$RELATIVE_CONFPATH")" start-stop-daemon --stop --quiet \ --signal=HUP \ --pidfile "$PIDFILE" \ --name "$NAME" RETVAL="$?" # There is no such process, nothing to reload! [ "$RETVAL" = 1 ] && RETVAL=3 return "$RETVAL" } # Return: # 0 if daemon has been reloaded # 3 if daemon could not be reloaded do_force_reload_specific_daemon() { local RELATIVE_CONFPATH="$@" local PIDFILE="$(find_specific_pidfile "$RELATIVE_CONFPATH")" start-stop-daemon --stop --quiet \ --signal=TERM \ --pidfile "$PIDFILE" \ --name "$NAME" RETVAL="$?" # There is no such process, nothing to reload! [ "$RETVAL" = 1 ] && RETVAL=3 return "$RETVAL" } debian/uwsgi-files/init/snippets0000644000000000000000000002276212214577571014203 0ustar # This is shell script, (indirectly) sourced by uWSGI init.d script # uWSGI handles several types of configuration files. # This list contains extensions of configuration files recognized by uWSGI # (in alphabetical order). # # ! After changing of this list, appropriate changes must be made in functions: # * conffile_option_name # * extract_id_from_conffile UWSGI_CONFFILE_TYPES="db ini js json sqlite sqlite3 xml yaml yml" # Regular expression matching any of extension of uWSGI configuration files. # # Made in format of basic regexp and looks like '\(ini\|xml\)': spaces are # replaced with '\|' and whole expression is surrounded with '\(...\)' UWSGI_CONFFILE_TYPES_REGEXP="$(\ echo "$UWSGI_CONFFILE_TYPES" \ | sed -e 's/ /\\|/g' -e 's/^\(.*\)$/\\(\1\\)/g' \ )" # Echo name of uWSGI option for handling of configuration file with given # extension. conffile_option_name() { case "$1" in ini) echo ini ;; json|js) echo json ;; sqlite|sqlite3|db) echo sqlite ;; xml) echo xmlconfig ;; yaml|yml) echo yaml ;; esac } # Extract extension of configuration file from it's path/name. type_of_conffile() { # Configuration file name can contain newline character. # # So one's needed to process and return only last line from configuration # file name. echo "$@" | sed "\$s/^.*${UWSGI_CONFFILE_TYPES_REGEXP}\$/\1/g" | tail -1 } # Get value of user-defined id (specifically, 'uid' or 'gid') ffrom uWSGI # configuration file. # # It parses configuration file $CONFFILE for value of first found "subsection" # $KIND. "Subsection" may be: # * assignment '$KIND =' in INI file # * hash value '"$KIND":' in JSON file # * row of 'uwsgi' table in SQLite3 database where value of first field equals # '$KIND' (value of this subsection is the value of second field of the row) # * tag '<$KIND>' in XML file # * hash value '$KIND:' in YAML file # # Echo found value or empty string if not found. extract_id_from_conffile() { local KIND="$1" shift local CONFFILE="$@" local CONFTYPE="$(type_of_conffile "$CONFFILE")" local ID="" case "$CONFTYPE" in ini) ID="$( grep --max-count=1 "^\s*${KIND}\s*=" "$CONFFILE" \ | sed -e "s/^\s*${KIND}\s*=\s*\(.*\)\s*/\1/g" )" ;; json|js) ID="$( grep --max-count=1 "^\s\+\"${KIND}\"\s*:" "$CONFFILE" \ | sed -e "s/^\s\+\"${KIND}\"\s*:\s*\"\(.*\)\"\s*\(,\|}\)\?\s*$/\1/g" )" ;; sqlite|sqlite3|db) local SQLITE3="/usr/bin/sqlite3" local UWSGI_TABLE="uwsgi" local UWSGI_TABLE_COUNT='' if [ -e "$SQLITE3" ]; then # Check for availability of uWSGI configuration table in database. # # Also check for validity of database (if there will be any errors in # database opening, variable will stay empty). UWSGI_TABLE_COUNT="$( "$SQLITE3" -column -noheader "$CONFFILE" \ "SELECT COUNT(*) FROM sqlite_master WHERE name = '${UWSGI_TABLE}'"\ 2>/dev/null )" fi if [ "x${UWSGI_TABLE_COUNT%% *}" = "x1" ]; then # Get names of first and second fields of uWSGI configuration table. read FIRST_FIELD SECOND_FIELD <<-SQLITE3_OUTPUT $( "$SQLITE3" -line "$CONFFILE" "PRAGMA table_info(${UWSGI_TABLE});" \ | grep '^\s*name\s*=' \ | head -2 \ | sed -e 's/^\s*name\s*=\s*\(.*\)\s*$/\1/g' \ | tr '\n' ' ' ) SQLITE3_OUTPUT # Now, query for user-defined id. local QUERY_ID="SELECT ${SECOND_FIELD} \ FROM ${UWSGI_TABLE} \ WHERE ${FIRST_FIELD} = '${KIND}' \ LIMIT 1" ID="$( "$SQLITE3" -column -noheader "$CONFFILE" \ "$QUERY_ID" \ 2>/dev/null \ )" ID="${ID%% *}" # strip trailing spaces fi ;; xml) ID="$( grep --max-count=1 "<${KIND}>.\+" "$CONFFILE" \ | sed -e "s/.*<${KIND}>\s*\(.*\)\s*<\/${KIND}>.*/\1/g" )" ;; yaml|yml) ID="$( grep --max-count=1 "^\s\+${KIND}\s*:" "$CONFFILE" \ | sed -e "s/^\s\+${KIND}\s*:\s*\(.*\)\s*/\1/g" )" ;; esac echo "$ID" } # Given a configuration file name specification, look for it in uWSGI # configuraton directory. # # Echo relative path to first found configuration file, which conforms to given # specification and has extension from list of known extensions of # configuration files. If no such file was found echo empty string. # # Configuration file specification may consist of: # * configuration namespace and configuration file name delimited by slash # ('app/site') # * configuration file name (just 'site'). Then default configuration namespace # will be used relative_path_to_conffile_with_spec() { local CONFSPEC="$@" local CONFNAMESPACE="$(dirname "$CONFSPEC")" local CONFNAME="$(basename "$CONFSPEC")" if [ "x${CONFNAMESPACE}" = "x." ]; then CONFNAMESPACE="$UWSGI_DEFAULT_CONFNAMESPACE" fi local APPS_CONFDIR="${CONFNAMESPACE}${UWSGI_APPS_CONFDIR_SUFFIX}" local CONFFILE_PATH="" for CONFFILE_EXT in ${UWSGI_CONFFILE_TYPES}; do CONFFILE_PATH="$( find \ "${UWSGI_CONFDIR}/${APPS_CONFDIR}" \ -name "${CONFNAME}.${CONFFILE_EXT}" -a -xtype f \ | head -1 )" if [ -n "$CONFFILE_PATH" ]; then break; fi done if [ -n "$CONFFILE_PATH" ]; then echo "${APPS_CONFDIR}/${CONFNAME}" else echo "" fi } # Given a relative configuration file path, look for it in uWSGI configuration # directory. # # Relative path must consist of name of apps directory and name of # configuration file without extension. Example: 'apps-enabled/site'. # # Echo full path to first found configuration file, which located at given # apps directory (or it's subdirectory) and has extension from list of known # extensions of configuration files. absolute_path_to_conffile() { local RELATIVE_CONFPATH="$@" local APPS_CONFDIR="$(dirname "$RELATIVE_CONFPATH")" local CONFFILE_NAME="$(basename "$RELATIVE_CONFPATH")" local CONFFILE_PATH="" for CONFFILE_EXT in ${UWSGI_CONFFILE_TYPES}; do CONFFILE_PATH="$( find \ "${UWSGI_CONFDIR}/${APPS_CONFDIR}" \ -name "${CONFFILE_NAME}.${CONFFILE_EXT}" -a -xtype f \ | head -1 )" if [ -n "$CONFFILE_PATH" ]; then break; fi done echo "$CONFFILE_PATH" } # Get value of user-defined id (specifically, 'uid' or 'gid') for uWSGI # process. # # It parses configuration file with name $CONFNAME for value of first found # "subsection" $ID_KIND. See 'extract_id_from_conffile' for details. # # If not found, parse $INHERITED_CONFIG (defined in /etc/default/uwsgi), # for value of id. # # Echo found value or 'root' if value wasn't not found. extract_id() { local ID_KIND="$1" shift local RELATIVE_CONFPATH="$@" local CONFFILE="$(absolute_path_to_conffile "$RELATIVE_CONFPATH")" local ID="$(extract_id_from_conffile "$ID_KIND" "$CONFFILE")" if [ -z "$ID" -a -e "$INHERITED_CONFIG" ]; then ID="$(extract_id_from_conffile "$ID_KIND" "$INHERITED_CONFIG")" fi if [ -z "$ID" ]; then ID=root fi echo "$ID" } # Return configuration namespace extracted from relative path of configuration # file. Path should be relative to common uWSGI configuration directory. # # If common uWSGI configuration directory is '/etc/uwsgi' and caller is # interested in namespace of configuration file # '/etc/uwsgi/apps-enabled/site.ini', then 'apps-enabled/site' must be # provided as parameter to this function. # # Namespace is the name of first directory of relative path, but with stripped # suffix 's-enabled'. extract_confnamespace() { local RELATIVE_CONFPATH="$@" local CONFNAMESPACE="$( echo "$RELATIVE_CONFPATH" \ | sed "s|^\([^/]\+\)${UWSGI_APPS_CONFDIR_SUFFIX}/.\+|\1|g" )" # If relative confpath didn't match to namespace pattern, then default # namespace will be used. if [ "x${CONFNAMESPACE}" = "x${RELATIVE_CONFPATH}" ]; then echo "$UWSGI_DEFAULT_CONFNAMESPACE" else echo "$CONFNAMESPACE" fi } # Return configuration file name extracted from relative path of configuration # file. Path should be relative to common uWSGI configuration directory. # # If common uWSGI configuration directory is '/etc/uwsgi' and caller is # interested in namespace of configuration file # '/etc/uwsgi/apps-enabled/site.ini', then 'apps-enabled/site' must be # provided as parameter to this function. extract_confname() { local RELATIVE_CONFPATH="$@" echo "$(basename "$RELATIVE_CONFPATH")" } # Location of /run subdirectory for specific uWSGI process. find_specific_rundir() { local RELATIVE_CONFPATH="$@" local CONFNAMESPACE="$(extract_confnamespace "$RELATIVE_CONFPATH")" local CONFNAME="$(extract_confname "$RELATIVE_CONFPATH")" echo "${UWSGI_RUNDIR}/${CONFNAMESPACE}/${CONFNAME}" } # Location of pidfile for specific uWSGI process. find_specific_pidfile() { local RELATIVE_CONFPATH="$@" local SPECIFIC_RUNDIR="$(find_specific_rundir "$RELATIVE_CONFPATH")" echo "${SPECIFIC_RUNDIR}/pid" } # Assigns owner, group and permissions to pidfile of uWSGI process. chown_and_chmod_pidfile() { local PIDFILE="$@" local INTERVAL_START="$(date +%s)" local INTERVAL_END="$(date +%s)" local WAITING=2 # seconds # Wait until daemon getting to create pidfile. while [ ! -e "$PIDFILE" ]; do INTERVAL_END="$(date +%s)" if [ "$(expr "$INTERVAL_END" - "$INTERVAL_START")" -gt "$WAITING" ]; then return fi sleep 0.05 done chown root:root "$PIDFILE" chmod 644 "$PIDFILE" } debian/uwsgi-files/init/do_command0000644000000000000000000001507612214577571014436 0ustar # This is shell script, sourced by uWSGI init.d script . /usr/share/uwsgi/init/snippets . /usr/share/uwsgi/init/specific_daemon do_command() { local COMMAND="$1" shift local ERRORS=0 # If command is given with arguments, i.e. 'start smth smth_else' if [ -n "$1" ]; then [ "x$VERBOSE" != "xno" ] && log_progress_msg "->" # Iterate over given configuration file specifications and: # * either print notice that conforming conffile wasn't found (if it # wasn't) # * or execute given command with conforming conffile local CONFSPEC_PATH="" for CONFSPEC in "$@"; do CONFSPEC_RELPATH="$(relative_path_to_conffile_with_spec "$CONFSPEC")" if [ -z "${CONFSPEC_RELPATH}" ]; then log_progress_not_found "$CONFSPEC" else do_with_given_specific_daemon "$COMMAND" "$CONFSPEC_RELPATH" ERRORS="$(expr "$ERRORS" + "$?")" fi done [ "$ERRORS" -eq 0 ] && log_progress_done return "$ERRORS" fi # Do not start daemon if it was disabled. if [ "x$COMMAND" = "xstart" -a "x$RUN_AT_STARTUP" != "xyes" ]; then [ "x$VERBOSE" != "xno" ] && log_progress_msg "(disabled; see /etc/default/${NAME})" return 2 fi local SOME_CONF_WAS_FOUND=no local UWSGI_APPS_CONFDIRS="$(ls -1d ${UWSGI_APPS_CONFDIR_GLOB})" # This construction is needed for supporting configuration file names with # spaces or control characters. # # See http://www.dwheeler.com/essays/filenames-in-shell.html (paragraph #4). # # Predefined delimeters are resetted to null character (by changing IFS and # setting -d option of 'read' command) and then: # * 'find -print0' command is used for finding all available confnames # * 'while ... read' loop is used for iterating over found confnames # # Also process substitution is used, so that variables changed inside 'while' # loop will retain their values after exiting from loop. # # By default 'find' command use emacs-style regexps. Emacs-style regexp # processor with given regexp doesn't matches to file names with newline # character. Posix-style regexp processor is working good. # # With executing 'sed' over found paths, relative configuration file # paths are extracted from full paths provided with 'find' output. # Firstly, common directory path (UWSGI_CONFDIR) is stripped from 'find' # output. Secondly, all directories (except the first) and file extensions # are stripped from result of first substitution. # # For example: list of found paths # '/etc/uwsgi/apps-enabled/site.ini\0/etc/uwsgi/apps-enabled/dir/site2.ini' # is transformed by sed into 'apps-enabled/site\0apps-enabled/site2'. while IFS="" read -r -d "" RELATIVE_CONFPATH <&4 ; do if [ "x$SOME_CONF_WAS_FOUND" = "xno" -a "x$VERBOSE" != "xno" ]; then log_progress_msg "->" fi SOME_CONF_WAS_FOUND=yes do_with_given_specific_daemon "$COMMAND" "$RELATIVE_CONFPATH" ERRORS="$(expr "$ERRORS" + "$?")" done 4< <(find "$UWSGI_APPS_CONFDIRS" \ -regextype posix-basic \ -iregex ".*\.${UWSGI_CONFFILE_TYPES_REGEXP}\$" -a -xtype f \ -print0 \ | sed -e "s:\(^\|\x0\)${UWSGI_CONFDIR}/:\1:g" \ -e "s:\([^\x0/]\+\)\([^\x0]\+\)\?/\([^/\x0]\+\)\.${UWSGI_CONFFILE_TYPES_REGEXP}\x0:\1/\3\x0:g" \ | sort --zero-terminated --unique \ ) if [ "x$VERBOSE" != "xno" ]; then if [ "x$SOME_CONF_WAS_FOUND" = "xno" ]; then log_progress_msg "(omitted; missing conffile(s) in ${UWSGI_APPS_CONFDIR_GLOB})" elif [ "$ERRORS" -eq 0 ]; then log_progress_done fi fi return "$ERRORS" } do_with_given_specific_daemon() { local COMMAND="$1" shift local RELATIVE_CONFPATH="$@" local ERRORS=0 case "$COMMAND" in start) do_start_specific_daemon "$RELATIVE_CONFPATH" ;; stop) do_stop_specific_daemon "$RELATIVE_CONFPATH" ;; force-reload) do_force_reload_specific_daemon "$RELATIVE_CONFPATH" ;; reload|*) do_reload_specific_daemon "$RELATIVE_CONFPATH" ;; esac case "$?" in 0) log_progress_ok "$RELATIVE_CONFPATH" ;; 1) log_progress_skip "$RELATIVE_CONFPATH" ;; *) log_progress_error "$RELATIVE_CONFPATH" ERRORS=1 ;; esac return "$ERRORS" } # Print progress notification about successful command execution. log_progress_ok() { local RELATIVE_CONFPATH="$@" local CONFNAME="" [ "x$VERBOSE" = "xno" ] && return if [ "x$PRINT_CONFNAMES_IN_INITD_SCRIPT_OUTPUT" != "xno" ]; then CONFNAME="$(make_confname_for_progress_log "$RELATIVE_CONFPATH")" log_progress_msg "$CONFNAME" else log_progress_msg '.' fi } # Print progress notification about skipped command execution. # # It is printed, for example, when 'start' command was issued, but specific # daemon is already started. Or when 'stop' command was issued, but specific # daemon isn't runned yet. log_progress_skip() { local RELATIVE_CONFPATH="$@" local CONFNAME="" [ "x$VERBOSE" = "xno" ] && return if [ "x$PRINT_CONFNAMES_IN_INITD_SCRIPT_OUTPUT" != "xno" ]; then CONFNAME="$(make_confname_for_progress_log "$RELATIVE_CONFPATH")" log_progress_msg "(${CONFNAME})" else log_progress_msg "." fi } # Print progress notification about missing configuration file with given # name. log_progress_not_found() { local RELATIVE_CONFPATH="$@" local CONFNAME="" [ "x$VERBOSE" = "xno" ] && return if [ "x$PRINT_CONFNAMES_IN_INITD_SCRIPT_OUTPUT" != "xno" ]; then CONFNAME="$(make_confname_for_progress_log "$RELATIVE_CONFPATH")" fi log_progress_msg "${CONFNAME}?" } # Print progress notification about failed command execution. log_progress_error() { local RELATIVE_CONFPATH="$@" local CONFNAME="" [ "x$VERBOSE" = "xno" ] && return if [ "x$PRINT_CONFNAMES_IN_INITD_SCRIPT_OUTPUT" != "xno" ]; then CONFNAME="$(make_confname_for_progress_log "$RELATIVE_CONFPATH")" fi log_progress_msg "${CONFNAME}!" } log_progress_done() { log_progress_msg "done" } make_confname_for_progress_log() { local RELATIVE_CONFPATH="$@" local CONFNAMESPACE="$(extract_confnamespace "$RELATIVE_CONFPATH")" local CONFNAME="$(extract_confname "$RELATIVE_CONFPATH")" echo "$(sanitize_confname "${CONFNAMESPACE}/${CONFNAME}")" } # Sanitize configuration file name for printing it in terminal. sanitize_confname() { local CONFNAME="$@" # In sanitizing: # * all control ASCII characters are replaced with '?' character # * confname with spaces is surrounded by single quotes. CONFNAME="$(echo -n "$CONFNAME" | tr '[\001-\037\177]' '?')" case "$CONFNAME" in *[[:space:]]*) echo "'$CONFNAME'" ;; *) echo "$CONFNAME" ;; esac } debian/README.source0000644000000000000000000000244612214577571011366 0ustar Building new uwsgi-plugin-X package =================================== Rules for building uwsgi-plugin-X are created automatically based on contents of debian/control. For building new uWSGI plugin one's only necessary to add new package (for example, 'uwsgi-plugin-brainfuck') in debian/control. Algorithmically speaking (see it in debian/rules): 1. Function list_pkgname_suffixes greps debian/control for substring 'Package: uwsgi-plugin-', then removes this substring from each found line. Remaining lines' suffixes are needing plugin names (lua or psgi or ...). 2. List of found suffixes is assigned to variable 'plugins'. 3. Bunch of rules (each for building specific plugin) is generated from 'plugins' variable. 4. In each of these rules 'uwsgiconfig.py --plugin ' is executed. Also, _remember to add new plugin_ in Depends: and Description: fields of 'uwsgi-plugins-all' binary package (in debian/control). Why #!/bin/bash in uwsgi-pythonX init.d script? =============================================== For supporting configuration file names with spaces and/or control characters Bash-specific features are used (namely, '-d' option of 'read' command and process substitution). See their's usage in debian/uwsgi-common-files/init/do_command. debian/uwsgi-plugin-rack.prerm.in0000644000000000000000000000267612214577571014240 0ustar #!/bin/sh # prerm script for uwsgi-plugin-@@ruby_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi-plugin-rack \ /usr/lib/uwsgi/plugins/@@plugin_name@@_plugin.so update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_@@plugin_name@@ RACK_PLUGIN_ALTERNATIVES_COUNT="$(\ update-alternatives --list uwsgi-plugin-rack 2>/dev/null \ | wc -l \ )" if [ "$RACK_PLUGIN_ALTERNATIVES_COUNT" -eq 0 ]; then update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_rack fi ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-jvm-openjdk-7.prerm0000644000000000000000000000266312214577571015277 0ustar #!/bin/sh # prerm script for uwsgi-plugin-jvm-openjdk-7 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi-plugin-jvm \ /usr/lib/uwsgi/plugins/jvm_openjdk7_plugin.so update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_jvm_openjdk7 JVM_PLUGIN_ALTERNATIVES_COUNT="$(\ update-alternatives --list uwsgi-plugin-jvm 2>/dev/null \ | wc -l \ )" if [ "$JVM_PLUGIN_ALTERNATIVES_COUNT" -eq 0 ]; then update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_jvm fi ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-extra.docs0000644000000000000000000000001012214577571012321 0ustar contrib debian/uwsgi-plugin-greenlet-python.rtupdate.in0000644000000000000000000000347412214577571017144 0ustar #!/bin/sh set -e if [ "x$1" = "xrtupdate" ]; then # Transform new default Python runtime name from 'pythonX.Y' to 'pythonXY'. NEW_RTNAME_DOTLESS="$(echo "$3" | tr -d .)" # Versions of Python interpreter which was available at packaging moment # (and for which appropriate greenlet_pythonXY_plugin.so was built). KNOWN_PYVERS_DOTLESS="@@available_python_versions_dotless@@" DEFAULT_PLUGIN_ALTERNATIVE_PRIORITY=75 ALT_PLUGIN_ALTERNATIVE_PRIORITY=35 for MAYBE_NEW_DEFAULT_PYVER_DOTLESS in $KNOWN_PYVERS_DOTLESS; do # Check if pythonX.Y runtime (where pythonX.Y is a new default Python # version) was available at packaging moment. # # If it wasn't available, there is no point in changing default alternative # (as appropriate greenlet_pythonXY_plugin.so wasn't built and packaged). if [ "x$NEW_RTNAME_DOTLESS" = "xpython$MAYBE_NEW_DEFAULT_PYVER_DOTLESS" ] then # Reset prorities of all packaged alternatives of # greenlet_@@python_kind@@_plugin.so to lower value. for PYVER_DOTLESS in $KNOWN_PYVERS_DOTLESS; do update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/greenlet_python_plugin.so \ uwsgi-plugin-greenlet-python \ /usr/lib/uwsgi/plugins/greenlet_python${PYVER_DOTLESS}_plugin.so \ $ALT_PLUGIN_ALTERNATIVE_PRIORITY done # Set higher priority for greenlet_pythonXY_plugin.so (where pythonX.Y is # a new default Python version). update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/greenlet_python_plugin.so \ uwsgi-plugin-greenlet-python \ /usr/lib/uwsgi/plugins/greenlet_${NEW_RTNAME_DOTLESS}_plugin.so \ $DEFAULT_PLUGIN_ALTERNATIVE_PRIORITY break # for MAYBE_NEW_DEFAULT_PYVER_DOTLESS ... fi done fi debian/changelog0000644000000000000000000006634113353215766011065 0ustar uwsgi (1.9.17.1-5ubuntu0.1) trusty-security; urgency=medium * SECURITY UPDATE: Directory traversal - debian/patches/CVE-2018-7490.patch: enforce php default document_root behaviour, to not show external files - CVE-2018-7490 * SECURITY UPDATE: Stack buffer overflow in uwsgi_expand_path() - debian/patches/CVE-2018-6758.patch: improve uwsgi_expand_path() to sanitize input, avoiding stack corruption and potential security issue - CVE-2018-6758 -- Mike Salvatore Thu, 27 Sep 2018 14:05:42 -0400 uwsgi (1.9.17.1-5build5) trusty; urgency=medium * No-change rebuild to drop Python 3.3 support. -- Matthias Klose Sun, 23 Mar 2014 15:28:12 +0000 uwsgi (1.9.17.1-5build4) trusty; urgency=medium * Rebuild for Python 3.4. -- Matthias Klose Wed, 19 Feb 2014 20:55:38 +0100 uwsgi (1.9.17.1-5build3) trusty; urgency=medium * No change rebuild for phpapi-20121212+lfs (LFS ABI break on 32-bit arches). -- Robie Basak Wed, 19 Feb 2014 08:24:52 +0000 uwsgi (1.9.17.1-5build2) trusty; urgency=medium * Rebuild again, the previous build was still linked against old gloox on some archs. -- Dmitry Shachnev Fri, 31 Jan 2014 20:23:50 +0400 uwsgi (1.9.17.1-5build1) trusty; urgency=medium * No-change rebuild for gloox transition (LP: #1273967). -- Dmitry Shachnev Wed, 29 Jan 2014 22:50:19 +0400 uwsgi (1.9.17.1-5) unstable; urgency=low * Fix extend patch 1006 to avoid more IA64 clone() calls. Tidy DEP3 patch header. * Fix extend patch 1007 to cover more linkage. * Unfuzz patch 2001. -- Jonas Smedegaard Fri, 27 Sep 2013 01:53:54 +0200 uwsgi (1.9.17.1-4) unstable; urgency=low * Add patch 1006 to not use of clone() in emperor plugin on IA64, as workaround for FTBFS. Replaces previous unsuccesful patch 1006. * Add patch 1007 to fix linkage for GNU/Hurd and GNU/kFreeBSD. * Unfuzz patch 2001. * Stop needlessly build-depending explicitly on libbsd-dev. -- Jonas Smedegaard Thu, 26 Sep 2013 22:11:34 +0200 uwsgi (1.9.17.1-3) unstable; urgency=low * Build-depend on libzm-dev as fallback for libzmq3-dev, to ease backporting. * Tighten uwsgi-plugin-php to depend on current or newer libphp5-embed: lack stable API/ABI. Tighten to depend on same libphp5-embed when building against older php5: SONAME always changed, so backports need rebuilding when php5 is binNMU'ed. * Fix build-depend on libbsd-dev on KFreeBSD. * Add patch 1006 to include sched.h with GNU extensions, hopefully fixing FTBFS on IA64. -- Jonas Smedegaard Thu, 26 Sep 2013 03:38:41 +0200 uwsgi (1.9.17.1-2) unstable; urgency=low * Add patches 4b60307 and b190744 cherry-picked from upstream VCS, to support KFreeBSD. Drop similar locally created patch 1006. * Unfuzz patches. -- Jonas Smedegaard Wed, 25 Sep 2013 10:39:10 +0200 uwsgi (1.9.17.1-1) unstable; urgency=low [ upstream ] * New release. [ Jonas Smedegaard ] * Add patch 1006 to detect KFreeBSD. * Build-depend on libjail-dev and libkvm-dev on KFreeBSD. * Build-depend on libzmq3-dev (not libzmq-dev), and include KFreebsd (leaving out only Hurd). * Fix exclude building plugin emperor_zeromq on Hurd, and no longer exclude on KFreeBSD. -- Jonas Smedegaard Wed, 25 Sep 2013 04:23:38 +0200 uwsgi (1.9.17-1) unstable; urgency=low [ upstream ] * New release. [ Jonas Smedegaard ] * Add patch 2001 to compile verbosely. * Fix adjust uwsgi-core buildconf to autodetect presence of libzmq. * Have apache2 modules only depend on api package when api is resolved, to ease backporting. * Update source paths for example files, and stop installing files now treated as tests. * Unfuzz patches. -- Jonas Smedegaard Tue, 24 Sep 2013 06:10:50 +0200 uwsgi (1.9.16-2) unstable; urgency=low * Relax build-dependency on apache2-dev to be unversioned: Declared version satisfied by all releases ever made officially for Debian. Add apache2-threaded-dev as fallback, to ease backporting. * Tidy rules and control files: + Use CDBS_DEPENDS_* for binary package relations. + Resolve Python versions supported by this project (not all versions supported by target host - which is semantically different even though currently produces same result). + Drop unused variables PYTHON_MAJOR_VER and PYTHON3_MAJOR_VER. + Fix use unversioned Python binary when default version, to comply with Debian Python Policy §§ 1.4.1, 1.4.2. + Simplify Python module install, using CDBS python-module.mk. + Convert Python 2.x module to Python 3 during build (not install). + Simplify installation of plain files. * Fix Vcs-Browser URL. Closes: bug#723016. Thanks to Matthijs. * Update patches: + Merge together as patch 1001 the 2 patches that strips setting LD_RUN_PATH in LDFLAGS. + Prefix remaining patches with a number. + Add README in patch dir documenting numbering micro-policy. + Add patch 1006 to link dynamically against libperl. * Fix limit build-dependency on libzmq-dev to exclude the Hurd (in addition to kFreeBSD, but for different reason - libzmq-dev is not in itself Linux-specific). -- Jonas Smedegaard Wed, 18 Sep 2013 18:08:16 +0200 uwsgi (1.9.16-1) unstable; urgency=low [ upstream ] * New release. [ Jonas Smedegaard ] * Fix use packaging section httpd for libapache2-mod-uwsgi and libapache2-mod-ruwsgi. * Auto-resolve openjdk6-supported architectures. * Exclude build-dependency on libzmq-dev for kfreebsd-any, and avoid building module zeromq there. * Unfuzz patches. -- Jonas Smedegaard Sun, 15 Sep 2013 12:43:52 +0200 uwsgi (1.9.15-1) experimental; urgency=low [ upstream ] * New release. [ Jonas Smedegaard ] * Auto-resolve V8- and greenlet-supported architectures. Relax arch-specific package relations: + For V8 include kfreebsd-* and mipsel. + For greenlet include all except ia64. * Update patches: + Drop patches applied upstream: - 000000_01_adjust_lua_plugin_buildscript.patch - alarm_speech-flags.patch + Drop patch no longer applying (one example script dropped upstream, another now treated as a test script): - 000000_04_strip_uwsgi_shebang_from_examples.patch + Unfuzz patches with shortening quilt options. * Add upstream git as alternate source. * Add CDBS upstream-tarball.mk snippet, to implement get-orig-source target. * Have git-import-orig suppress upstream .gitignore file and enable signed tags. * Git-ignore quilt .pc dir. * Update source paths for example files, and stop installing files either dropped upstream or now treated as tests. * Stop building against Ruby 1.8. Raise priority of Ruby 1.9.1 rack plugin. Stop build-depending on ruby1.8 or ruby1.8-dev. * Add plugin package rbthreads, for Ruby 1.9 native threads. * Add plugin package lua5.2, for Lua WSAPI linked with Lua 5.2. * Build-depend on libcap-dev on Linux archs, for capabilities support. Closes: bug#718414. Thanks to Bastian Blank. * Build-depend on libmatheval-dev, for math support in routing system. -- Jonas Smedegaard Sat, 14 Sep 2013 05:51:10 +0200 uwsgi (1.9.13-5) unstable; urgency=medium * Add myself as uploader. * Limit package relations tied to openjdk-7 to supported architectures: mips/mipsel unsupported since openjdk-7 7u15-2.3.7-1. * Avoid mips and mipsel architectures for jvm-openjdk-7 plugin, unsupported since openjdk-7 7u15-2.3.7-1: + Limit build-dependency and arch hints for binary packages in control file. + Fix resolving what plugins to build to be arch-aware. Closes: bug#720262. Thanks to Adam D. Barratt. * Set urgency=medium, as changes are rather limited and affects recent perl migration for those using uWSGI. -- Jonas Smedegaard Fri, 13 Sep 2013 20:15:29 +0200 uwsgi (1.9.13-4) unstable; urgency=low * Remove hardcoded phpapi-20100525 dependency. (Closes: #715472) * Build uwsgi-plugin-v8 and build depend on libv8-dev only on amd64 armel armhf i386 architectures. (Closes: #715473) * Remove apache2 and apache2-api-20120211 dependencies for libapache2-mod-proxy-uwsgi, libapache2-mod-uwsgi and libapache2-mod-ruwsgi. (Closes: #715485) * Add ${uwsgi:apache2:Depends} substvar to reference Apache2 API version. * Add ${uwsgi:php:Depends} substvar to reference PHP API version. * Add libphp5-embed as a dependency for uwsgi-plugin-php. -- Janos Guljas Wed, 10 Jul 2013 22:23:20 +0200 uwsgi (1.9.13-3) unstable; urgency=low * debian/uwsgi-core.install. - Include alarm_speech, coroae and pem plugins into the uwsgi-core package. -- Janos Guljas Tue, 09 Jul 2013 02:24:32 +0200 uwsgi (1.9.13-2) unstable; urgency=low * Move plugins from binary packges to uwsgi-core package as they have dependencies with priority set to required: - alarm_speech - coroae - pam -- Janos Guljas Tue, 09 Jul 2013 01:56:41 +0200 uwsgi (1.9.13-1) unstable; urgency=low * New upstream release. * Update dependencies to build with Apache 2.4. (Closes: #709468) - Remove apache2-threaded-dev. - Add apache2-dev (>> 2.4~). - Depend lbapache2-mod-proxy-uwsgi, ibapache2-mod-uwsgi and libapache2-mod-ruwsgi on apache2-api-20120211. * Update postinst and prerm scripts to use apache2-maintscript-helper. * Add debian/patches/emperor-pg-fix-cflags.patch. - Remove -Wformat-security flag to fix build error * debian/uwsgi-core.docs: - Remove uwsgi_API.txt. -- Janos Guljas Mon, 08 Jul 2013 14:06:14 +0200 uwsgi (1.9.11-1) unstable; urgency=low * New upstream release. * Upstream version does not contain minfied JavaScript files: - Drop dfsg sufix from version. - Remove get-orig-source target from debian/rules. * Update debian/copyright: - Remove references to removed files lib/rbtree.c, lib/rbtree.h and nginx/ngx_http_uwsgi_module.c. - Added copyrights for core/rb_timers.c and core/hash.c. - Updated copyright years. * debian/rules: - Change UWSGICONFIG_JVM_INCPATH to fix jvm plugin build. * Patch Python plugin to remove assignments to environment variable LD_RUN_PATH which leads to setting RPATH in compiled binary/shared library: python-plugin_remove_assignments_to_LD_RUN_PATH.patch. * debian/pathces/fix-php-ldflags.patch - Include php5-embed ld library path when building PHP plugin. * debian/patches/remove-php-libs.patch - Remove PHP libraries when building PHP plugin. * Update patches to apply cleanly: - fix-reload-process-name.patch - fix-php-ldflags.patch - 000000_02_remove_assignments_to_LD_RUN_PATH.patch * Remove no longer needed patches: - 110515_01_add_overriding_of_JVM_PATH_into_buildscript_of_jwsgi_plugin.patch - 000000_03_strip_versions_from_jQuery_scripts_links_in_uwsgicc_templates.patch - remove-pg_config_cflags-in-probepg.patch * Update lintian-overrides for jwsgi and jvm plugins. * New binary package uwsgi-emperor. (Closes: #660212) * New binary package uwsgi-plugin-php. (Closes: #699174) - New Build-Depends libphp5-embed, php5-dev, libonig-dev, libdb-dev, libqdbm-dev and libbz2-dev. * New binary package uwsgi-plugin-alarm-curl: - New Build-Depends libcurl4-openssl-dev. - Add alarm option to buildconf/uwsgi-core.ini. - Set pcre option to true in: buildconf/uwsgi-core.ini. * New binary package uwsgi-plugin-alarm-xmpp: - New Build-Depends libgloox-dev. * New binary package uwsgi-plugin-pam: - New Build-Depends libpam0g-dev. * New binary package uwsgi-plugin-router-access: - New Build-Depends libwrap0-dev. - Add routing option to buildconf/uwsgi-core.ini. * New binary package uwsgi-plugin-alarm-speech: - New Build-Depends libgnustep-base-dev and libgnustep-gui-dev. - Add debian/patches/alarm_speech-flags.patch * New binary package uwsgi-plugin-coroae: - New Build-Depends libcoro-perl. * New binary package uwsgi-plugin-geoip: - New Build-Depends libgeoip-dev. * New binary package uwsgi-plugin-v8: - New Build-Depends libv8-dev. * New binary package uwsgi-plugin-xslt: - New Build-Depends libxslt1-dev. * New binary packages libapache2-mod-proxy-uwsgi and libapache2-mod-proxy-uwsgi-dbg. * Add plugins to uwsgi-core package: - cheaper_backlog2 - cheaper_busyness - clock_monothonic - clock_realtime - corerouter - emperor_amqp - logfile - notfound - rawrouter - redislog - router_basicauth - router_cache - router_http - router_memcached - router_redirect - router_rewrite - router_uwsgi - spooler - ssi - sslrouter - stats_pusher_statsd - transformation_gzip - transformation_tofile - transformation_toupper - zergpool - logfile * Move plugins from binary packges to uwsgi-core package as they do not have additional dependencies: - admin - cache - carbon - cgi - echo - emperor_zeromq - fastrouter - http - logsocket - nagios - ping - router_static - rpc - rrdtool - rsyslog - signal - symcall - syslog - ugreen * New plugins: - uwsgi-plugin-curl-cron - uwsgi-plugin-emperor-pg - uwsgi-plugin-ldap - uwsgi-plugin-sqlite3 - uwsgi-plugin-systemd-logger * Remove no longer provided plugins: - uwsgi-plugin-probeconnect - uwsgi-plugin-probepg * Remove no longer provided packages: - python-uwsgicc - python-django-uwsgi-admin * Remove plugins which are moved to uwsgi-core package: - uwsgi-plugin-admin - uwsgi-plugin-cache - uwsgi-plugin-carbon - uwsgi-plugin-cgi - uwsgi-plugin-echo - uwsgi-plugin-emperor-zeromq - uwsgi-plugin-fastrouter - uwsgi-plugin-http - uwsgi-plugin-logsocket - uwsgi-plugin-nagios - uwsgi-plugin-ping - uwsgi-plugin-router-static - uwsgi-plugin-rpc - uwsgi-plugin-rrdtool - uwsgi-plugin-rsyslog - uwsgi-plugin-signal - uwsgi-plugin-symcall - uwsgi-plugin-syslog - uwsgi-plugin-ugreen * Changes in uwsgi-extra package: - Remove no longer provided nginx and lighttpd directories. - Update description. -- Janos Guljas Mon, 27 May 2013 03:55:54 +0200 uwsgi (1.4.4+dfsg-1) experimental; urgency=low * New upstream release. (Closes: #698691) * Remove upstream applied patches: - fixed-a-leak-in-uwsgi.workers.patch - fixed-magic_table-usage-in-http-and-fastrouter-plugins.patch - security-check-in-the-http-router.patch - threading-issue-with-uwsgi-send.patch - fixed-ruby-rvm-support.patch - fixed-spooler-with-chdir.patch - fixed-async+threading.patch - skip-headers-sending-when-no-headers-are-defined.patch - fixed-logfile-inheritance.patch - fixed-waitpid-usage-in-cheap-cheaper-lazy-modes.patch - fixed-casting-in-wsgi-input.patch - fixed-casting-in-wsgi-input-web3-pump-part.patch - fixed-env-clear-in-plain-async-mode.patch - allows-ugreen-with-threads.patch - fix-mod_uwsgi-authenticated-but-authentication-typeless-requests.patch - fixed-fastcgi-support-for-response-bigger-than-64k.patch - disable-SIGSTOP-SIGTSTP-in-gateways.patch - fixed-idle-mode.patch * Update patches: - fix-reload-process-name.patch * debian/rules: - Update path for example configuration files. - Remove uwsgibuild.* files on clean. * Update my email address. * Update debian/copyright. * debian/control: - Remove DM-Upload-Allowed field. - Raise standards version to 3.9.4. - Update VCS fields to contain canonical URL forms. -- Janos Guljas Sun, 27 Jan 2013 02:46:36 +0100 uwsgi (1.2.3+dfsg-5) unstable; urgency=low * debian/patches/remove-pg_config_cflags-in-probepg.patch - Remove pg_config --cflags from probepg build. (Closes: #687084) * Apply upstream patches: - fixed-magic_table-usage-in-http-and-fastrouter-plugins.patch Fixed magic_table usage in http and fastrouter plugins. - security-check-in-the-http-router.patch Added a security check in the http router. - threading-issue-with-uwsgi-send.patch Fixed a threading issue with uwsgi.send(). - fixed-ruby-rvm-support.patch Fixed Ruby RVM support. - fixed-spooler-with-chdir.patch Fixed spooler with chdir. - fixed-async+threading.patch Fixed async+threading in python plugin. - skip-headers-sending-when-no-headers-are-defined.patch Skip headers sending when no headers are defined. - fixed-logfile-inheritance.patch Fixed logfile inheritance. - fixed-waitpid-usage-in-cheap-cheaper-lazy-modes.patch Fixed waitpid usage in cheap/cheaper/lazy modes. - fixed-casting-in-wsgi-input.patch Fixed casting in uwsgi.input. - fixed-casting-in-wsgi-input-web3-pump-part.patch More fixes on casting in uwsgi.input. - fixed-env-clear-in-plain-async-mode.patch Fixed env clear in plain async mode. - allows-ugreen-with-threads.patch Allows ugreen with threads. - fix-mod_uwsgi-authenticated-but-authentication-typeless-requests.patch Fix mod_uwsgi authenticated, but authentication typeless requests. - fixed-fastcgi-support-for-response-bigger-than-64k.patch Fixed fastcgi support for response bigger than 64k. - disable-SIGSTOP-SIGTSTP-in-gateways.patch Disable SIGSTOP/SIGTSTP in gateways. - fixed-idle-mode.patch Fixed idle mode. -- Janos Guljas Thu, 13 Sep 2012 19:37:31 +0200 uwsgi (1.2.3+dfsg-4) unstable; urgency=low * debian/patches/fix-reload-process-name.patch: - Preserve process name on reload. * Add `name` option from start-stop-daemon as the issue with master process name changing on reload is fixed by patching the source. -- Janos Guljas Tue, 21 Aug 2012 23:31:59 +0200 uwsgi (1.2.3+dfsg-3) unstable; urgency=low * Remove `name` option from start-stop-daemon as master process is changing its name on reloads. Thanks Andreas Motl for the patch. -- Janos Guljas Mon, 20 Aug 2012 12:32:43 +0200 uwsgi (1.2.3+dfsg-2) unstable; urgency=low * Remove uwsgi-plugin-luajit binary package. (Closes: #680132) - Remove libluajit-5.1-dev from Build-Depends. - Remove uwsgi-plugin-luajit from dependencies for uwsgi-app-integration-plugins. - Remove all occurrences of luajit plugin in debian/rules. * Include upstream patch to fix a memory leak in python uwsgi.workers(). -- Janos Guljas Mon, 09 Jul 2012 03:32:09 +0200 uwsgi (1.2.3+dfsg-2~experimental2) UNRELEASED; urgency=low * debian/rules: - Cleanup uwsgibuild log files after the build. -- Janos Guljas Wed, 20 Jun 2012 15:39:14 +0200 uwsgi (1.2.3+dfsg-2~experimental1) experimental; urgency=low * Add support for OpenJDK 7 (Closes: #678120): - Build depend on openjdk-7-jdk. - Add dependencies uwsgi-plugin-jvm-openjdk-7 and uwsgi-plugin-jwsgi-openjdk-7 for uwsgi-app-integration-plugins. - New binary packages uwsgi-plugin-jvm-openjdk-7 and uwsgi-plugin-jwsgi-openjdk-7. - Update debian/rules for new packages. - Add debian/uwsgi-plugin-jvm-openjdk-7.postinst debian/uwsgi-plugin-jvm-openjdk-7.prerm debian/uwsgi-plugin-jwsgi-openjdk-7.install debian/uwsgi-plugin-jwsgi-openjdk-7.postinst debian/uwsgi-plugin-jwsgi-openjdk-7.prerm - Override binary-or-shlib-defines-rpath lintian warnings for uwsgi-plugin-jvm-openjdk-7 and uwsgi-plugin-jwsgi-openjdk-7. * Change alternatives priprity to 35 for uwsgi-plugin-jvm-openjdk- and uwsgi-plugin-jwsgi-openjdk-6. -- Janos Guljas Tue, 19 Jun 2012 16:23:06 +0200 uwsgi (1.2.3+dfsg-1) unstable; urgency=low * New upstream release. * debian/uwsgi.init.d - Remove spurious no-op command in init script, thanks to Jean-Baptiste Quenot. * Use dh_python3 for python3-uwsgidecorators. (Closes: #672193) * debian/rules - Include Hardening options in CFLAGS, CPPFLAGS and LDFLAGS. -- Janos Guljas Thu, 10 May 2012 17:14:22 +0200 uwsgi (1.2+dfsg-1) unstable; urgency=low * New upstream release. -- Janos Guljas Mon, 30 Apr 2012 17:35:22 +0200 uwsgi (1.1.2+dfsg-1) unstable; urgency=low * New upstream release. -- Janos Guljas Fri, 30 Mar 2012 23:46:24 +0200 uwsgi (1.1.1+dfsg-1) unstable; urgency=low * New upstream release (Closes: #664890). * Add DM-Upload-Allowed control field. * Remove debian/patches/python-3.x-fix.patch as applied upstream. -- Janos Guljas Thu, 22 Mar 2012 17:32:15 +0100 uwsgi (1.1+dfsg-1) unstable; urgency=low * New upstream release. * debian/uwsgi-files/init/specific_daemon - suppress stderr on do_start_specific_daemon() * debian/rules - adjust building python2x_plugin.so and python3x_plugin.so * Add debian/patches/python-3.x-fix.patch to fix regression introduced in 1.1 release. * Update debian/copyright Format value. * Bump standards to 3.9.3. -- Janos Guljas Sat, 17 Mar 2012 21:39:16 +0100 uwsgi (1.0.3+dfsg-1) unstable; urgency=low * New upstream version. * Adjust rack plugin LD_RUN_PATH patch. * Adjust patch for uWSGI Control Center jQuery links in templates. * Remove '-fno-strict-aliasing' CFLAG patch as it is implemented upstream. * Remove fix indentation of uwsgidecorators_py patch as implemented upstream. * Adjust init scripts to use top-bottom options order, as --inherit option is not working as in earlier versions. * Update debian/copyright file. * Add LSB Description field to debian/uwsgi.init.d. * Set Architecture to "all" for binary package uwsgi-extra because it contains no architecture dependent files. * Change uwsgi description. (Closes: #640698) * New binary packages: - uwsgi-plugin-carbon - uwsgi-plugin-graylog2 - uwsgi-plugin-logsocket - uwsgi-plugin-probeconnect - uwsgi-plugin-probepg - uwsgi-plugin-rrdtool - uwsgi-plugin-rsyslog - uwsgi-plugin-signal - uwsgi-plugin-symcall - uwsgi-plugin-syslog * python-uwsgidecorators: - fix binary-install rule to call dh_python2 - remove debian/source.lintian-overrides * uwsgi-plugin-jvm-openjdk-6: - fix FTBFS on armel and powerpc (Closes: #656280) * uwsgi-plugin-python: - document issue "ImportError: No module named site" when using virtualenv with Python 2.6 in README.Debian (Closes: #654333) * Adjust debian/watch uversionmangle option. * Repack upstram source to remove minimized jQuery and jQuery UI JavaScript libraries: - add get-orig-source rule to debian/rules - append +dfsg to upstream version - update debian/watch with dversionmangle option -- Janos Guljas Mon, 13 Feb 2012 03:43:28 +0100 uwsgi (0.9.8.3-2) unstable; urgency=low [ Leonid Borisenko ] * uwsgi: - change location of runtime directory of uWSGI instance from: /run/uwsgi/ to: /run/uwsgi/app/ - change location of uWSGI instance logfile from: /var/log/uwsgi/.log to: /var/log/uwsgi/app/.log [ Janos Guljas ] * uwsgi-plugin-jwsgi-openjdk-6: - Change UWSGICONFIG_JVM_INCPATH and UWSGICONFIG_JVM_LIBPATH. (Closes: #640347) - update lintian-overrides binary-or-shlib-defines-rpath for new paths * Add myself as maintainer. Many thanks to Leonid Borisenko who did a great job of packaging and maintaining this package. -- Janos Guljas Sun, 01 Jan 2012 21:01:34 +0100 uwsgi (0.9.8.3-1) unstable; urgency=low * New upstream version (0.9.8.3) * Install file CONTRIBUTORS into docs of all the packages * uwsgi: - move files with supplementary functions of init.d script from /usr/lib/uwsgi/init to /usr/share/uwsgi/init - move inherited configuration file from /usr/lib/uwsgi/conf to /usr/share/uwsgi/conf * uwsgi-core: - add new WSGI examples * uwsgi-plugin-luajit: - build package for armel architecture * uwsgi-plugin-python: - add Suggests: python-uwsgidecorators * uwsgi-plugin-python3: - add Suggests: python3-uwsgidecorators * python3-uwsgidecorators: - extend package description with note about possible improper work of uwsgidecorators module on Python 3; see http://lists.unbit.it/pipermail/uwsgi/2011-July/002355.html -- Leonid Borisenko Tue, 26 Jul 2011 18:45:32 +0300 uwsgi (0.9.8.1-1) unstable; urgency=low * New upstream version (0.9.8.1) * d/patches: - refresh apply_GCC_no_strict_aliasing_option_only_to_python_plugin_building.patch - remove obsolete (applied by upstream): - fix_automagical_plugin_loading.patch - fix_inherit_option_behavior.patch - fix_usage_of_proto_write_in_echo_plugin.patch - support_magic_variables_for_sqlite_config.patch * Add python-uwsgidecorators/python3-uwsgidecorators binary packages: - uwsgidecorators is a simple Python module that exports a bunch of decorators to allow a more elegant approach to uWSGI API. Provided decorators helps with creating of RPC functions, timers, filemonitors. - d/source.lintian-overrides has been added to override false positive warning of dh_python-is-obsolete * d/uwsgi-plugin-greenlet-python.prerm.in: - correct error in name of alternatives link group (replace 'uwsgi-plugin-greenlet' with 'uwsgi-plugin-greenlet-python') so as to fix process of uwsgi-plugin-greenlet-python package uninstallation (and pass piuparts test) * Make use of /run directory instead of /var/run: - it is backward-compatible change, as /var/run is symlinked to /run - /run is a new cross-distribution location for the storage of transient writable files needed from system startup to shutdown, but which do not require preserving across reboots. It has been appeared in Debian with initscripts upgrade to 2.88dsf-13.3. -- Leonid Borisenko Sun, 26 Jun 2011 01:01:06 +0300 uwsgi (0.9.8-2) unstable; urgency=low * Resolve package building issues on some architectures: - exclude uwsgi-plugin-luajit from building on armel architecture. Build-Dependency libluajit-5.1-dev doesn't available on armel, bug #630814 was filed. - remove Build-Dependency on libsctp-dev. Build-Dependency on libsctp-dev prevents packages from building on architectures kfreebsd-i386, kfreebsd-amd64, hurd-i386. SCTP build option doesn't handled by uWSGI build configuration since 20 Oct 2010 (Mercurial changeset f1841e46cd29). So Build-Dependency on libsctp-dev could be safely discarded without loss of any uWSGI features. - restrict set of uwsgi-plugin-greenlet-python architectures to amd64, i386, mips, powerpc, s390 (where python-greenlet and python-greenlet-dev packages are available). -- Leonid Borisenko Fri, 17 Jun 2011 22:51:01 +0300 uwsgi (0.9.8-1) unstable; urgency=low * Initial release. (Closes: #582864) -- Leonid Borisenko Mon, 13 Jun 2011 23:51:44 +0300 debian/uwsgi-plugin-jvm-openjdk-6.postinst0000644000000000000000000000432412214577571016030 0ustar #!/bin/sh # postinst script for uwsgi-plugin-jvm-openjdk-6 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/jvm_plugin.so \ uwsgi-plugin-jvm \ /usr/lib/uwsgi/plugins/jvm_openjdk6_plugin.so \ 35 \ --slave \ /usr/bin/uwsgi_jvm \ uwsgi_jvm \ /usr/bin/uwsgi-core \ --slave \ /usr/share/man/man1/uwsgi_jvm.1.gz \ uwsgi_jvm.1.gz \ /usr/share/man/man1/uwsgi_jvm_openjdk6.1.gz update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_jvm_openjdk6 \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_jvm_openjdk6.1.gz UWSGI_JVM_BINARY_IS_UWSGI_ALTERNATIVE="$(\ update-alternatives --list uwsgi 2>/dev/null \ | grep '/uwsgi_jvm$' \ | wc -l \ )" if [ "$UWSGI_JVM_BINARY_IS_UWSGI_ALTERNATIVE" -eq 0 ]; then update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_jvm \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_jvm.1.gz fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-pyerl.postinst.in0000644000000000000000000000304512214577571015200 0ustar #!/bin/sh # postinst script for uwsgi-plugin-pyerl-@@python_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) PYVER_DEFAULT_DOTLESS=@@default_python_version_dotless@@ for PYVER_DOTLESS in @@available_python_versions_dotless@@; do if [ "x$PYVER_DOTLESS" = "x$PYVER_DEFAULT_DOTLESS" ]; then ALTERNATIVE_PRIORITY=75 else ALTERNATIVE_PRIORITY=35 fi update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/pyerl_@@python_kind@@_plugin.so \ uwsgi-plugin-pyerl-@@python_kind@@ \ /usr/lib/uwsgi/plugins/pyerl_python${PYVER_DOTLESS}_plugin.so \ $ALTERNATIVE_PRIORITY done ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-emperor.logrotate0000644000000000000000000000016712214577571013734 0ustar "/var/log/uwsgi/emperor.log" { copytruncate daily rotate 5 compress delaycompress missingok notifempty } debian/uwsgi-emperor-files/0000755000000000000000000000000012215746244013102 5ustar debian/uwsgi-emperor-files/etc/0000755000000000000000000000000012215746244013655 5ustar debian/uwsgi-emperor-files/etc/uwsgi-emperor/0000755000000000000000000000000012215746244016462 5ustar debian/uwsgi-emperor-files/etc/uwsgi-emperor/vassals/0000755000000000000000000000000012215746244020136 5ustar debian/uwsgi-emperor-files/etc/uwsgi-emperor/vassals/README0000644000000000000000000000016112215746244021014 0ustar Files found in this directory are processed by uWSGI Emperor init.d script as uWSGI vassals configuration files. debian/uwsgi-emperor-files/etc/uwsgi-emperor/emperor.ini0000644000000000000000000000073712215746244020643 0ustar [uwsgi] # try to autoload appropriate plugin if "unknown" option has been specified autoload = true # enable master process manager master = true # spawn 2 uWSGI emperor worker processes workers = 2 # automatically kill workers on master's death no-orphans = true # place timestamps into log log-date = true # user identifier of uWSGI processes uid = www-data # group identifier of uWSGI processes gid = www-data # vassals directory emperor = /etc/uwsgi-emperor/vassals debian/uwsgi-plugin.install.in0000644000000000000000000000006012214577571013624 0ustar @@plugin_name@@_plugin.so usr/lib/uwsgi/plugins debian/libapache2-mod.install.in0000644000000000000000000000016412214577571013746 0ustar apache2/.libs/mod_@@module_name@@.so usr/lib/apache2/modules debian/@@module_name@@.load etc/apache2/mods-available debian/uwsgi-plugin-greenlet-python.dirs0000644000000000000000000000003312214577571015634 0ustar usr/share/python/runtime.d debian/uwsgi-plugin-jvm-openjdk-6.lintian-overrides0000644000000000000000000000037512214577571017605 0ustar # Allow RPATH against libjvm.so in OpenJDK, # until http://bugs.debian.org/562622 is solved. uwsgi-plugin-jvm-openjdk-6 binary: binary-or-shlib-defines-rpath usr/lib/uwsgi/plugins/jvm_openjdk6_plugin.so "/usr/lib/jvm/java-6-openjdk-*/jre/lib/*/server/" debian/uwsgi-plugin-jvm-openjdk-6.prerm0000644000000000000000000000266312214577571015276 0ustar #!/bin/sh # prerm script for uwsgi-plugin-jvm-openjdk-6 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi-plugin-jvm \ /usr/lib/uwsgi/plugins/jvm_openjdk6_plugin.so update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_jvm_openjdk6 JVM_PLUGIN_ALTERNATIVES_COUNT="$(\ update-alternatives --list uwsgi-plugin-jvm 2>/dev/null \ | wc -l \ )" if [ "$JVM_PLUGIN_ALTERNATIVES_COUNT" -eq 0 ]; then update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_jvm fi ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-lua.postinst.in0000644000000000000000000000437512214577571014635 0ustar #!/bin/sh # postinst script for uwsgi-plugin-@@lua_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/lua_plugin.so \ uwsgi-plugin-lua \ /usr/lib/uwsgi/plugins/@@plugin_name@@_plugin.so \ @@plugin_alternatives_priority@@ \ --slave \ /usr/bin/uwsgi_lua \ uwsgi_lua \ /usr/bin/uwsgi-core \ --slave \ /usr/share/man/man1/uwsgi_lua.1.gz \ uwsgi_lua.1.gz \ /usr/share/man/man1/uwsgi_@@plugin_name@@.1.gz update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_@@plugin_name@@ \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_@@plugin_name@@.1.gz UWSGI_LUA_BINARY_IS_UWSGI_ALTERNATIVE="$(\ update-alternatives --list uwsgi 2>/dev/null \ | grep '/uwsgi_lua$' \ | wc -l \ )" if [ "$UWSGI_LUA_BINARY_IS_UWSGI_ALTERNATIVE" -eq 0 ]; then update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_lua \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_lua.1.gz fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/buildconf/0000755000000000000000000000000012220174306011130 5ustar debian/buildconf/uwsgi-core.ini0000644000000000000000000001264312220174306013723 0ustar # uWSGI build configuration is the simple INI file. # uwsgi section contains common options for building of uWSGI binary and # plugins [uwsgi] # Inherit build configuration from other configuration file with possible # overriding or appending to option values # # = / inherit = false # Support for alarm # # = auto/ alarm = auto # String appended to uWSGI version # # = /false append_version = debian # Asynchronous/evented operational mode support # http://projects.unbit.it/uwsgi/wiki/AsyncSupport # # = async = true # Name of compiled uWSGI executable binary # # = bin_name = uwsgi-core # Include extra debugging information into compiled uWSGI binary with enabling # of debug output in logging # # = debug = false # Embed configuration file at given path into uWSGI binary. # Embedded configuration will be used as default configuration of uWSGI. # http://projects.unbit.it/uwsgi/wiki/EmbedFlask # # = /false embed_config = false # Embed files (or whole directories) into uWSGI binary. # http://projects.unbit.it/uwsgi/wiki/EmbedFlask # # = /false embed_files = false # Provide embedded 'uwsgi' module for access to uWSGI API # http://projects.unbit.it/uwsgi/wiki/EmbeddedModule # # = embedded = true # List of plugins to compile into uWSGI binary # # = /false embedded_plugins = false # Event subsystem type # Automatic choosing of event subsystem is based on OS type # # = auto/epoll/devpoll/port/kqueue event = auto # Event dispatcher support # As for uWSGI 0.9.8, this is no-op option # # = evdis = false # File monitoring subsystem type # Automatic choosing of file monitoring subsystem is based on OS type # # = auto/inotify/port/kqueue/none filemonitor = auto # Support for configuration files in INI format # http://projects.unbit.it/uwsgi/wiki/INIFiles # # = ini = true # Support of JSON parsing (for configuration files in JSON format and # communication to Mongrel2 via JSON) # # http://projects.unbit.it/uwsgi/wiki/Mongrel2 # # = /auto json = true # Support for uWSGI configuring via LDAP # http://projects.unbit.it/uwsgi/wiki/useLDAP # In automatic mode enabling of option is based on presence of ldap.h header # file # # = auto/ ldap = true # Locking subsystem type # Automatic choosing of locking subsystem is based on OS type # # = auto/pthread_mutex/umtx/osx_spinlock/flock locking = auto # Library of utilized memory allocator implementation # uWSGI will be linked with specified library # # = libc/tcmalloc/jemalloc malloc_implementation = libc # Support of multiple interpreters mode (allowing to isolate applications # living in the same uWSGI process) # # = minterpreters = true # Support of IP multicast (for SNMP or cluster management/messaging # requests etc) # http://projects.unbit.it/uwsgi/wiki/uwsgiProtocol # # = multicast = true # Regular expression support with help of PCRE (Perl Compatible Regular # Expressions) library # # As for uWSGI 0.9.8 this is no-op option # In automatic mode enabling of option is based on presence and output of # pcre-config executable # # = auto/ pcre = true # Path to directory where uWSGI searches for plugins (i.e. appropriate shared # libraries) # # = plugin_dir = /usr/lib/uwsgi/plugins # List of plugins to compile into external shared libraries # # = /false plugins = false # Support for routing # # = auto/ routing = auto # Support of possibility to serve static file via sendfile() # # = sendfile = true # Embed a tiny SNMP server # http://projects.unbit.it/uwsgi/wiki/UseSnmp # # = snmp = true # Support of spooler (queue manager that works very similar to a printing/mail # system, useful for managing long running task) # http://projects.unbit.it/uwsgi/wiki/Spooler # # = spooler = true # Support for configuration in SQLite3 database # # = /auto sqlite3 = true # Threaded operational mode support # # = threading = true # Timer subsystem type # Automatic choosing of timer subsystem is based on OS type # # = auto/timerfd/port/kqueue/none timer = auto # Support of UDP protocol (for binding to UDP socket, providing SNMP server, # logging via UDP, IP multicast, ...) # http://projects.unbit.it/uwsgi/wiki/uwsgiProtocol # # = udp = true # Support for configuration files in XML format # # = xml = true # Underlying XML support library # # = libxml2/expat xml_implementation = libxml2 # Support for configuration files in YAML format # # = yaml = true # Underlying YAML support library # # In automatic mode enabling of option is based on presence of yaml.h header # file. # # When option value is set to false, internal uWSGI YAML parser will be used. # # = auto/libyaml/false yaml_implementation = libyaml # Include Unbit-specific features # # Unbit S.a.s. (unbit.it) is the hosting company that started (and continuing) # uWSGI development. Unbit-specific features are small changes introduced for # supporting Unbit infrastucture. They are supposed to be of no interest to # anybody else but Unbit. # # = unbit = false # Support of ZeroMQ transport layer # # http://projects.unbit.it/uwsgi/wiki/Mongrel2 # http://projects.unbit.it/uwsgi/wiki/ZeroMQLogging # # = /auto zeromq = auto # 'python' section contains options for building Python language bridge plugin # # As for uWSGI 0.9.8 options in 'python' section are meaningless and not used # in plugin building process. [python] paste = true web3 = true debian/buildconf/uwsgi-plugin.ini.in0000644000000000000000000000016112214577571014704 0ustar [uwsgi] inherit = @@curdir@@/debian/buildconf/uwsgi-core.ini bin_name = uwsgi-core-local plugin_dir = @@curdir@@ debian/compat0000644000000000000000000000000212214577571010377 0ustar 8 debian/libapache2-mod.postinst.in0000644000000000000000000000166512214577571014172 0ustar #!/bin/sh # postinst script for libapache2-mod-@@module_name@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package if [ "$1" = "configure" ] ; then if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then . /usr/share/apache2/apache2-maintscript-helper apache2_invoke enmod @@module_name@@ || exit 1 fi fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi.default0000644000000000000000000000227512214577571011713 0ustar # Defaults for uWSGI initscript # sourced by /etc/init.d/uwsgi # Run automatically at system startup? RUN_AT_STARTUP=yes # At startup VERBOSE value is setted in 'no'. So when user invokes # uWSGI init.d script, no output is showed. # It could be unexpected behaviour, because it is common practice for # init.d script to ignore VERBOSE value. # Here VERBOSE is overriden to conform such the practice. VERBOSE=yes # Should init.d script print configuration file names while marking progress of # it's execution? # # If 'no', then init.d script prints one-character symbols instead file names. # # Printing confnames is quite informative, but could mess terminal output or # be somewhat dangerous (as filename could contain arbitary characters). # ASCII control characters in file names are replaced with '?' in init.d script # output, nevertheless you were warned. PRINT_CONFNAMES_IN_INITD_SCRIPT_OUTPUT=no # init.d script starts instance of uWSGI daemon for each found user-created # configuration file. # # Options from inherited configuration file are passed to each instance by # default. They could be overrided (or extended) by user configuration file. INHERITED_CONFIG=/usr/share/uwsgi/conf/default.ini debian/uwsgi-plugin-jwsgi-openjdk-7.prerm0000644000000000000000000000202112214577571015612 0ustar #!/bin/sh # prerm script for uwsgi-plugin-jwsgi-openjdk-7 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi-plugin-jwsgi \ /usr/lib/uwsgi/plugins/jwsgi_openjdk7_plugin.so ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-lua.prerm.in0000644000000000000000000000267012214577571014073 0ustar #!/bin/sh # prerm script for uwsgi-plugin-@@lua_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi-plugin-lua \ /usr/lib/uwsgi/plugins/@@plugin_name@@_plugin.so update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_@@plugin_name@@ LUA_PLUGIN_ALTERNATIVES_COUNT="$(\ update-alternatives --list uwsgi-plugin-lua 2>/dev/null \ | wc -l \ )" if [ "$LUA_PLUGIN_ALTERNATIVES_COUNT" -eq 0 ]; then update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_lua fi ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/rules0000755000000000000000000006700012221140364010244 0ustar #!/usr/bin/make -f include /usr/share/cdbs/1/rules/upstream-tarball.mk include /usr/share/cdbs/1/class/python-module.mk include /usr/share/cdbs/1/rules/debhelper.mk # resolve supported architectures for arch-varying build-dependencies # (in maintainer mode only: uses network and messes with control file) ifneq (,$(DEB_MAINTAINER_MODE)) GREENLET_ARCHS := $(shell sh debian/pkgarchs.sh python-greenlet-dev) OPENJDK6_ARCHS := $(shell sh debian/pkgarchs.sh openjdk-6-jdk) OPENJDK7_ARCHS := $(shell sh debian/pkgarchs.sh openjdk-7-jdk) V8_ARCHS := $(shell sh debian/pkgarchs.sh libv8-dev) debian/control:: sed -i \ -e 's/@greenlet_archs@/$(GREENLET_ARCHS)/g' \ -e 's/@openjdk6_archs@/$(OPENJDK6_ARCHS)/g' \ -e 's/@openjdk7_archs@/$(OPENJDK7_ARCHS)/g' \ -e 's/@v8_archs@/$(V8_ARCHS)/g' \ debian/control endif DEB_UPSTREAM_URL = http://projects.unbit.it/downloads export LDFLAGS=$(shell dpkg-buildflags --get LDFLAGS) export CFLAGS=$(shell dpkg-buildflags --get CFLAGS) export CFLAGS+=$(shell dpkg-buildflags --get CPPFLAGS) export CPPFLAGS=$(shell dpkg-buildflags --get CPPFLAGS) # Common variables # ================ APXS2=/usr/bin/apxs2 APR_CONFIG=/usr/bin/apr-config APU_CONFIG=/usr/bin/apu-config UWSGI_BUILDER = $(CURDIR)/uwsgiconfig.py APACHE2_API = $(shell perl -ne 'print $$1 if m/our\s+\$$API\s+=\s+"(.*)"/' < $(shell which dh_apache2)) PHP_API = $(shell php-config --phpapi) # TODO: Drop this (and its use) when php5-embed ABI is stable in oldstable PHP_VERSION := $(shell dpkg-query -W -f '$${Version}' php5-dev) # TODO: Drop this (and its use) when php5 5.5.0+dfsg-13 is in oldstable PHP_SONAME_ALWAYS_CHANGE := $(shell dpkg --compare-versions '$(PHP_VERSION)' '>=' 5.5.0+dfsg-13~ || echo true) DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) # Dotless versions of Python runtimes (like 'XY'). PYTHON_VERS=$(subst .,,$(cdbs_python_supported_versions)) PYTHON_DEFAULT=$(subst .,,$(cdbs_python_current_version)) PYTHON3_VERS=$(subst .,,$(cdbs_python3_supported_versions)) PYTHON3_DEFAULT=$(subst .,,$(cdbs_python3_current_version)) # Python install path for dh_install, as expected by dh_pythonX helpers # * major and minor included for python 2.x, else only major # * leading slash emitted python_installdir = usr/lib/$(or $(cdbs_curpythonstem:%=python%),$(cdbs_curpythonpribinary))/dist-packages # Search in debian/control for packages with name $(1)% and extract % in list. list_pkgname_suffixes = $(patsubst $(1)%,%,$(filter $(1)%,$(DEB_PACKAGES))) # Transform plugin's package name to plugin's name: # * delete dots # * replace '-' with '_' # * replace 'openjdk_6' with 'openjdk6' # * replace 'openjdk_7' with 'openjdk7' pkg_name_to_plugin_name = $(strip \ $(subst openjdk_7,openjdk7,$(subst openjdk_6,openjdk6,$(subst -,_,$(subst .,,$(1)))) \ )) # List of plugins' packages names (without common prefix 'uwsgi-plugin-') UWSGI_PLUGIN_PKGS_NAMES = $(call list_pkgname_suffixes,uwsgi-plugin-) # List of plugins' names UWSGI_PLUGINS_NAMES = $(call \ pkg_name_to_plugin_name, $(UWSGI_PLUGIN_PKGS_NAMES)) UWSGI_PLUGINS_SRC_DIR = plugins UWSGI_PLUGIN_PYTHON_PKG_KINDS = python python3 PARTICULARLY_BUILT_UWSGI_PLUGIN_PKGS = \ $(UWSGI_PLUGIN_PYTHON_PKG_KINDS) \ greenlet-python \ jvm-openjdk-6 jwsgi-openjdk-6 \ lua5.1 lua5.2 \ jvm-openjdk-7 jwsgi-openjdk-7 \ $(patsubst %,pyerl-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)) \ rack-ruby1.9.1 rbthreads fiber ORDINARILY_BUILT_UWSGI_PLUGIN_PKGS := $(filter-out \ $(PARTICULARLY_BUILT_UWSGI_PLUGIN_PKGS), $(UWSGI_PLUGIN_PKGS_NAMES)) # List of packaged Apache2 modules' names LIBAPACHE2_MODS_NAMES = uwsgi ruwsgi proxy-uwsgi libapache2mod_to_orig = $(subst -,_,$(subst ruwsgi,Ruwsgi,$(1))) # List of templates to instantiate for each libapache2-mod-X package # There is special-case template, not listed here: uwsgi.load LIBAPACHE2_MOD_PKG_TEMPLATES = install postinst prerm UWSGI_CORE_DOCS_STAGING_DIR = $(CURDIR)/debian/uwsgi-core-docs-staging # Discards directory-part of target and returns substring after last '-' # character target_name_tail = $(lastword $(subst -, ,$(notdir $(1)))) # From something like: # $(call <...>, uwsgi-, $(UWSGI_PLUGIN_PYTHON_PKG_KINDS), .dirs) # makes list: # $(CURDIR)/debian/uwsgi-python.dirs $(CURDIR)/debian/uwsgi-python3.dirs files_instantiated_in_debian_dir = $(addprefix \ $(CURDIR)/debian/$(strip $(1)), $(addsuffix $(strip $(3)), $(strip $(2))) \ ) # CDBS-specific variables # ======================= DEB_COMPRESS_EXCLUDE_uwsgi-core = .ini .lua .pl .png .psgi .py .ru .ws .xml \ .yml DEB_COMPRESS_EXCLUDE_uwsgi-extra = .class .java .rb .c DEB_DH_STRIP_ARGS_uwsgi-core := --dbg-package=uwsgi-dbg $(foreach PLUGIN_PKG_NAME, $(UWSGI_PLUGIN_PKGS_NAMES), $(eval \ DEB_DH_STRIP_ARGS_uwsgi-plugin-$(PLUGIN_PKG_NAME) := --dbg-package=uwsgi-dbg\ )) DEB_INSTALL_DOCS_ALL += $(DEB_SRCDIR)/CONTRIBUTORS DEB_DH_INSTALL_ARGS_python-uwsgidecorators = uwsgidecorators.py $(python_installdir) DEB_DH_INSTALL_ARGS_python3-uwsgidecorators = 2to3/uwsgidecorators.py $(python_installdir) DEB_DH_SHLIBDEPS_ARGS_uwsgi-plugin-php = -l/usr/lib/php5 -- --ignore-missing-info CDBS_DEPENDS_uwsgi-plugin-php = phpapi-$(PHP_API) CDBS_DEPENDS_uwsgi-plugin-php +=, $(if $(PHP_SONAME_ALWAYS_CHANGE),\ libphp5-embed (= $(PHP_VERSION)),\ libphp5-embed (>= $(PHP_VERSION)~)) CDBS_DEPENDS_libapache2-mod-proxy-uwsgi = $(APACHE2_API:%=apache2-api-%) CDBS_DEPENDS_libapache2-mod-uwsgi = $(APACHE2_API:%=apache2-api-%) CDBS_DEPENDS_libapache2-mod-ruwsgi = $(APACHE2_API:%=apache2-api-%) # Rules # ===== clean:: # uWSGI executable binaries $(RM) $(CURDIR)/uwsgi-core $(CURDIR)/uwsgi-core-local for PLUGIN_NAME in $(UWSGI_PLUGINS_NAMES); do \ $(RM) $(CURDIR)/uwsgi_$${PLUGIN_NAME}; \ done for PYTHON_VERSION in $(PYTHON_VERS) $(PYTHON3_VERS); do \ $(RM) $(CURDIR)/uwsgi_python$${PYTHON_VERSION}; \ done # converted Python modules rm -rf 2to3 # intermediate compiled files find $(CURDIR) \ \! -path '$(CURDIR)/debian/*' \( -name '*.o' -o -name '*.pyc' \) -type f \ -delete find $(CURDIR) \ \! -path '$(CURDIR)/debian/*' -name __pycache__ -type d \ -delete # plugins for PLUGIN_NAME in $(UWSGI_PLUGINS_NAMES); do \ $(RM) $(CURDIR)/$${PLUGIN_NAME}_plugin.so; \ done for PYVER in $(PYTHON_VERS) $(PYTHON3_VERS); do \ $(RM) \ $(CURDIR)/greenlet_python$${PYVER}_plugin.so \ $(CURDIR)/pyerl_python$${PYVER}_plugin.so \ $(CURDIR)/python$${PYVER}_plugin.so; \ done # compiled Apache2 modules $(RM) -r $(CURDIR)/apache2/.libs $(RM) -r $(addprefix $(CURDIR)/apache2/mod_, \ $(foreach module_name, $(LIBAPACHE2_MODS_NAMES), \ $(addprefix $(call libapache2mod_to_orig, $(module_name)), .la .lo .slo) \ )) # instantiated build configurations $(RM) $(CURDIR)/debian/buildconf/uwsgi-plugin.ini # staging directory of uwsgi-core documentation $(RM) -r $(UWSGI_CORE_DOCS_STAGING_DIR) # instantiated uwsgi-plugin-X templates $(RM) $(call files_instantiated_in_debian_dir, \ uwsgi-plugin-, $(filter-out jwsgi-openjdk-6 jwsgi-openjdk-7, $(UWSGI_PLUGIN_PKGS_NAMES)), \ .install \ ) for TEMPLATE_TYPE in links manpages postinst prerm; do \ for INSTANTIATED_TEMPLATE in $(call files_instantiated_in_debian_dir, \ uwsgi-plugin-, \ $(ORDINARILY_BUILT_UWSGI_PLUGIN_PKGS) \ lua5.1 lua5.2 rack-ruby1.9.1, \ .$${TEMPLATE_TYPE} \ ); do \ if [ -f $(CURDIR)/debian/uwsgi-plugin.$${TEMPLATE_TYPE}.in ]; then \ $(RM) $${INSTANTIATED_TEMPLATE}; \ fi; \ done; \ done for TEMPLATE_TYPE in dirs links manpages postinst prerm; do \ $(RM) $(call files_instantiated_in_debian_dir, \ uwsgi-plugin-, $(UWSGI_PLUGIN_PYTHON_PKG_KINDS), .$${TEMPLATE_TYPE} \ ); \ $(RM) $(call files_instantiated_in_debian_dir, \ uwsgi-plugin-pyerl-, \ $(UWSGI_PLUGIN_PYTHON_PKG_KINDS), .$${TEMPLATE_TYPE} \ ); \ done for TEMPLATE_TYPE in postinst prerm; do \ $(RM) $(call files_instantiated_in_debian_dir, \ uwsgi-plugin-greenlet-, \ $(UWSGI_PLUGIN_PYTHON_PKG_KINDS), .$${TEMPLATE_TYPE} \ ); \ done for TEMPLATE_TYPE in links manpages; do \ $(RM) $(CURDIR)/debian/uwsgi-plugin-jvm-openjdk-6.$${TEMPLATE_TYPE}; \ $(RM) $(CURDIR)/debian/uwsgi-plugin-jvm-openjdk-7.$${TEMPLATE_TYPE}; \ done # instantiated libapache2-mod-X templates for TEMPLATE_TYPE in $(LIBAPACHE2_MOD_PKG_TEMPLATES); do \ $(RM) $(call files_instantiated_in_debian_dir, \ libapache2-mod-, $(LIBAPACHE2_MODS_NAMES), .$${TEMPLATE_TYPE} \ ); \ done $(RM) $(addprefix $(CURDIR)/debian/, \ $(foreach module_name, $(LIBAPACHE2_MODS_NAMES), \ $(addsuffix .load, $(call libapache2mod_to_orig, $(module_name))) \ )) # generated manpages $(RM) $(CURDIR)/debian/uwsgi-core.1 $(RM) $(call files_instantiated_in_debian_dir, \ uwsgi_, $(UWSGI_PLUGINS_NAMES), .1 \ ) $(RM) $(call files_instantiated_in_debian_dir, \ uwsgi_python, $(PYTHON_VERS) $(PYTHON3_VERS), .1 \ ) # stampfiles $(RM) $(CURDIR)/debian/stamp-* $(RM) $(CURDIR)/uwsgibuild.* # uwsgi-core package # ------------------ build/uwsgi-core:: uwsgi-core # TODO: resolve list more generically (to avoid e.g. ZeroMQ exception) uwsgi-core: debian/buildconf/uwsgi-plugin.ini uwsgi-core-local $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --build $(CURDIR)/debian/buildconf/uwsgi-core.ini set -e; for PLUGIN_NAME in \ admin \ alarm_speech \ cache \ carbon \ cgi \ cheaper_backlog2 \ cheaper_busyness \ clock_monotonic \ clock_realtime \ corerouter \ coroae \ echo \ emperor_amqp \ $(if $(filter-out hurd-%,DEB_HOST_ARCH),emperor_zeromq) \ fastrouter \ http \ logfile \ logfile \ logsocket \ nagios \ notfound \ pam \ ping \ rawrouter \ redislog \ router_basicauth \ router_cache \ router_http \ router_memcached \ router_redirect \ router_rewrite \ router_static \ router_uwsgi \ rpc \ rrdtool \ rsyslog \ signal \ spooler \ ssi \ sslrouter \ stats_pusher_statsd \ symcall \ syslog \ transformation_gzip \ transformation_tofile \ transformation_toupper \ ugreen \ zergpool \ ; do \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/$${PLUGIN_NAME} \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $${PLUGIN_NAME}; \ done install/uwsgi-core:: test -e $(UWSGI_CORE_DOCS_STAGING_DIR) \ || mkdir $(UWSGI_CORE_DOCS_STAGING_DIR) cp -r $(CURDIR)/tests $(UWSGI_CORE_DOCS_STAGING_DIR) for SUBDIR in conffile jwsgi psgi rack router wsapi wsgi; do \ mkdir -p $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/$${SUBDIR}; \ done for FILE in logo_uWSGI.png mongrel2-uwsgi.conf examples/simple_logger.py \ examples/staticfilesnmp.py examples/uwsgistatus.py \ examples/welcome.py; do \ cp $(CURDIR)/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples; \ done for FILE in mega.xml multi.ini multi.xml sites.xml uwsgi.xml \ werkzeug_strict.yml werkzeug.js werkzeug.yml; do \ cp $(CURDIR)/examples/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/conffile; \ done cp -r $(CURDIR)/vassals $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/conffile for FILE in examples/config.ru examples/config2.ru examples/fibers.ru \ examples/fibers.yml; do \ cp $(CURDIR)/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/rack; \ done for FILE in examples/router.lua examples/uwsgirouter.py \ examples/uwsgirouter2.py examples/uwsgirouter3.py \ examples/uwsgirouter4.py examples/uwsgirouter5.py; do \ cp $(CURDIR)/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/router; \ done for FILE in examples/mojoapp.pl; do \ cp $(CURDIR)/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/psgi; \ done for FILE in examples/sputnik.ws; do \ cp $(CURDIR)/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/wsapi; \ done for FILE in examples/mjpeg_stream.py examples/multiapp.py examples/simple_app.py \ examples/simple_app_wsgi2.py examples/taskqueue.py; do \ cp $(CURDIR)/$${FILE} $(UWSGI_CORE_DOCS_STAGING_DIR)/examples/wsgi; \ done help2man \ --name 'fast (pure C), self-healing, developer-friendly WSGI server' \ --section 1 \ --no-info \ $(CURDIR)/uwsgi-core \ > $(CURDIR)/debian/uwsgi-core.1; \ # uwsgi-plugin-% packages # ----------------------- # Build uwsgi-plugin-% package $(patsubst %,build/uwsgi-plugin-%,$(UWSGI_PLUGIN_PKGS_NAMES)) \ :: build/uwsgi-plugin-% \ : debian/buildconf/uwsgi-plugin.ini uwsgi-core-local \ debian/stamp-plugin-% debian/buildconf/uwsgi-plugin.ini: sed -e 's|@@curdir@@|$(CURDIR)|g' \ < $(CURDIR)/debian/buildconf/uwsgi-plugin.ini.in \ > $(CURDIR)/debian/buildconf/uwsgi-plugin.ini uwsgi-core-local: $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --build $(CURDIR)/debian/buildconf/uwsgi-plugin.ini # Ordinary building of uWSGI plugins $(patsubst %,debian/stamp-plugin-%,$(ORDINARILY_BUILT_UWSGI_PLUGIN_PKGS)): $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/$(PLUGIN_NAME) \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Build jvm_openjdk6.so and jwsgi_openjdk6.so debian/stamp-plugin-jvm-openjdk-6 debian/stamp-plugin-jwsgi-openjdk-6: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) $(eval PLUGIN_SRC_SUBDIR = $(firstword $(subst _, ,$(PLUGIN_NAME)))) $(eval JAVA_ARCH := $(shell /usr/share/javahelper/java-arch.sh)) UWSGICONFIG_JVM_INCPATH='/usr/lib/jvm/java-6-openjdk-$(DEB_HOST_ARCH)/include/' \ UWSGICONFIG_JVM_LIBPATH='/usr/lib/jvm/java-6-openjdk-$(DEB_HOST_ARCH)/jre/lib/$(JAVA_ARCH)/server/' \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/$(PLUGIN_SRC_SUBDIR) \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Build jvm_openjdk7.so and jwsgi_openjdk7.so debian/stamp-plugin-jvm-openjdk-7 debian/stamp-plugin-jwsgi-openjdk-7: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) $(eval PLUGIN_SRC_SUBDIR = $(firstword $(subst _, ,$(PLUGIN_NAME)))) $(eval JAVA_ARCH := $(shell /usr/share/javahelper/java-arch.sh)) UWSGICONFIG_JVM_INCPATH='/usr/lib/jvm/java-7-openjdk-$(DEB_HOST_ARCH)/include/' \ UWSGICONFIG_JVM_LIBPATH='/usr/lib/jvm/java-7-openjdk-$(DEB_HOST_ARCH)/jre/lib/$(JAVA_ARCH)/server/' \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/$(PLUGIN_SRC_SUBDIR) \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Build pyerl_python2x_plugin.so/pyerl_python3x_plugin.so $(patsubst %,debian/stamp-plugin-pyerl-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)): $(eval PYTHON_KIND = $(call target_name_tail, $@)) $(eval PYVERS = $(cdbs_python$(PYTHON_KIND:python%=%)_supported_versions)) $(foreach python_version,$(PYVERS), \ $(call cdbs_python_binary,python$(python_version)) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/pyerl \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ pyerl_python$(subst .,,$(python_version)); \ ) sed -e 's/@@python_kind@@/$(PYTHON_KIND)/g' \ < $(CURDIR)/debian/uwsgi-plugin-pyerl.dirs.in \ > $(CURDIR)/debian/uwsgi-plugin-pyerl-$(PYTHON_KIND).dirs touch $@ # Build python2x_plugin.so/python3x_plugin.so $(patsubst %,debian/stamp-plugin-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)): $(eval PYTHON_KIND = $(call target_name_tail, $@)) $(eval PYVERS = $(cdbs_python$(PYTHON_KIND:python%=%)_supported_versions)) $(foreach python_version,$(PYVERS), \ $(call cdbs_python_binary,python$(python_version)) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/python \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini\ python$(subst .,,$(python_version)); \ ) sed -e 's/@@python_kind@@/$(PYTHON_KIND)/g' \ < $(CURDIR)/debian/uwsgi-plugin-python.dirs.in \ > $(CURDIR)/debian/uwsgi-plugin-$(PYTHON_KIND).dirs touch $@ # Build greenlet plugin debian/stamp-plugin-greenlet-python: $(foreach python_version,$(cdbs_python_supported_versions), \ $(call cdbs_python_binary,python$(python_version)) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/greenlet \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ greenlet_python$(subst .,,$(python_version)); \ ) touch $@ # Build rbthreads plugin debian/stamp-plugin-rbthreads: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) UWSGICONFIG_RUBYPATH=/usr/bin/ruby1.9.1 \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/$(PLUGIN_NAME) \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Build fiber plugin debian/stamp-plugin-fiber: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) UWSGICONFIG_RUBYPATH=/usr/bin/ruby1.9.1 \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/$(PLUGIN_NAME) \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Build lua51_plugin.so/lua52_plugin.so debian/stamp-plugin-lua5.1 debian/stamp-plugin-lua5.2: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) UWSGICONFIG_LUA_IMPLEMENTATION=$(call target_name_tail, $@) \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/lua \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Build rack_ruby191_plugin.so debian/stamp-plugin-rack-ruby1.9.1: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst stamp-plugin-,,$(notdir $@)) \ )) UWSGICONFIG_RUBYPATH=/usr/bin/$(call target_name_tail, $@) \ $(cdbs_curpythonindepbinary) $(UWSGI_BUILDER) \ --plugin $(CURDIR)/$(UWSGI_PLUGINS_SRC_DIR)/rack \ $(CURDIR)/debian/buildconf/uwsgi-plugin.ini \ $(PLUGIN_NAME) touch $@ # Install uwsgi-plugin-% package for ordinarily built uWSGI plugin $(patsubst %,install/uwsgi-plugin-%,$(ORDINARILY_BUILT_UWSGI_PLUGIN_PKGS)):: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst uwsgi-plugin-,,$(notdir $@)) \ )) for TEMPLATE_TYPE in install links manpages postinst prerm; do \ sed \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ < $(CURDIR)/debian/uwsgi-plugin.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done ln -sf $(CURDIR)/uwsgi-core-local $(CURDIR)/uwsgi_$(PLUGIN_NAME) help2man \ --name 'fast (pure C), self-healing, developer-friendly WSGI server' \ --section 1 \ --no-info \ $(CURDIR)/uwsgi_$(PLUGIN_NAME) \ > $(CURDIR)/debian/uwsgi_$(PLUGIN_NAME).1; \ install/uwsgi-plugin-jvm-openjdk-6 install/uwsgi-plugin-jvm-openjdk-7:: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst uwsgi-plugin-,,$(notdir $@)) \ )) for TEMPLATE_TYPE in install links manpages; do \ sed \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ < $(CURDIR)/debian/uwsgi-plugin.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done ln -sf $(CURDIR)/uwsgi-core-local $(CURDIR)/uwsgi_$(PLUGIN_NAME) help2man \ --name 'fast (pure C), self-healing, developer-friendly WSGI server' \ --section 1 \ --no-info \ $(CURDIR)/uwsgi_$(PLUGIN_NAME) \ > $(CURDIR)/debian/uwsgi_$(PLUGIN_NAME).1; \ # Install uwsgi-plugin-pyerl-python/uwsgi-plugin-pyerl-python3 packages $(patsubst %,install/uwsgi-plugin-pyerl-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)):: $(eval PYTHON_KIND = $(call target_name_tail, $@)) $(eval PYVERS = $($(subst python,PYTHON,$(PYTHON_KIND))_VERS)) $(eval PYDEFAULT = $($(subst python,PYTHON,$(PYTHON_KIND))_DEFAULT)) for TEMPLATE_TYPE in postinst prerm; do \ sed \ -e 's/@@available_python_versions_dotless@@/$(PYVERS)/g' \ -e 's/@@default_python_version_dotless@@/$(PYDEFAULT)/g' \ -e 's/@@python_kind@@/$(PYTHON_KIND)/g' \ < $(CURDIR)/debian/uwsgi-plugin-pyerl.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done for PYTHON_VERSION in $(PYVERS); do \ sed -e "s/@@plugin_name@@/pyerl_python$${PYTHON_VERSION}/g" \ < $(CURDIR)/debian/uwsgi-plugin.install.in \ >> $(CURDIR)/debian/$(cdbs_curpkg).install; \ done # Install uwsgi-plugin-python/uwsgi-plugin-python3 packages $(patsubst %,install/uwsgi-plugin-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)):: $(eval PYTHON_KIND = $(call target_name_tail, $@)) $(eval PYVERS = $($(subst python,PYTHON,$(PYTHON_KIND))_VERS)) $(eval PYDEFAULT = $($(subst python,PYTHON,$(PYTHON_KIND))_DEFAULT)) for TEMPLATE_TYPE in postinst prerm; do \ sed \ -e 's/@@available_python_versions_dotless@@/$(PYVERS)/g' \ -e 's/@@default_python_version_dotless@@/$(PYDEFAULT)/g' \ -e 's/@@python_kind@@/$(PYTHON_KIND)/g' \ < $(CURDIR)/debian/uwsgi-plugin-python.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done for PYTHON_VERSION in $(PYVERS); do \ for TEMPLATE_TYPE in install links manpages; do \ sed -e "s/@@plugin_name@@/python$${PYTHON_VERSION}/g" \ < $(CURDIR)/debian/uwsgi-plugin.$${TEMPLATE_TYPE}.in \ >> $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done; \ ln -sf \ $(CURDIR)/uwsgi-core-local \ $(CURDIR)/uwsgi_python$${PYTHON_VERSION}; \ help2man \ --name 'fast (pure C), self-healing, developer-friendly WSGI server' \ --section 1 \ --no-info \ $(CURDIR)/uwsgi_python$${PYTHON_VERSION} \ > $(CURDIR)/debian/uwsgi_python$${PYTHON_VERSION}.1; \ done install/uwsgi-plugin-greenlet-python:: for TEMPLATE_TYPE in postinst prerm; do \ sed \ -e 's/@@available_python_versions_dotless@@/$(PYTHON_VERS)/g' \ -e 's/@@default_python_version_dotless@@/$(PYTHON_DEFAULT)/g' \ < $(CURDIR)/debian/uwsgi-plugin-greenlet-python.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done for PYTHON_VERSION in $(PYTHON_VERS); do \ sed -e "s/@@plugin_name@@/greenlet_python$${PYTHON_VERSION}/g" \ < $(CURDIR)/debian/uwsgi-plugin.install.in \ >> $(CURDIR)/debian/$(cdbs_curpkg).install; \ done install/uwsgi-plugin-rbthreads:: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst uwsgi-plugin-,,$(notdir $@)) \ )) sed \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ < $(CURDIR)/debian/uwsgi-plugin.install.in \ > $(CURDIR)/debian/$(cdbs_curpkg).install install/uwsgi-plugin-fiber:: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst uwsgi-plugin-,,$(notdir $@)) \ )) sed \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ < $(CURDIR)/debian/uwsgi-plugin.install.in \ > $(CURDIR)/debian/$(cdbs_curpkg).install install/uwsgi-plugin-lua5.1 install/uwsgi-plugin-lua5.2:: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst uwsgi-plugin-,,$(notdir $@)) \ )) $(eval PLUGIN_PRIORITY = $(if $(findstring uwsgi-plugin-lua5.1, $@),75,35)) for TEMPLATE_TYPE in postinst prerm; do \ sed \ -e 's/@@lua_kind@@/$(subst uwsgi-plugin-,,$(notdir $@))/g' \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ -e 's/@@plugin_alternatives_priority@@/$(PLUGIN_PRIORITY)/g' \ < $(CURDIR)/debian/uwsgi-plugin-lua.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done for TEMPLATE_TYPE in install links manpages; do \ sed \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ < $(CURDIR)/debian/uwsgi-plugin.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done ln -sf $(CURDIR)/uwsgi-core-local $(CURDIR)/uwsgi_$(PLUGIN_NAME) help2man \ --name 'fast (pure C), self-healing, developer-friendly WSGI server' \ --section 1 \ --no-info \ $(CURDIR)/uwsgi_$(PLUGIN_NAME) \ > $(CURDIR)/debian/uwsgi_$(PLUGIN_NAME).1 install/uwsgi-plugin-rack-ruby1.9.1:: $(eval PLUGIN_NAME = $(call pkg_name_to_plugin_name, \ $(subst uwsgi-plugin-,,$(notdir $@)) \ )) $(eval PLUGIN_PRIORITY = $(if \ $(findstring uwsgi-plugin-rack-ruby1.9.1, $@),75,35) \ ) for TEMPLATE_TYPE in postinst prerm; do \ sed \ -e 's/@@ruby_kind@@/$(subst uwsgi-plugin-rack-,,$(notdir $@))/g' \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ -e 's/@@plugin_alternatives_priority@@/$(PLUGIN_PRIORITY)/g' \ < $(CURDIR)/debian/uwsgi-plugin-rack.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done for TEMPLATE_TYPE in install links manpages; do \ sed \ -e 's/@@plugin_name@@/$(PLUGIN_NAME)/g' \ < $(CURDIR)/debian/uwsgi-plugin.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE}; \ done ln -sf $(CURDIR)/uwsgi-core-local $(CURDIR)/uwsgi_$(PLUGIN_NAME) help2man \ --name 'fast (pure C), self-healing, developer-friendly WSGI server' \ --section 1 \ --no-info \ $(CURDIR)/uwsgi_$(PLUGIN_NAME) \ > $(CURDIR)/debian/uwsgi_$(PLUGIN_NAME).1 # Binary-post-install uwsgi-plugin-pyerl-% packages $(patsubst %,binary-post-install/uwsgi-plugin-pyerl-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)):: $(eval PYTHON_KIND = $(call target_name_tail, $@)) $(eval PYVERS = $($(subst python,PYTHON,$(PYTHON_KIND))_VERS)) $(eval PYTHON_RTUPDATE_SCRIPT = \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/$(PYTHON_KIND)/runtime.d/uwsgi-plugin-pyerl-$(PYTHON_KIND).rtupdate \ ) sed \ -e 's/@@available_python_versions_dotless@@/$(PYVERS)/g' \ -e 's/@@python_kind@@/$(PYTHON_KIND)/g' \ < $(CURDIR)/debian/uwsgi-plugin-pyerl.rtupdate.in \ > $(PYTHON_RTUPDATE_SCRIPT) chmod 755 $(PYTHON_RTUPDATE_SCRIPT) # Binary-post-install uwsgi-plugin-python/uwsgi-plugin-python3 packages $(patsubst %,binary-post-install/uwsgi-plugin-%,$(UWSGI_PLUGIN_PYTHON_PKG_KINDS)):: $(eval PYTHON_KIND = $(call target_name_tail, $@)) $(eval PYVERS = $($(subst python,PYTHON,$(PYTHON_KIND))_VERS)) $(eval PYTHON_RTUPDATE_SCRIPT = \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/$(PYTHON_KIND)/runtime.d/uwsgi-plugin-$(PYTHON_KIND).rtupdate \ ) sed \ -e 's/@@available_python_versions_dotless@@/$(PYVERS)/g' \ -e 's/@@python_kind@@/$(PYTHON_KIND)/g' \ < $(CURDIR)/debian/uwsgi-plugin-python.rtupdate.in \ > $(PYTHON_RTUPDATE_SCRIPT) chmod 755 $(PYTHON_RTUPDATE_SCRIPT) binary-post-install/uwsgi-plugin-greenlet-python:: $(eval PYTHON_RTUPDATE_SCRIPT = \ $(CURDIR)/debian/$(cdbs_curpkg)/usr/share/python/runtime.d/uwsgi-plugin-greenlet-python.rtupdate \ ) sed \ -e 's/@@available_python_versions_dotless@@/$(PYTHON_VERS)/g' \ < $(CURDIR)/debian/uwsgi-plugin-greenlet-python.rtupdate.in \ > $(PYTHON_RTUPDATE_SCRIPT) chmod 755 $(PYTHON_RTUPDATE_SCRIPT) # libapache2-mod-% packages # ------------------------- # Build libapache2-mod-% package $(patsubst %,build/libapache2-mod-%,$(LIBAPACHE2_MODS_NAMES)):: build/% : debian/stamp-% # Build specific Apache2 module $(patsubst %,debian/stamp-libapache2-mod-%,$(LIBAPACHE2_MODS_NAMES)): $(eval MODULE_NAME = $(call libapache2mod_to_orig, $(subst stamp-libapache2-mod-,,$(notdir $@)))) $(APXS2) -c \ `$(APR_CONFIG) --link-ld` `$(APU_CONFIG) --link-ld` \ $(CURDIR)/apache2/mod_$(MODULE_NAME).c touch $@ # Install libapache2-mod-% package $(patsubst %,install/libapache2-mod-%,$(LIBAPACHE2_MODS_NAMES)):: $(eval MODULE_NAME = $(call libapache2mod_to_orig, $(subst libapache2-mod-,,$(notdir $@)))) # Remove the R from Ruwsgi_module $(eval APACHE_MODULE_NAME = $(subst R,,$(MODULE_NAME))) sed -e 's/@@module_name@@/$(MODULE_NAME)/g' \ -e 's/@@apache_module_name@@/$(APACHE_MODULE_NAME)/g' \ < $(CURDIR)/debian/uwsgi.load.in \ > $(CURDIR)/debian/$(MODULE_NAME).load for TEMPLATE_TYPE in $(LIBAPACHE2_MOD_PKG_TEMPLATES); do \ sed -e 's/@@module_name@@/$(MODULE_NAME)/g' \ < $(CURDIR)/debian/libapache2-mod.$${TEMPLATE_TYPE}.in \ > $(CURDIR)/debian/$(cdbs_curpkg).$${TEMPLATE_TYPE} ; \ done # convert Python 2.x module to Python 3 build/python3-uwsgidecorators:: 2to3/uwsgidecorators.py 2to3/uwsgidecorators.py: mkdir -p 2to3 2to3 --output-dir=2to3 --write --nobackups --no-diffs \ uwsgidecorators.py debian/patches/0000755000000000000000000000000013353215747010627 5ustar debian/patches/2001_verbose_compilation.patch0000644000000000000000000000313312221144320016332 0ustar Description: echo full compilation commandlines to stdout Author: Jonas Smedegaard Last-Update: 2013-09-24 --- a/uwsgiconfig.py +++ b/uwsgiconfig.py @@ -86,7 +86,7 @@ (objfile, cmdline) = compile_queue.get() if objfile: print_lock.acquire() - print("[thread %d][%s] %s" % (num, GCC, objfile)) + print("[thread %d] %s" % (num, cmdline)) print_lock.release() ret = os.system(cmdline) if ret != 0: @@ -170,7 +170,7 @@ def push_command(objfile, cmdline): if not compile_queue: - print("[%s] %s" % (GCC, objfile)) + print(cmdline) ret = os.system(cmdline) if ret != 0: sys.exit(1) @@ -1293,7 +1293,7 @@ need_pic = ' -L. -luwsgi' gccline = "%s%s %s -o %s.so %s %s %s %s" % (GCC, need_pic, shared_flag, plugin_dest, ' '.join(uniq_warnings(p_cflags)), ' '.join(gcc_list), ' '.join(uniq_warnings(p_ldflags)), ' '.join(uniq_warnings(p_libs)) ) - print("[%s] %s.so" % (GCC, plugin_dest)) + print(gccline) ret = os.system(gccline) if ret != 0: @@ -1306,7 +1306,9 @@ for rp in requires: f.write("requires=%s\n" % rp) f.close() - os.system("objcopy %s.so --add-section uwsgi=.uwsgi_plugin_section %s.so" % (plugin_dest, plugin_dest)) + objline = "objcopy %s.so --add-section uwsgi=.uwsgi_plugin_section %s.so" % (plugin_dest, plugin_dest) + print(objline) + os.system(objline) os.unlink('.uwsgi_plugin_section') except: pass debian/patches/020130925~4b60307.patch0000644000000000000000000002156312220517536013661 0ustar Description: preliminary support for Debian kFreeBSD Origin: upstream, https://github.com/unbit/uwsgi/commit/4b6030 Author: Unbit Reviewed-By: Jonas Smedegaard Forwarded: yes Last-Update: 2013-09-25 diff --git a/core/mount.c b/core/mount.c index f1b2145..67d9390 100644 --- a/core/mount.c +++ b/core/mount.c @@ -102,7 +102,7 @@ uint64_t uwsgi_mount_flag(char *mflag) { } int uwsgi_mount(char *fs, char *what, char *where, char *flags) { -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) struct iovec iov[6]; #endif unsigned long mountflags = 0; @@ -121,7 +121,7 @@ int uwsgi_mount(char *fs, char *what, char *where, char *flags) { parsed: #ifdef __linux__ return mount(what, where, fs, mountflags, NULL); -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) iov[0].iov_base = "fstype"; iov[0].iov_len = 7; iov[1].iov_base = fs; @@ -189,7 +189,7 @@ unmountable: free(slashed); } return umount2(where, mountflags); -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) return unmount(where, mountflags); #endif return -1; diff --git a/core/offload.c b/core/offload.c index 8e0bfba..e3a663e 100644 --- a/core/offload.c +++ b/core/offload.c @@ -323,7 +323,7 @@ static int u_offload_sendfile_do(struct uwsgi_thread *ut, struct uwsgi_offload_r if (event_queue_add_fd_write(ut->queue, uor->fd2)) return -1; return 0; } -#if defined(__linux__) || defined(__sun__) +#if defined(__linux__) || defined(__sun__) || defined(__FreeBSD_kernel__) ssize_t len = sendfile(uor->fd2, uor->fd, &uor->pos, 128 * 1024); if (len > 0) { uor->written += len; diff --git a/core/sendfile.c b/core/sendfile.c index 88e0123..2299d40 100644 --- a/core/sendfile.c +++ b/core/sendfile.c @@ -20,7 +20,7 @@ ssize_t uwsgi_sendfile_do(int sockfd, int filefd, size_t pos, size_t len) { int sf_ret = sendfile(filefd, sockfd, pos, &sf_len, NULL, 0); if (sf_ret == 0 || (sf_ret == -1 && errno == EAGAIN)) return sf_len; return -1; -#elif defined(__linux__) || defined(__sun__) +#elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD_kernel__) off_t off = pos; return sendfile(sockfd, filefd, &off, len); #endif diff --git a/core/utils.c b/core/utils.c index a2fc937..21df5dd 100644 --- a/core/utils.c +++ b/core/utils.c @@ -360,7 +360,7 @@ void uwsgi_as_root() { } #endif -#if defined(__FreeBSD__) +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) if (uwsgi.jail && !uwsgi.reloads) { struct jail ujail; @@ -2601,7 +2601,7 @@ char *uwsgi_get_binary_path(char *argvzero) { return newbuf; } } -#elif defined(__FreeBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) char *buf = uwsgi_malloc(uwsgi.page_size); size_t len = uwsgi.page_size; int mib[4]; @@ -2992,7 +2992,7 @@ void uwsgi_set_processname(char *name) { // end with \0 memset(uwsgi.orig_argv[0] + amount + 1 + (uwsgi.max_procname - (amount)), '\0', 1); -#elif defined(__FreeBSD__) || defined(__NetBSD__) +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) if (uwsgi.procname_prefix) { if (!uwsgi.procname_append) { setproctitle("-%s%s", uwsgi.procname_prefix, name); @@ -3389,12 +3389,12 @@ void uwsgi_set_cpu_affinity() { exit(1); } pos += ret; -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD_kernel__) cpu_set_t cpuset; #elif defined(__FreeBSD__) cpuset_t cpuset; #endif -#if defined(__linux__) || defined(__FreeBSD__) +#if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) CPU_ZERO(&cpuset); int i; for (i = 0; i < uwsgi.cpu_affinity; i++) { @@ -3410,7 +3410,7 @@ void uwsgi_set_cpu_affinity() { base_cpu++; } #endif -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD_kernel__) if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) { uwsgi_error("sched_setaffinity()"); } diff --git a/core/uwsgi.c b/core/uwsgi.c index acb8463..b34c668 100644 --- a/core/uwsgi.c +++ b/core/uwsgi.c @@ -308,7 +308,7 @@ static struct uwsgi_option uwsgi_base_options[] = { #ifdef __linux__ {"unshare", required_argument, 0, "unshare() part of the processes and put it in a new namespace", uwsgi_opt_set_unshare, &uwsgi.unshare, 0}, #endif -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) {"jail", required_argument, 0, "put the instance in a FreeBSD jail", uwsgi_opt_set_str, &uwsgi.jail, 0}, {"jail-ip4", required_argument, 0, "add an ipv4 address to the FreeBSD jail", uwsgi_opt_add_string_list, &uwsgi.jail_ip4, 0}, {"jail-ip6", required_argument, 0, "add an ipv6 address to the FreeBSD jail", uwsgi_opt_add_string_list, &uwsgi.jail_ip6, 0}, diff --git a/uwsgi.h b/uwsgi.h index 60d5f3b..488b017 100644 --- a/uwsgi.h +++ b/uwsgi.h @@ -197,7 +197,11 @@ extern "C" { #endif #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD_kernel__) +#include +#endif + +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include #include #include @@ -237,7 +241,7 @@ extern "C" { #include #endif -#if defined(__linux) || defined(__FreeBSD__) +#if defined(__linux) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include #endif @@ -308,6 +312,9 @@ extern int pivot_root(const char *new_root, const char *put_old); #ifdef __linux__ #include #include +#elif defined(__FreeBSD_kernel__) +#include +#include #elif defined(__sun__) #include #include @@ -1872,7 +1879,7 @@ struct uwsgi_server { #endif char *emperor_wrapper; -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) char *jail; struct uwsgi_string_list *jail_ip4; #ifdef AF_INET6 diff --git a/uwsgiconfig.py b/uwsgiconfig.py index 860841b..a6a0ea1 100644 --- a/uwsgiconfig.py +++ b/uwsgiconfig.py @@ -674,6 +674,11 @@ class uConf(object): self.libs.append('-lexecinfo') report['execinfo'] = True + if uwsgi_os == 'GNU/kFreeBSD': + if self.has_include('execinfo.h'): + self.cflags.append('-DUWSGI_HAS_EXECINFO') + report['execinfo'] = True + if self.has_include('zlib.h'): self.cflags.append('-DUWSGI_ZLIB') self.libs.append('-lz') @@ -698,6 +703,10 @@ class uConf(object): if not uwsgi_os_v.startswith('Nexenta'): self.libs.remove('-rdynamic') + if uwsgi_os == 'GNU/kFreeBSD': + if self.has_include('kvm.h'): + kvm_list.append('GNU/kFreeBSD') + if uwsgi_os in kvm_list: self.libs.append('-lkvm') @@ -730,7 +739,7 @@ class uConf(object): locking_mode = 'pthread_mutex' # FreeBSD umtx is still not ready for process shared locking # starting from FreeBSD 9 posix semaphores can be shared between processes - elif uwsgi_os == 'FreeBSD': + elif uwsgi_os in ('FreeBSD', 'GNU/kFreeBSD'): try: fbsd_major = int(uwsgi_os_k.split('.')[0]) if fbsd_major >= 9: @@ -773,7 +782,7 @@ class uConf(object): if int(sun_major) >= 5: if int(sun_minor) >= 10: event_mode = 'port' - elif uwsgi_os in ('Darwin', 'FreeBSD', 'OpenBSD', 'NetBSD', 'DragonFly'): + elif uwsgi_os in ('Darwin', 'FreeBSD', 'GNU/kFreeBSD', 'OpenBSD', 'NetBSD', 'DragonFly'): event_mode = 'kqueue' elif uwsgi_os.startswith('CYGWIN') or uwsgi_os == 'GNU': event_mode = 'poll' @@ -816,7 +825,7 @@ class uConf(object): if int(sun_minor) >= 10: timer_mode = 'port' - elif uwsgi_os in ('Darwin', 'FreeBSD', 'OpenBSD', 'NetBSD', 'DragonFly'): + elif uwsgi_os in ('Darwin', 'FreeBSD', 'GNU/kFreeBSD', 'OpenBSD', 'NetBSD', 'DragonFly'): timer_mode = 'kqueue' if timer_mode == 'timerfd': @@ -843,7 +852,7 @@ class uConf(object): if int(sun_major) >= 5: if int(sun_minor) >= 10: filemonitor_mode = 'port' - elif uwsgi_os in ('Darwin', 'FreeBSD', 'OpenBSD', 'NetBSD', 'DragonFly'): + elif uwsgi_os in ('Darwin', 'FreeBSD', 'GNU/kFreeBSD', 'OpenBSD', 'NetBSD', 'DragonFly'): filemonitor_mode = 'kqueue' if filemonitor_mode == 'inotify': @@ -952,7 +961,7 @@ class uConf(object): uwsgi_version += self.get('append_version') - if uwsgi_os == 'FreeBSD' and self.has_include('jail.h'): + if uwsgi_os in ('FreeBSD','GNU/kFreeBSD') and self.has_include('jail.h'): self.cflags.append('-DUWSGI_HAS_FREEBSD_LIBJAIL') self.libs.append('-ljail') debian/patches/1001_avoid_setting_RPATH.patch0000644000000000000000000000247612216023744016106 0ustar Description: Remove value assignments to environment variable LD_RUN_PATH Value assignment to environment variable LD_RUN_PATH leads to setting RPATH in compiled binary/shared library. . And then Lintian reports about error (E: binary-or-shlib-defines-rpath). Author: Leonid Borisenko Author: Janos Guljas Forwarded: not-needed Last-Update: 2013-04-24 --- a/plugins/rack/uwsgiplugin.py +++ b/plugins/rack/uwsgiplugin.py @@ -44,7 +44,6 @@ if has_shared == 'yes': LDFLAGS.append('-L' + libpath ) - os.environ['LD_RUN_PATH'] = libpath LIBS.append(os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip()) else: rubylibdir = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['rubylibdir']\"").read().rstrip() --- a/plugins/python/uwsgiplugin.py +++ b/plugins/python/uwsgiplugin.py @@ -44,10 +44,8 @@ else: try: LDFLAGS.append("-L%s" % sysconfig.get_config_var('LIBDIR')) - os.environ['LD_RUN_PATH'] = "%s" % (sysconfig.get_config_var('LIBDIR')) except: LDFLAGS.append("-L%s/lib" % sysconfig.PREFIX) - os.environ['LD_RUN_PATH'] = "%s/lib" % sysconfig.PREFIX LIBS.append('-lpython%s' % get_python_version()) else: debian/patches/CVE-2018-7490.patch0000644000000000000000000000277613353215724013265 0ustar From 0a480f435ea6feb63deb410ad2bf376ed3f05f8a Mon Sep 17 00:00:00 2001 From: Unbit Date: Sat, 17 Feb 2018 14:10:29 +0100 Subject: [PATCH] enforce php default document_root behaviour, to not show external files --- plugins/php/php_plugin.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --- a/plugins/php/php_plugin.c +++ b/plugins/php/php_plugin.c @@ -24,6 +24,7 @@ struct uwsgi_php { #endif struct uwsgi_string_list *vars; char *docroot; + size_t docroot_len; char *app; char *app_qs; char *fallback; @@ -575,6 +576,8 @@ int uwsgi_php_init(void) { uwsgi_log("unable to set php docroot to %s\n", orig_docroot); exit(1); } + uwsgi_log("PHP document root set to %s\n", uphp.docroot); + uphp.docroot_len = strlen(uphp.docroot); } uwsgi_sapi_module.startup(&uwsgi_sapi_module); @@ -755,6 +758,7 @@ oldstyle: free(filename); real_filename_len = strlen(real_filename); + // first check for valid doc roots if (uphp.allowed_docroot) { struct uwsgi_string_list *usl = uphp.allowed_docroot; while(usl) { @@ -767,6 +771,16 @@ oldstyle: uwsgi_log("PHP security error: %s is not under an allowed docroot\n", real_filename); return -1; } + // then for default docroot (if any) + else if (uphp.docroot) + { + if (!uwsgi_starts_with(real_filename, real_filename_len, uphp.docroot, uphp.docroot_len)) { + goto secure; + } + uwsgi_403(wsgi_req); + uwsgi_log("PHP security error: %s is not under the default docroot\n", real_filename); + return -1; + } secure: debian/patches/CVE-2018-6758.patch0000644000000000000000000000176413353215747013274 0ustar From ed1c3bbc6cfc4d566401526fd21ba0984dd7b22a Mon Sep 17 00:00:00 2001 From: Unbit Date: Tue, 6 Feb 2018 16:01:47 +0100 Subject: [PATCH] improve uwsgi_expand_path() to sanitize input, avoiding stack corruption and potential security issue --- core/utils.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) --- a/core/utils.c +++ b/core/utils.c @@ -3358,9 +3358,12 @@ void uwsgi_write_pidfile(char *pidfile_n } char *uwsgi_expand_path(char *dir, int dir_len, char *ptr) { - char src[PATH_MAX + 1]; - memcpy(src, dir, dir_len); - src[dir_len] = 0; + if (dir_len > PATH_MAX) + { + uwsgi_log("invalid path size: %d (max %d)\n", dir_len, PATH_MAX); + return NULL; + } + char *src = uwsgi_concat2n(dir, dir_len, "", 0); char *dst = ptr; if (!dst) dst = uwsgi_malloc(PATH_MAX + 1); @@ -3368,8 +3371,10 @@ char *uwsgi_expand_path(char *dir, int d uwsgi_error_realpath(src); if (!ptr) free(dst); + free(src); return NULL; } + free(src); return dst; } debian/patches/series0000644000000000000000000000050613353215741012037 0ustar 020130925~4b60307.patch 020130925~b190744.patch 1001_avoid_setting_RPATH.patch 1002_fix-reload-process-name.patch 1003_remove-php-libs.patch 1004_fix-php-ldflags.patch 1005_emperor-pg-fix-cflags.patch 1006_avoid_clone_on_IA64.patch 1007_fix_linkage.patch 2001_verbose_compilation.patch CVE-2018-7490.patch CVE-2018-6758.patch debian/patches/1005_emperor-pg-fix-cflags.patch0000644000000000000000000000120012215261247016374 0ustar Description: Remove -Wformat-security flag to fix build error cc1: error: -Wformat-security ignored without -Wformat [-Werror=format-security] Author: Janos Guljas Last-Update: 2013-07-08 --- a/plugins/emperor_pg/uwsgiplugin.py +++ b/plugins/emperor_pg/uwsgiplugin.py @@ -2,6 +2,7 @@ NAME='emperor_pg' CFLAGS = os.popen('pg_config --cflags').read().rstrip().split() +CFLAGS.remove('-Wformat-security') CFLAGS.append('-I' + os.popen('pg_config --includedir').read().rstrip()) LDFLAGS = os.popen('pg_config --ldflags').read().rstrip().split() LIBS = ['-L' + os.popen('pg_config --libdir').read().rstrip(), '-lpq'] debian/patches/020130925~b190744.patch0000644000000000000000000000122412220517640013652 0ustar Description: on kFreeBSD python atexit will make mess, disable it for now Origin: upstream, https://github.com/unbit/uwsgi/commit/b19074 Author: Unbit Reviewed-By: Jonas Smedegaard Forwarded: yes Last-Update: 2013-09-25 diff --git a/plugins/python/python_plugin.c b/plugins/python/python_plugin.c index aeaa9eb..acba17a 100644 --- a/plugins/python/python_plugin.c +++ b/plugins/python/python_plugin.c @@ -308,6 +308,10 @@ realstuff: // this time we use this higher level function // as this code can be executed in a signal handler +#ifdef __FreeBSD_kernel__ + return; +#endif + if (!Py_IsInitialized()) { return; } debian/patches/1004_fix-php-ldflags.patch0000644000000000000000000000073312220207316015265 0ustar Description: Include libphp5-embed ld library path when building PHP plugin. Author: Janos Guljas Last-Update: 2012-04-23 --- a/plugins/php/uwsgiplugin.py +++ b/plugins/php/uwsgiplugin.py @@ -14,6 +14,7 @@ CFLAGS = [os.popen(PHPPATH + ' --includes').read().rstrip(), '-Wno-sign-compare'] LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split() +LDFLAGS.append('-L/usr/lib/php5') if ld_run_path: LDFLAGS.append('-L%s' % ld_run_path) debian/patches/1007_fix_linkage.patch0000644000000000000000000000247312221144307014567 0ustar Description: Fix linkage for GNU/Hurd and GNU/kFreeBSD Author: Jonas Smedegaard Last-Update: 2013-09-26 --- a/uwsgiconfig.py +++ b/uwsgiconfig.py @@ -598,8 +598,10 @@ self.ldflags = os.environ.get("LDFLAGS", "").split() self.libs = ['-lpthread', '-lm', '-rdynamic'] - if uwsgi_os == 'Linux': + if uwsgi_os in ('Linux', 'GNU', 'GNU/kFreeBSD'): self.libs.append('-ldl') + if uwsgi_os == 'GNU/kFreeBSD': + self.libs.append('-lbsd') # check for inherit option inherit = self.get('inherit') @@ -953,7 +955,7 @@ if self.has_include('uuid/uuid.h'): has_uuid = True self.cflags.append("-DUWSGI_UUID") - if uwsgi_os == 'Linux' or uwsgi_os.startswith('CYGWIN') or os.path.exists('/usr/lib/libuuid.so') or os.path.exists('/usr/local/lib/libuuid.so') or os.path.exists('/usr/lib64/libuuid.so') or os.path.exists('/usr/local/lib64/libuuid.so'): + if uwsgi_os in ('Linux', 'GNU', 'GNU/kFreeBSD') or uwsgi_os.startswith('CYGWIN') or os.path.exists('/usr/lib/libuuid.so') or os.path.exists('/usr/local/lib/libuuid.so') or os.path.exists('/usr/lib64/libuuid.so') or os.path.exists('/usr/local/lib64/libuuid.so'): self.libs.append('-luuid') if self.get('append_version'): debian/patches/1006_avoid_clone_on_IA64.patch0000644000000000000000000000431612221143125016002 0ustar Description: Avoid use of clone() on IA64 where apperently broken Workaround for FTBFS on IA64: https://buildd.debian.org/status/fetch.php?pkg=uwsgi&arch=ia64&ver=1.9.17.1-2&stamp=1380102648 Author: Jonas Smedegaard Last-Update: 2013-09-26 --- a/core/emperor.c +++ b/core/emperor.c @@ -817,7 +817,7 @@ // TODO pre-start hook // a new uWSGI instance will start -#if defined(__linux__) && !defined(OBSOLETE_LINUX_KERNEL) +#if defined(__linux__) && !defined(OBSOLETE_LINUX_KERNEL) && !defined(__ia64__) if (uwsgi.emperor_clone) { char stack[PTHREAD_STACK_MIN]; pid = clone((int (*)(void *))uwsgi_emperor_spawn_vassal, stack + PTHREAD_STACK_MIN, SIGCHLD | uwsgi.emperor_clone, (void *) n_ui); @@ -825,7 +825,7 @@ else { #endif pid = fork(); -#if defined(__linux__) && !defined(OBSOLETE_LINUX_KERNEL) +#if defined(__linux__) && !defined(OBSOLETE_LINUX_KERNEL) && !defined(__ia64__) } #endif if (pid < 0) { --- a/core/uwsgi.c +++ b/core/uwsgi.c @@ -2386,7 +2386,7 @@ // TODO pluginize basic Linux namespace support -#ifdef __linux__ +#if defined(__linux__) && !defined(__ia64__) if (uwsgi.ns) { linux_namespace_start((void *) uwsgi.argv); // never here @@ -2394,7 +2394,7 @@ else { #endif uwsgi_start((void *) uwsgi.argv); -#ifdef __linux__ +#if defined(__linux__) && !defined(__ia64__) } #endif @@ -2408,7 +2408,7 @@ int i, j; -#ifdef __linux__ +#if defined(__linux__) && !defined(__ia64__) uwsgi_set_cgroup(); if (uwsgi.ns) { --- a/uwsgi.h +++ b/uwsgi.h @@ -3155,8 +3155,10 @@ int uwsgi_str4_num(char *); #ifdef __linux__ +#ifndef __ia64__ void linux_namespace_start(void *); void linux_namespace_jail(void); +#endif int uwsgi_netlink_veth(char *, char *); int uwsgi_netlink_veth_attach(char *, pid_t); int uwsgi_netlink_ifup(char *); --- a/uwsgiconfig.py +++ b/uwsgiconfig.py @@ -530,7 +530,8 @@ report['kernel'] = uwsgi_os if uwsgi_os == 'Linux': - self.gcc_list.append('lib/linux_ns') + if uwsgi_cpu != 'ia64': + self.gcc_list.append('lib/linux_ns') try: lk_ver = uwsgi_os_k.split('.') if int(lk_ver[0]) <= 2 and int(lk_ver[1]) <= 6 and int(lk_ver[2]) <= 9: debian/patches/README0000644000000000000000000000021111611277037011474 0ustar 0xxx: Grabbed from upstream development. 1xxx: Possibly relevant for upstream adoption. 2xxx: Only relevant for official Debian release. debian/patches/1003_remove-php-libs.patch0000644000000000000000000000070512220206305015304 0ustar Description: Remove PHP libraries when building PHP plugin. Author: Janos Guljas Last-Update: 2013-02-07 --- a/plugins/php/uwsgiplugin.py +++ b/plugins/php/uwsgiplugin.py @@ -19,7 +19,7 @@ LDFLAGS.append('-L%s' % ld_run_path) os.environ['LD_RUN_PATH'] = ld_run_path -LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp5'] +LIBS = ['-lphp5'] phplibdir = os.environ.get('UWSGICONFIG_PHPLIBDIR') if phplibdir: debian/patches/1002_fix-reload-process-name.patch0000644000000000000000000000162112220206276016723 0ustar Description: Preserve process name on reload Function uwsgi_reload is using uwsgi.binary_path as first argument in execvp(). If the daemon is started through a symlink, uwsgi_reload will use that link's target and change the process name. With a different process name start-stop-daemon, used in init scripts, is unable to control the daemon. Author: Janos Guljas Last-Update: 2013-04-23 --- a/core/master_utils.c +++ b/core/master_utils.c @@ -479,7 +479,7 @@ uwsgi_log("running %s\n", uwsgi.binary_path); uwsgi_flush_logs(); - argv[0] = uwsgi.binary_path; + //argv[0] = uwsgi.binary_path; //strcpy (argv[0], uwsgi.binary_path); if (uwsgi.log_master) { if (uwsgi.original_log_fd > -1) { @@ -493,7 +493,7 @@ close(uwsgi.shared->worker_log_pipe[1]); } } - execvp(uwsgi.binary_path, argv); + execvp(argv[0], argv); uwsgi_error("execvp()"); // never here exit(1); debian/uwsgi-plugin.postinst.in0000644000000000000000000000237512214577571014054 0ustar #!/bin/sh # postinst script for uwsgi-plugin-@@plugin_name@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_@@plugin_name@@ \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_@@plugin_name@@.1.gz ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-pyerl.dirs.in0000644000000000000000000000004412214577571014252 0ustar usr/share/@@python_kind@@/runtime.d debian/uwsgi-plugin-greenlet-python.postinst.in0000644000000000000000000000302612214577571017170 0ustar #!/bin/sh # postinst script for uwsgi-plugin-greenlet-python # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) PYVER_DEFAULT_DOTLESS=@@default_python_version_dotless@@ for PYVER_DOTLESS in @@available_python_versions_dotless@@; do if [ "x$PYVER_DOTLESS" = "x$PYVER_DEFAULT_DOTLESS" ]; then ALTERNATIVE_PRIORITY=75 else ALTERNATIVE_PRIORITY=35 fi update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/greenlet_python_plugin.so \ uwsgi-plugin-greenlet-python \ /usr/lib/uwsgi/plugins/greenlet_python${PYVER_DOTLESS}_plugin.so \ $ALTERNATIVE_PRIORITY done ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-rack.postinst.in0000644000000000000000000000441612214577571014770 0ustar #!/bin/sh # postinst script for uwsgi-plugin-rack-@@ruby_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/rack_plugin.so \ uwsgi-plugin-rack \ /usr/lib/uwsgi/plugins/@@plugin_name@@_plugin.so \ @@plugin_alternatives_priority@@ \ --slave \ /usr/bin/uwsgi_rack \ uwsgi_rack \ /usr/bin/uwsgi-core \ --slave \ /usr/share/man/man1/uwsgi_rack.1.gz \ uwsgi_rack.1.gz \ /usr/share/man/man1/uwsgi_@@plugin_name@@.1.gz update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_@@plugin_name@@ \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_@@plugin_name@@.1.gz UWSGI_RACK_BINARY_IS_UWSGI_ALTERNATIVE="$(\ update-alternatives --list uwsgi 2>/dev/null \ | grep '/uwsgi_rack$' \ | wc -l \ )" if [ "$UWSGI_RACK_BINARY_IS_UWSGI_ALTERNATIVE" -eq 0 ]; then update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_rack \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_rack.1.gz fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/gbp.conf0000644000000000000000000000030312215261247010603 0ustar # Configuration for git-buildpackage and affiliated tools [DEFAULT] debian-branch = master upstream-branch = upstream pristine-tar = True sign-tags = True [git-import-orig] filter = .gitignore debian/uwsgi-core.init.d.custom0000644000000000000000000001003212214577571013701 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: uwsgi-core # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop custom uWSGI server instance ### END INIT INFO # Author: Leonid Borisenko # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME="custom_instance_name_here" # Introduce the short server's name here SCRIPTNAME=/etc/init.d/$NAME DESC="custom configured app server" # Introduce a short description here DAEMON=/usr/bin/uwsgi-core # Introduce the server's location here UWSGI_UID=www-data # Introduce uWSGI uid here UWSGI_GID=www-data # Introduve uWSGI gid here UWSGI_RUNDIR=/run/uwsgi-core UWSGI_SPECIFIC_RUNDIR="$UWSGI_RUNDIR/$NAME" PIDFILE=$UWSGI_SPECIFIC_RUNDIR/pid DAEMON_ARGS=" \ --daemonize /var/log/uwsgi-core/${NAME}.log \ --pidfile $PIDFILE \ --uid $UWSGI_UID \ --gid $UWSGI_GID \ --xmlconfig /etc/uwsgi-core/${NAME}.xml \ " # Exit if the package is not installed [ -x $DAEMON ] || exit 0 # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # Return: # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started do_start() { install -d -o root -g root -m 755 $UWSGI_RUNDIR install -d -o $UWSGI_UID -g $UWSGI_GID -m 755 $UWSGI_SPECIFIC_RUNDIR start-stop-daemon --start --quiet \ --pidfile $PIDFILE \ --exec $DAEMON \ --test > /dev/null \ || return 1 start-stop-daemon --start --quiet \ --pidfile $PIDFILE \ --exec $DAEMON -- $DAEMON_ARGS \ || return 2 local INTERVAL_START=$(date +%s) local INTERVAL_END=$(date +%s) local WAITING=2 # seconds # Wait until daemon getting to create pidfile. while [ ! -e "$PIDFILE" ]; do INTERVAL_END=$(date +%s) if [ $(expr $INTERVAL_END - $INTERVAL_START) -gt $WAITING ]; then return fi sleep 0.05 done chown root:root $PIDFILE chmod 644 $PIDFILE return 0 } # Return: # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred do_stop() { start-stop-daemon --stop --quiet \ --retry=QUIT/30/KILL/5 \ --pidfile $PIDFILE \ --exec $DAEMON RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 rm -rf $RUNDIR return "$RETVAL" } # Return: # 0 if daemon has been reloaded # 3 if daemon could not be reloaded do_reload() { start-stop-daemon --stop --quiet \ --signal=HUP \ --pidfile $PIDFILE \ --exec $DAEMON RETVAL="$?" # There is no such process, nothing to reload! [ "$RETVAL" = 1 ] && RETVAL=3 return "$RETVAL" } # Return: # 0 if daemon has been reloaded # 3 if daemon could not be reloaded do_force_reload() { start-stop-daemon --stop --quiet \ --signal=TERM \ --pidfile $PIDFILE \ --exec $DAEMON RETVAL="$?" # There is no such process, nothing to reload! [ "$RETVAL" = 1 ] && RETVAL=3 return "$RETVAL" } case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" do_start log_end_msg "$?" ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" do_stop log_end_msg "$?" ;; status) status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" \ && exit 0 \ || exit $? ;; reload) log_daemon_msg "Reloading $DESC" "$NAME" do_reload log_end_msg "$?" ;; force-reload) log_daemon_msg "Forced reloading $DESC" "$NAME" do_force_reload log_end_msg "$RETVAL" ;; restart) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0) do_start log_end_msg "$?" ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 exit 3 ;; esac : debian/control0000644000000000000000000010137113353215774010606 0ustar Source: uwsgi Section: web Priority: extra Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Janos Guljas Uploaders: Jonas Smedegaard Build-Depends: cdbs, debhelper (>= 8), apache2-dev | apache2-threaded-dev, erlang-dev, help2man, javahelper, libapr1-dev, libaprutil1-dev, libjansson-dev, libldap2-dev, liblua5.1-0-dev, liblua5.2-dev, libperl-dev, libpq-dev, libcurl4-openssl-dev, libgloox-dev, libpam0g-dev, libsqlite3-dev, libxml2-dev, libyaml-dev, libzmq3-dev [!hurd-any] | libzmq-dev [!kfreebsd-any !hurd-any], libphp5-embed, php5-dev, libonig-dev, libdb-dev, libqdbm-dev, libbz2-dev, libwrap0-dev, libgnustep-gui-dev, libgnustep-base-dev, libcoro-perl, libgeoip-dev, libv8-dev [amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mipsel], libxslt1-dev, libcap-dev [linux-any], libmatheval-dev, libjail-dev [kfreebsd-any], libkvm-dev [kfreebsd-any], pkg-config, python, python-all-dev, python-greenlet-dev [amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc], python3-all-dev, openjdk-6-jdk [amd64 armel armhf i386 ia64 mips mipsel powerpc s390 s390x sparc], openjdk-7-jdk [amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 powerpc s390 s390x sparc], ruby1.9.1, ruby1.9.1-dev, uuid-dev Standards-Version: 3.9.4 Homepage: http://projects.unbit.it/uwsgi/ Vcs-Git: git://anonscm.debian.org/collab-maint/uwsgi.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/uwsgi.git Package: uwsgi Architecture: any Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), lsb-base, initscripts (>= 2.88dsf-13.3) Recommends: sqlite3 Description: fast, self-healing application container server uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . uWSGI can be run in preforking, threaded, asynchronous/evented modes and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Fiber). uWSGI provides several methods of configuration: via command line, via environment variables, via XML, INI, YAML configuration files, via LDAP and more. . On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package depends on uWSGI core binary and installs: * init.d script for running uWSGI daemon(s) with options defined in custom user-created configuration files * infrastructure for running daemons (like common locations of communication sockets, logs) Package: uwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, uwsgi-core (= ${binary:Version}) Suggests: uwsgi-plugins-all Description: debugging symbols for uWSGI server and it's plugins uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for uWSGI core binary and plugins. Install this package if you need to debug such a program or if you need a useful backtrace of a crash. Package: uwsgi-core Architecture: any Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: nginx-full | cherokee | libapache2-mod-proxy-uwsgi | libapache2-mod-uwsgi | libapache2-mod-ruwsgi, uwsgi-plugins-all, uwsgi-extra Replaces: wsgi-plugin-admin, uwsgi-plugin-cache, uwsgi-plugin-carbon, uwsgi-plugin-cgi, uwsgi-plugin-echo, uwsgi-plugin-emperor-zeromq, uwsgi-plugin-fastrouter, uwsgi-plugin-http, uwsgi-plugin-logsocket, uwsgi-plugin-nagios, uwsgi-plugin-ping, uwsgi-plugin-router-static, uwsgi-plugin-rpc, uwsgi-plugin-rrdtool, uwsgi-plugin-rsyslog, uwsgi-plugin-signal, uwsgi-plugin-symcall, uwsgi-plugin-syslog, uwsgi-plugin-ugreen Conflicts: wsgi-plugin-admin, uwsgi-plugin-cache, uwsgi-plugin-carbon, uwsgi-plugin-cgi, uwsgi-plugin-echo, uwsgi-plugin-emperor-zeromq, uwsgi-plugin-fastrouter, uwsgi-plugin-http, uwsgi-plugin-logsocket, uwsgi-plugin-nagios, uwsgi-plugin-ping, uwsgi-plugin-router-static, uwsgi-plugin-rpc, uwsgi-plugin-rrdtool, uwsgi-plugin-rsyslog, uwsgi-plugin-signal, uwsgi-plugin-symcall, uwsgi-plugin-syslog, uwsgi-plugin-ugreen Description: fast, self-healing application container server (core) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . uWSGI can be run in preforking, threaded, asynchronous/evented modes and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Fiber). uWSGI provides several methods of configuration: via command line, via environment variables, via XML, INI, YAML configuration files, via LDAP and more. . On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides: * executable uWSGI core binary (built without any embedded plugins) * uWSGI usage examples * uWSGI test suite * plugins that do not require additional dependencies: - admin - alarm_speech - cache - carbon - cgi - cheaper_backlog2 - cheaper_busyness - clock_monothonic - clock_realtime - corerouter - coroae - echo - emperor_amqp - emperor_zeromq (on supported architectures) - fastrouter - http - logfile - logfile - logsocket - nagios - notfound - pam - ping - rawrouter - redislog - router_basicauth - router_cache - router_http - router_memcached - router_redirect - router_rewrite - router_static - router_uwsgi - rpc - rrdtool - rsyslog - signal - spooler - ssi - sslrouter - stats_pusher_statsd - symcall - syslog - transformation_gzip - transformation_tofile - transformation_toupper - ugreen - zergpool Package: uwsgi-emperor Architecture: any Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), lsb-base, initscripts (>= 2.88dsf-13.3) Description: fast, self-healing application container server (emperor scripts) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . uWSGI can be run in preforking, threaded, asynchronous/evented modes and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Fiber). uWSGI provides several methods of configuration: via command line, via environment variables, via XML, INI, YAML configuration files, via LDAP and more. . On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package depends on uWSGI core binary and installs: * init.d script for running uWSGI Emperor daemon with options defined in custom user-created configuration files * basic configuration for running uWSGI Emperor daemon Package: uwsgi-plugins-all Architecture: any Depends: ${misc:Depends}, uwsgi-infrastructure-plugins (= ${binary:Version}), uwsgi-app-integration-plugins (= ${binary:Version}), uwsgi-plugin-rbthreads (= ${binary:Version}), uwsgi-plugin-fiber (= ${binary:Version}), uwsgi-plugin-greenlet-python (= ${binary:Version}) [amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc], uwsgi-plugin-php (= ${binary:Version}), uwsgi-plugin-pyerl-python (= ${binary:Version}), uwsgi-plugin-pyerl-python3 (= ${binary:Version}) Description: all available plugins for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This dependency package provides all available plugins for uWSGI: * infrastructure plugins (HTTP serving, RPC, etc.) * plugins for integration of uWSGI and application (PSGI, Rack, WSGI, etc.) * fiber loop engine, greenlet (Python), pyerl (Python/Python 3) Package: uwsgi-infrastructure-plugins Architecture: any Depends: ${misc:Depends}, uwsgi-plugin-alarm-curl (= ${binary:Version}), uwsgi-plugin-alarm-xmpp (= ${binary:Version}), uwsgi-plugin-curl-cron (= ${binary:Version}), uwsgi-plugin-emperor-pg (= ${binary:Version}), uwsgi-plugin-graylog2 (= ${binary:Version}), uwsgi-plugin-geoip (= ${binary:Version}), uwsgi-plugin-ldap (= ${binary:Version}), uwsgi-plugin-router-access (= ${binary:Version}), uwsgi-plugin-sqlite3 (= ${binary:Version}), uwsgi-plugin-xslt (= ${binary:Version}) Description: infrastructure plugins for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This dependency package provides infrastructure plugins for uWSGI: * alarm curl * alarm XMPP * curl cron * PostgreSQL emperor * graylog2 * GeoIP * LDAP * router access * sqlite3 * XSLT request Package: uwsgi-app-integration-plugins Architecture: any Depends: ${misc:Depends}, uwsgi-plugin-erlang (= ${binary:Version}), uwsgi-plugin-jvm-openjdk-6 (= ${binary:Version}) [amd64 armel armhf i386 ia64 mips mipsel powerpc s390 s390x sparc], uwsgi-plugin-jvm-openjdk-7 (= ${binary:Version}) [amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 powerpc s390 s390x sparc], uwsgi-plugin-jwsgi-openjdk-6 (= ${binary:Version}) [amd64 armel armhf i386 ia64 mips mipsel powerpc s390 s390x sparc], uwsgi-plugin-jwsgi-openjdk-7 (= ${binary:Version}) [amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 powerpc s390 s390x sparc], uwsgi-plugin-lua5.1 (= ${binary:Version}), uwsgi-plugin-lua5.2 (= ${binary:Version}), uwsgi-plugin-php (= ${binary:Version}), uwsgi-plugin-psgi (= ${binary:Version}), uwsgi-plugin-python (= ${binary:Version}), uwsgi-plugin-python3 (= ${binary:Version}), uwsgi-plugin-rack-ruby1.9.1 (= ${binary:Version}), uwsgi-plugin-v8 (= ${binary:Version}) [amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mipsel] Description: plugins for integration of uWSGI and application uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This dependency package provides plugins for integration of uWSGI and application: * Erlang * Java (OpenJDK 6 and 7) * JWSGI (OpenJDK 6 and 7) * Lua WSAPI (Lua 5.1 and 5.2) * PHP * Perl PSGI * Python WSGI (Python/Python 3) * Rack (Ruby 1.9.1) * V8 Package: uwsgi-plugin-alarm-curl Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Alarm curl plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides alarm_curl plugin for uWSGI. Package: uwsgi-plugin-alarm-xmpp Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Alarm XMPP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides alarm_xmpp plugin for uWSGI. Package: uwsgi-plugin-curl-cron Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: curl cron plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides curl_cron plugin for uWSGI. Package: uwsgi-plugin-emperor-pg Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Emperor PostgreSQL plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides emperor_pg plugin for uWSGI. Package: uwsgi-plugin-erlang Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Erlang plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Erlang plugin for uWSGI. Package: uwsgi-plugin-rbthreads Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), uwsgi-plugin-rack-ruby1.9.1 (= ${binary:Version}) Description: Ruby native threads plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Ruby 1.9 native threads plugin for uWSGI. Package: uwsgi-plugin-fiber Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), uwsgi-plugin-rack-ruby1.9.1 (= ${binary:Version}) Description: fiber loop engine plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Ruby 1.9 fiber loop engine plugin for uWSGI. Fibers are a form of coroutine, useful for implementing cooperative multitasking in your Ruby 1.9.x apps. Package: uwsgi-plugin-geoip Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: GeoIP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides geoip plugin for uWSGI. Package: uwsgi-plugin-graylog2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: graylog2 plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides graylog2 plugin for uWSGI. Package: uwsgi-plugin-greenlet-python Architecture: amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 s390x sparc Depends: ${shlibs:Depends}, ${misc:Depends}, python-greenlet, uwsgi-plugin-python (= ${binary:Version}) Description: greenlet plugin for uWSGI (Python) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides greenlet plugin for uWSGI with Python WSGI plugin. Package: uwsgi-plugin-jvm-openjdk-6 Architecture: amd64 armel armhf i386 ia64 mips mipsel powerpc s390 s390x sparc Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), openjdk-6-jre-headless Description: Java plugin for uWSGI (OpenJDK 6) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Java plugin for uWSGI (linked with OpenJDK Java 6 runtime). Package: uwsgi-plugin-jvm-openjdk-7 Architecture: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 powerpc s390 s390x sparc Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), openjdk-7-jre-headless Description: Java plugin for uWSGI (OpenJDK 7) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Java plugin for uWSGI (linked with OpenJDK Java 7 runtime). Package: uwsgi-plugin-jwsgi-openjdk-6 Architecture: amd64 armel armhf i386 ia64 mips mipsel powerpc s390 s390x sparc Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-jvm-openjdk-6 (= ${binary:Version}), openjdk-6-jre-headless Description: JWSGI plugin for uWSGI (OpenJDK 6) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides JWSGI plugin for uWSGI (linked with OpenJDK Java 6 runtime). Package: uwsgi-plugin-jwsgi-openjdk-7 Architecture: amd64 armel armhf i386 ia64 kfreebsd-amd64 kfreebsd-i386 powerpc s390 s390x sparc Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-jvm-openjdk-7 (= ${binary:Version}), openjdk-7-jre-headless Description: JWSGI plugin for uWSGI (OpenJDK 7) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides JWSGI plugin for uWSGI (linked with OpenJDK Java 7 runtime). Package: uwsgi-plugin-ldap Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: LDAP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides ldap plugin for uWSGI. Package: uwsgi-plugin-lua5.1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Lua WSAPI plugin for uWSGI (Lua 5.1) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Lua WSAPI plugin for uWSGI (linked with Lua 5.1 runtime). Package: uwsgi-plugin-lua5.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Lua WSAPI plugin for uWSGI (Lua 5.2) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Lua WSAPI plugin for uWSGI (linked with Lua 5.2 runtime). Package: uwsgi-plugin-psgi Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Perl PSGI plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Perl PSGI plugin for uWSGI. Package: uwsgi-plugin-pyerl-python Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-python (= ${binary:Version}), uwsgi-plugin-erlang (= ${binary:Version}) Description: pyerl plugin for uWSGI (Python) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides pyerl plugin for uWSGI with Python WSGI plugin. Package: uwsgi-plugin-pyerl-python3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-python3 (= ${binary:Version}), uwsgi-plugin-erlang (= ${binary:Version}) Description: pyerl plugin for uWSGI (Python 3) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides pyerl plugin for uWSGI with Python 3 WSGI plugin. Package: uwsgi-plugin-python Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Provides: httpd-wsgi Suggests: python-uwsgidecorators Description: Python WSGI plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Python WSGI plugin for uWSGI (linked with Python 2.X runtime). Package: uwsgi-plugin-python3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Provides: httpd-wsgi Suggests: python3-uwsgidecorators Description: Python 3 WSGI plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Python 3 WSGI plugin for uWSGI (linked with Python 3.X runtime). Package: uwsgi-plugin-rack-ruby1.9.1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Rack plugin for uWSGI (Ruby 1.9.1) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Rack plugin for uWSGI (linked with Ruby 1.9.1 runtime). Package: uwsgi-plugin-router-access Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Access router plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides router_access plugin for uWSGI. Package: uwsgi-plugin-sqlite3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: sqlite3 configurations plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides sqlite plugin for uWSGI, which allows loading configurations from sqlite3 db. Package: uwsgi-plugin-v8 Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mipsel Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: V8 JavaScript plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides V8 plugin for uWSGI. Package: uwsgi-plugin-php Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), ${cdbs:Depends} Description: PHP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides PHP plugin for uWSGI. Package: uwsgi-plugin-xslt Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: XSLT request plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides xslt plugin for uWSGI. Package: libapache2-mod-proxy-uwsgi Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${cdbs:Depends} Description: uwsgi proxy module for Apache2 (mod_uwsgi) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . This package provides Apache2 module for communicating with uWSGI. . It is a proxy module, so it provides all of the futures exported by mod_proxy. . It is fully Apache API compliant and it should be easily integrated with all of the available modules. Package: libapache2-mod-proxy-uwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, libapache2-mod-proxy-uwsgi (= ${binary:Version}) Description: debugging symbols for Apache2 mod_proxy_uwsgi uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for Apache2 mod_proxy_uwsgi. Install this package if you need to debug module or if you need a useful backtrace of a crash. Package: libapache2-mod-uwsgi Architecture: any Section: httpd Depends: ${shlibs:Depends}, ${misc:Depends}, ${cdbs:Depends} Conflicts: libapache2-mod-ruwsgi Replaces: libapache2-mod-ruwsgi Description: uwsgi module for Apache2 (mod_uwsgi) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . This package provides Apache2 module for communicating with uWSGI. . This is the first module developed, it is stable but a bit hacky (it does not fully use the Apache2 API). Package: libapache2-mod-uwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, libapache2-mod-uwsgi (= ${binary:Version}) Description: debugging symbols for Apache2 mod_uwsgi uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for Apache2 mod_uwsgi. Install this package if you need to debug module or if you need a useful backtrace of a crash. Package: libapache2-mod-ruwsgi Architecture: any Section: httpd Depends: ${shlibs:Depends}, ${misc:Depends}, ${cdbs:Depends} Conflicts: libapache2-mod-uwsgi Replaces: libapache2-mod-uwsgi Description: uwsgi module for Apache2 (mod_Ruwsgi) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . This package provides Apache2 module for communicating with uWSGI. . This is the second module developed and it's more Apache2 API friendly. Package: libapache2-mod-ruwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, libapache2-mod-ruwsgi (= ${binary:Version}) Description: debugging symbols for Apache2 mod_Ruwsgi uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for Apache2 mod_Ruwsgi. Install this package if you need to debug module or if you need a useful backtrace of a crash. Package: python-uwsgidecorators Architecture: all Section: python Depends: ${python:Depends}, ${misc:Depends}, uwsgi-core, uwsgi-plugin-python Description: module of decorators for elegant access to uWSGI API (Python) uwsgidecorators is a simple Python module that exports a bunch of decorators to allow a more elegant approach to uWSGI API. Provided decorators helps with creating of RPC functions, timers, filemonitors. . This package provides uwsgidecorators module, accessible from Python 2.X runtime. Package: python3-uwsgidecorators Architecture: all Section: python Depends: ${python3:Depends}, ${misc:Depends}, uwsgi-core, uwsgi-plugin-python3 Description: module of decorators for elegant access to uWSGI API (Python 3) uwsgidecorators is a simple Python module that exports a bunch of decorators to allow a more elegant approach to uWSGI API. Provided decorators helps with creating of RPC functions, timers, filemonitors. . This package provides uwsgidecorators module, accessible from Python 3.X runtime. . uwsgidecorators module doesn't targeted at Python 3 officially, so some decorators may not work or work improperly. Package: uwsgi-extra Architecture: all Depends: ${misc:Depends} Description: fast, self-healing application container server (extra files) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package provides extra files from uWSGI distribution. debian/uwsgi-core.README.Debian0000644000000000000000000000160712214577571013331 0ustar Initscript for running uWSGI daemon =================================== There is an example of simple init.d script in /usr/share/doc/uwsgi-core/uwsgi-core.init.d.custom.gz Gunzip it to (something like) /etc/init.d/uwsgi-custom-daemon, then edit copied file and change: * '# Provides:' comment and NAME variable with value of 'uwsgi-custom-daemon' (or whatever you've named copied file) * UWSGI_UID, UWSGI_GID and DAEMON_ARGS variables with values suitable to your needs Then execute: chmod a+x /etc/init.d/uwsgi-custom-daemon update-rc.d uwsgi-custom-daemon defaults And for removing your custom init.d script execute: update-rc.d uwsgi-custom-daemon remove rm /etc/init.d/uwsgi-custom-daemon Before starting of uWSGI daemon, manually create appropriate directories for logfiles and configuration files. Look for it's default values in value of DAEMON_ARGS variable. debian/source/0000755000000000000000000000000012220201537010460 5ustar debian/source/format0000644000000000000000000000001412214577571011707 0ustar 3.0 (quilt) debian/uwsgi.NEWS0000644000000000000000000000147512214577571011044 0ustar uwsgi (0.9.8.3-2) unstable; urgency=low Locations of runtime directory of uWSGI instance and logfiles are changed. In previous package' versions runtime files of uWSGI instance were located at directory /run/uwsgi/ Now, they are located at directory /run/uwsgi/app/ So, communication UNIX socket of uWSGI instance is now located at '/run/uwsgi/app//socket'. It is necessary to make appropriate changes in upstream server configuration (if any). Otherwise upstream server will be unable to communicate to uWSGI and behavior of whole web-application stack will be broken. Logfile location is changed from /var/log/uwsgi/.log to /var/log/uwsgi/app/.log -- Leonid Borisenko Wed, 27 Jul 2011 17:39:06 +0300 debian/uwsgi-plugin-jvm-openjdk-7.postinst0000644000000000000000000000432412214577571016031 0ustar #!/bin/sh # postinst script for uwsgi-plugin-jvm-openjdk-7 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/jvm_plugin.so \ uwsgi-plugin-jvm \ /usr/lib/uwsgi/plugins/jvm_openjdk7_plugin.so \ 75 \ --slave \ /usr/bin/uwsgi_jvm \ uwsgi_jvm \ /usr/bin/uwsgi-core \ --slave \ /usr/share/man/man1/uwsgi_jvm.1.gz \ uwsgi_jvm.1.gz \ /usr/share/man/man1/uwsgi_jvm_openjdk7.1.gz update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_jvm_openjdk7 \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_jvm_openjdk7.1.gz UWSGI_JVM_BINARY_IS_UWSGI_ALTERNATIVE="$(\ update-alternatives --list uwsgi 2>/dev/null \ | grep '/uwsgi_jvm$' \ | wc -l \ )" if [ "$UWSGI_JVM_BINARY_IS_UWSGI_ALTERNATIVE" -eq 0 ]; then update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_jvm \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_jvm.1.gz fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-core.docs0000644000000000000000000000015512214577571012140 0ustar debian/uwsgi-core-docs-staging/examples debian/uwsgi-core-docs-staging/tests debian/uwsgi-core.init.d.custom debian/uwsgi-plugin-pyerl.prerm.in0000644000000000000000000000221512214577571014440 0ustar #!/bin/sh # prerm script for uwsgi-plugin-pyerl-@@python_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) for PYVER_DOTLESS in @@available_python_versions_dotless@@; do update-alternatives --quiet \ --remove \ uwsgi-plugin-pyerl-@@python_kind@@ \ /usr/lib/uwsgi/plugins/pyerl_python${PYVER_DOTLESS}_plugin.so done ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin.manpages.in0000644000000000000000000000003712214577571013755 0ustar debian/uwsgi_@@plugin_name@@.1 debian/uwsgi-plugin-jwsgi-openjdk-6.postinst0000644000000000000000000000224412214577571016356 0ustar #!/bin/sh # postinst script for uwsgi-plugin-jwsgi-openjdk-6 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/jwsgi_plugin.so \ uwsgi-plugin-jwsgi \ /usr/lib/uwsgi/plugins/jwsgi_openjdk6_plugin.so \ 35 ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi.install0000644000000000000000000000015512216347511011717 0ustar debian/uwsgi-files/etc/* etc debian/uwsgi-files/conf usr/share/uwsgi debian/uwsgi-files/init usr/share/uwsgi debian/copyright0000644000000000000000000000317412215261247011130 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: uWSGI Upstream-Contact: uWSGI developers and users list Roberto De Ioris Source: http://projects.unbit.it/uwsgi/ git://github.com/unbit/uwsgi Files: * Copyright: 2009-2013, Unbit S.a.s License: GPL-2+ Files: apache2/mod_Ruwsgi.c Copyright: 2009-2010, Roger Florkowski 2009-2010, Unbit S.a.s License: GPL-2+ Files: core/rb_timers.c Copyright: Igor Sysoev Nginx, Inc. Unbit S.a.s. License: GPL-2+ Files: core/hash.c Copyright: Austin Appleby License: GPL-2+ Applies only to murmur2_hash function adapted from nginx. Files: debian/* Copyright: 2012-2013, Janos Guljas 2010, Leonid Borisenko License: GPL-2+ License: GPL-2+ 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 program. If not, see . On Debian systems, the complete text of the GNU General Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". debian/uwsgi.links0000644000000000000000000000017012214577571011377 0ustar usr/share/doc/uwsgi-core/tests usr/share/doc/uwsgi/tests usr/share/doc/uwsgi-core/examples usr/share/doc/uwsgi/examples debian/uwsgi-core.manpages0000644000000000000000000000002412214577571012776 0ustar debian/uwsgi-core.1 debian/uwsgi-plugin-jwsgi-openjdk-7.install0000644000000000000000000000005712214577571016142 0ustar jwsgi_openjdk7_plugin.so usr/lib/uwsgi/plugins debian/uwsgi-plugin-python.dirs.in0000644000000000000000000000004412214577571014440 0ustar usr/share/@@python_kind@@/runtime.d debian/uwsgi-plugin-jwsgi-openjdk-6.install0000644000000000000000000000005712214577571016141 0ustar jwsgi_openjdk6_plugin.so usr/lib/uwsgi/plugins debian/uwsgi-plugin-jvm-openjdk-7.lintian-overrides0000644000000000000000000000037512214577571017606 0ustar # Allow RPATH against libjvm.so in OpenJDK, # until http://bugs.debian.org/562622 is solved. uwsgi-plugin-jvm-openjdk-7 binary: binary-or-shlib-defines-rpath usr/lib/uwsgi/plugins/jvm_openjdk7_plugin.so "/usr/lib/jvm/java-7-openjdk-*/jre/lib/*/server/" debian/uwsgi-emperor.default0000644000000000000000000000065112214577571013356 0ustar # Defaults for uWSGI Emperor initscript # sourced by /etc/init.d/uwsgi-emperor # Run automatically at system startup? ENABLED=yes # At startup VERBOSE value is setted in 'no'. So when user invokes # uWSGI init.d script, no output is showed. # It could be unexpected behaviour, because it is common practice for # init.d script to ignore VERBOSE value. # Here VERBOSE is overriden to conform such the practice. VERBOSE=yes debian/uwsgi-core.install0000644000000000000000000000410512221140364012635 0ustar uwsgi-core usr/bin admin_plugin.so usr/lib/uwsgi/plugins alarm_speech_plugin.so usr/lib/uwsgi/plugins cache_plugin.so usr/lib/uwsgi/plugins carbon_plugin.so usr/lib/uwsgi/plugins cgi_plugin.so usr/lib/uwsgi/plugins cheaper_backlog2_plugin.so usr/lib/uwsgi/plugins cheaper_busyness_plugin.so usr/lib/uwsgi/plugins clock_monotonic_plugin.so usr/lib/uwsgi/plugins clock_realtime_plugin.so usr/lib/uwsgi/plugins corerouter_plugin.so usr/lib/uwsgi/plugins coroae_plugin.so usr/lib/uwsgi/plugins echo_plugin.so usr/lib/uwsgi/plugins emperor_amqp_plugin.so usr/lib/uwsgi/plugins emperor_zeromq_plugin.so usr/lib/uwsgi/plugins fastrouter_plugin.so usr/lib/uwsgi/plugins http_plugin.so usr/lib/uwsgi/plugins logfile_plugin.so usr/lib/uwsgi/plugins logfile_plugin.so usr/lib/uwsgi/plugins logsocket_plugin.so usr/lib/uwsgi/plugins nagios_plugin.so usr/lib/uwsgi/plugins notfound_plugin.so usr/lib/uwsgi/plugins pam_plugin.so usr/lib/uwsgi/plugins ping_plugin.so usr/lib/uwsgi/plugins rawrouter_plugin.so usr/lib/uwsgi/plugins rawrouter_plugin.so usr/lib/uwsgi/plugins redislog_plugin.so usr/lib/uwsgi/plugins router_basicauth_plugin.so usr/lib/uwsgi/plugins router_cache_plugin.so usr/lib/uwsgi/plugins router_http_plugin.so usr/lib/uwsgi/plugins router_memcached_plugin.so usr/lib/uwsgi/plugins router_redirect_plugin.so usr/lib/uwsgi/plugins router_rewrite_plugin.so usr/lib/uwsgi/plugins router_static_plugin.so usr/lib/uwsgi/plugins router_uwsgi_plugin.so usr/lib/uwsgi/plugins rpc_plugin.so usr/lib/uwsgi/plugins rrdtool_plugin.so usr/lib/uwsgi/plugins rsyslog_plugin.so usr/lib/uwsgi/plugins signal_plugin.so usr/lib/uwsgi/plugins spooler_plugin.so usr/lib/uwsgi/plugins ssi_plugin.so usr/lib/uwsgi/plugins sslrouter_plugin.so usr/lib/uwsgi/plugins stats_pusher_statsd_plugin.so usr/lib/uwsgi/plugins symcall_plugin.so usr/lib/uwsgi/plugins syslog_plugin.so usr/lib/uwsgi/plugins transformation_gzip_plugin.so usr/lib/uwsgi/plugins transformation_tofile_plugin.so usr/lib/uwsgi/plugins transformation_toupper_plugin.so usr/lib/uwsgi/plugins ugreen_plugin.so usr/lib/uwsgi/plugins zergpool_plugin.so usr/lib/uwsgi/plugins debian/uwsgi.README.Debian0000644000000000000000000002042312214577571012400 0ustar Contents: 1. Automatic starting of instances of uWSGI 2. Owner, group and permissions of UNIX socket and pidfile 3. Commands recognized by init.d script 4. Controling specific instances of uWSGI 5. Status of executing init.d command for specific instance 6. Alternatives of /usr/bin/uwsgi executable Automatic starting of instances of uWSGI ======================================== On boot init.d script automatically starts one instance of uWSGI for each configuration file found in /etc/uwsgi/apps-enabled. Note: sub-directories of /etc/uwsgi/apps-enabled (if any) are also searched for configuration files. Though it can be useful feature, rules of searching order and choosing between same named files from several directories might be a little confusing ('find' command is used for searching and ordering of search results). As a general anticonfusion rule, you must strictly avoid creating of same named files in several directories ('name' here meant as the file name without extension). 'configuration file' is the file with one of following extensions (listed in alphabetical order): db, ini, js, json, sqlite, sqlite3, xml, yaml, yml When files with the same name but different extensions are found, only one of them will be processed: first in sorting by alphabetic order. Path to found configuration file is passed to new uWSGI instance as value of appropriate option, basing on file extension: * ini | --ini | expecting INI format * js, json | --json | expecting JSON format * db, sqlite, sqlite3 | --sqlite | expecting SQLite3 database * xml | --xmlconfig | expecting XML format * yaml, yml | --yaml | expecting YAML format INI configuration file may be empty. Example of INI configuration: [uwsgi] uid = uwsgi_user gid = uwsgi_group socket = /tmp/uwsgi.sock JSON configuration file must contain at least following content: { "uwsgi": {} } Example of more realistic JSON configuration: { "uwsgi": { "uid": "uwsgi_user", "gid": "uwsgi_group", "socket": "/tmp/uwsgi.sock" }} XML configuration file must contain at least following content: Example of more realistic XML configuration: uwsgi_user uwsgi_group /tmp/uwsgi.sock SQLite3 configuration database must contain 'uwsgi' table. First column of this table must contain valid option name and second column must contain appropriate option value. Name of columns aren't significant. All other columns (except first and second) are ignored. Example of creating of SQLite3 configuration: $ sqlite3 /etc/uwsgi/apps-enabled/example.sqlite sqlite> CREATE TABLE uwsgi (option_name varchar, option_value varchar); sqlite> INSERT INTO uwsgi VALUES ('uid', 'uwsgi_user'); sqlite> INSERT INTO uwsgi VALUES ('gid', 'uwsgi_group'); sqlite> INSERT INTO uwsgi VALUES ('socket', '/tmp/uwsgi.sock'); YAML configuration file may be empty. Example of YAML configuration: uwsgi: uid: uwsgi_uwser gid: uwsgi_group socket: /tmp/uwsgi.sock For list of options passed by default to each started instance look at file, defined by option INHERITED_CONFIG in /etc/default/uwsgi. Service files of started uWSGI instance are located in directory named after configuration file (without extension): * UNIX socket | /run/uwsgi/app//socket * pidfile | /run/uwsgi/app//pid Log of started uWSGI instance is placed at /var/log/uwsgi/app/.log Owner, group and permissions of UNIX socket and pidfile ======================================================= After starting of uWSGI instance init.d script tries to chown and/or chmod: * pidfile | chown root:root | chmod 644 * UNIX socket | | chmod 660 * directory with these files | chown : | chmod 755 If mentioned directory doesn't exist it will be created. Note that this directory will be chowned/chmodded only if it was created by init.d script. init.d script tries to parse configuration file for values of uid/gid. If such the key/tag didn't found, script tries to parse file, defined by option INHERITED_CONFIG in /etc/default/uwsgi, for 'uid' or 'gid' option. If even this fails, directory will be chowned to 'root'. Note: for possibility of parsing of SQLite3 configuration database /usr/bin/sqlite3 executable must be available in system. It is provided by 'sqlite3' package. If it isn't available, parsing of configuration database will be silently skipped. Chmodding of UNIX socket is made by using of uWSGI option 'chmod-socket'. Commands recognized by init.d script ==================================== You can issue to init.d script following commands: * start | starts daemon * stop | stops daemon * reload | sends to daemon SIGHUP signal * force-reload | sends to daemon SIGTERM signal * restart | issues 'stop', then 'start' commands * status | shows status of daemon instance (running/not running) 'status' command must be issued with exactly one argument: ''. Controling specific instances of uWSGI ====================================== You could control specific instance(s) by issuing: service uwsgi ... where: * is one of 'start', 'stop' etc. * is the name of configuration file (without extension) For example, this is how instance for /etc/uwsgi/apps-enabled/hello.xml is started: service uwsgi start hello Status of executing init.d command for specific instance ======================================================== In init.d script output: * . -- command was executed without problems or instance is already in needed state * ! -- command failed (or executed with some problems) * ? -- configuration file for this instance isn't found and this instance is ignored Let's see by example: service uwsgi start ario wrogn googl moogl Output: <...> -> . ? . ! failed! It means that: * 'ario' and 'googl' instances was started without problems (or was already ran before executing 'start' command) * configuration file for 'wrogn' wasn't found * starting 'moogl' was failed In this example (as one of instances failed to start), init.d script output ends with 'failed!' message. But generally, output ends with 'done.' message: <...> -> . . . done. With changing of appropriate setting in /etc/default/uwsgi, init.d script could print configuration file names instead of one-character symbols: * -- command was executed without problems * ! -- command is failed (or executed with some problems) * ? -- configuration file for this instance isn't found and this instance is ignored * () -- instance is already in needed state Let's see by example: service uwsgi start ario wrogn googl moogl Output: <...> -> (ario) wrogn? googl moogl! failed! It means that: * 'ario' instance was already ran before executing 'start' command * configuration file for 'wrogn' wasn't found * 'googl' is started without problems * starting 'moogl' was failed Return value of init.d script is the number of instances with '!' mark. Alternatives of /usr/bin/uwsgi executable ========================================= init.d script runs uWSGI instances with command /usr/bin/uwsgi. /usr/bin/uwsgi executable is provided with using of Debian alternatives system. It is registered as master link in link group with generic name 'uwsgi' and, by default, references to /usr/bin/uwsgi-core. Most of plugins' packages provides /usr/bin/uwsgi_plugin_name executable. It is a simple symlink to /usr/bin/uwsgi-core. When uWSGI notices that it has been called with name 'uwsgi_smth' it is automagically loads appropriate plugin shared library with name 'smth_plugin.so'. Every executable /usr/bin/uwsgi_plugin_name is added as low-priority alternative to link group 'uwsgi'. Because of low priority, it doesn't change automatically current choice of alternative in group. /usr/bin/uwsgi can be manually configured as reference to /usr/bin/uwsgi_plugin_name with command: # update-alternatives --config uwsgi debian/control.in0000644000000000000000000007747613353215774011235 0ustar Source: uwsgi Section: web Priority: extra Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Janos Guljas Uploaders: Jonas Smedegaard Build-Depends: cdbs, debhelper (>= 8), apache2-dev | apache2-threaded-dev, erlang-dev, help2man, javahelper, libapr1-dev, libaprutil1-dev, libjansson-dev, libldap2-dev, liblua5.1-0-dev, liblua5.2-dev, libperl-dev, libpq-dev, libcurl4-openssl-dev, libgloox-dev, libpam0g-dev, libsqlite3-dev, libxml2-dev, libyaml-dev, libzmq3-dev [!hurd-any] | libzmq-dev [!kfreebsd-any !hurd-any], libphp5-embed, php5-dev, libonig-dev, libdb-dev, libqdbm-dev, libbz2-dev, libwrap0-dev, libgnustep-gui-dev, libgnustep-base-dev, libcoro-perl, libgeoip-dev, libv8-dev [@v8_archs@], libxslt1-dev, libcap-dev [linux-any], libmatheval-dev, libjail-dev [kfreebsd-any], libkvm-dev [kfreebsd-any], pkg-config, python, python-all-dev, python-greenlet-dev [@greenlet_archs@], python3-all-dev, openjdk-6-jdk [@openjdk6_archs@], openjdk-7-jdk [@openjdk7_archs@], ruby1.9.1, ruby1.9.1-dev, uuid-dev Standards-Version: 3.9.4 Homepage: http://projects.unbit.it/uwsgi/ Vcs-Git: git://anonscm.debian.org/collab-maint/uwsgi.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/uwsgi.git Package: uwsgi Architecture: any Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), lsb-base, initscripts (>= 2.88dsf-13.3) Recommends: sqlite3 Description: fast, self-healing application container server uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . uWSGI can be run in preforking, threaded, asynchronous/evented modes and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Fiber). uWSGI provides several methods of configuration: via command line, via environment variables, via XML, INI, YAML configuration files, via LDAP and more. . On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package depends on uWSGI core binary and installs: * init.d script for running uWSGI daemon(s) with options defined in custom user-created configuration files * infrastructure for running daemons (like common locations of communication sockets, logs) Package: uwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, uwsgi-core (= ${binary:Version}) Suggests: uwsgi-plugins-all Description: debugging symbols for uWSGI server and it's plugins uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for uWSGI core binary and plugins. Install this package if you need to debug such a program or if you need a useful backtrace of a crash. Package: uwsgi-core Architecture: any Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: nginx-full | cherokee | libapache2-mod-proxy-uwsgi | libapache2-mod-uwsgi | libapache2-mod-ruwsgi, uwsgi-plugins-all, uwsgi-extra Replaces: wsgi-plugin-admin, uwsgi-plugin-cache, uwsgi-plugin-carbon, uwsgi-plugin-cgi, uwsgi-plugin-echo, uwsgi-plugin-emperor-zeromq, uwsgi-plugin-fastrouter, uwsgi-plugin-http, uwsgi-plugin-logsocket, uwsgi-plugin-nagios, uwsgi-plugin-ping, uwsgi-plugin-router-static, uwsgi-plugin-rpc, uwsgi-plugin-rrdtool, uwsgi-plugin-rsyslog, uwsgi-plugin-signal, uwsgi-plugin-symcall, uwsgi-plugin-syslog, uwsgi-plugin-ugreen Conflicts: wsgi-plugin-admin, uwsgi-plugin-cache, uwsgi-plugin-carbon, uwsgi-plugin-cgi, uwsgi-plugin-echo, uwsgi-plugin-emperor-zeromq, uwsgi-plugin-fastrouter, uwsgi-plugin-http, uwsgi-plugin-logsocket, uwsgi-plugin-nagios, uwsgi-plugin-ping, uwsgi-plugin-router-static, uwsgi-plugin-rpc, uwsgi-plugin-rrdtool, uwsgi-plugin-rsyslog, uwsgi-plugin-signal, uwsgi-plugin-symcall, uwsgi-plugin-syslog, uwsgi-plugin-ugreen Description: fast, self-healing application container server (core) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . uWSGI can be run in preforking, threaded, asynchronous/evented modes and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Fiber). uWSGI provides several methods of configuration: via command line, via environment variables, via XML, INI, YAML configuration files, via LDAP and more. . On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides: * executable uWSGI core binary (built without any embedded plugins) * uWSGI usage examples * uWSGI test suite * plugins that do not require additional dependencies: - admin - alarm_speech - cache - carbon - cgi - cheaper_backlog2 - cheaper_busyness - clock_monothonic - clock_realtime - corerouter - coroae - echo - emperor_amqp - emperor_zeromq (on supported architectures) - fastrouter - http - logfile - logfile - logsocket - nagios - notfound - pam - ping - rawrouter - redislog - router_basicauth - router_cache - router_http - router_memcached - router_redirect - router_rewrite - router_static - router_uwsgi - rpc - rrdtool - rsyslog - signal - spooler - ssi - sslrouter - stats_pusher_statsd - symcall - syslog - transformation_gzip - transformation_tofile - transformation_toupper - ugreen - zergpool Package: uwsgi-emperor Architecture: any Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), lsb-base, initscripts (>= 2.88dsf-13.3) Description: fast, self-healing application container server (emperor scripts) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . uWSGI can be run in preforking, threaded, asynchronous/evented modes and supports various forms of green threads/coroutines (such as uGreen, Greenlet, Fiber). uWSGI provides several methods of configuration: via command line, via environment variables, via XML, INI, YAML configuration files, via LDAP and more. . On top of all this, it is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package depends on uWSGI core binary and installs: * init.d script for running uWSGI Emperor daemon with options defined in custom user-created configuration files * basic configuration for running uWSGI Emperor daemon Package: uwsgi-plugins-all Architecture: any Depends: ${misc:Depends}, uwsgi-infrastructure-plugins (= ${binary:Version}), uwsgi-app-integration-plugins (= ${binary:Version}), uwsgi-plugin-rbthreads (= ${binary:Version}), uwsgi-plugin-fiber (= ${binary:Version}), uwsgi-plugin-greenlet-python (= ${binary:Version}) [@greenlet_archs@], uwsgi-plugin-php (= ${binary:Version}), uwsgi-plugin-pyerl-python (= ${binary:Version}), uwsgi-plugin-pyerl-python3 (= ${binary:Version}) Description: all available plugins for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This dependency package provides all available plugins for uWSGI: * infrastructure plugins (HTTP serving, RPC, etc.) * plugins for integration of uWSGI and application (PSGI, Rack, WSGI, etc.) * fiber loop engine, greenlet (Python), pyerl (Python/Python 3) Package: uwsgi-infrastructure-plugins Architecture: any Depends: ${misc:Depends}, uwsgi-plugin-alarm-curl (= ${binary:Version}), uwsgi-plugin-alarm-xmpp (= ${binary:Version}), uwsgi-plugin-curl-cron (= ${binary:Version}), uwsgi-plugin-emperor-pg (= ${binary:Version}), uwsgi-plugin-graylog2 (= ${binary:Version}), uwsgi-plugin-geoip (= ${binary:Version}), uwsgi-plugin-ldap (= ${binary:Version}), uwsgi-plugin-router-access (= ${binary:Version}), uwsgi-plugin-sqlite3 (= ${binary:Version}), uwsgi-plugin-xslt (= ${binary:Version}) Description: infrastructure plugins for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This dependency package provides infrastructure plugins for uWSGI: * alarm curl * alarm XMPP * curl cron * PostgreSQL emperor * graylog2 * GeoIP * LDAP * router access * sqlite3 * XSLT request Package: uwsgi-app-integration-plugins Architecture: any Depends: ${misc:Depends}, uwsgi-plugin-erlang (= ${binary:Version}), uwsgi-plugin-jvm-openjdk-6 (= ${binary:Version}) [@openjdk6_archs@], uwsgi-plugin-jvm-openjdk-7 (= ${binary:Version}) [@openjdk7_archs@], uwsgi-plugin-jwsgi-openjdk-6 (= ${binary:Version}) [@openjdk6_archs@], uwsgi-plugin-jwsgi-openjdk-7 (= ${binary:Version}) [@openjdk7_archs@], uwsgi-plugin-lua5.1 (= ${binary:Version}), uwsgi-plugin-lua5.2 (= ${binary:Version}), uwsgi-plugin-php (= ${binary:Version}), uwsgi-plugin-psgi (= ${binary:Version}), uwsgi-plugin-python (= ${binary:Version}), uwsgi-plugin-python3 (= ${binary:Version}), uwsgi-plugin-rack-ruby1.9.1 (= ${binary:Version}), uwsgi-plugin-v8 (= ${binary:Version}) [@v8_archs@] Description: plugins for integration of uWSGI and application uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This dependency package provides plugins for integration of uWSGI and application: * Erlang * Java (OpenJDK 6 and 7) * JWSGI (OpenJDK 6 and 7) * Lua WSAPI (Lua 5.1 and 5.2) * PHP * Perl PSGI * Python WSGI (Python/Python 3) * Rack (Ruby 1.9.1) * V8 Package: uwsgi-plugin-alarm-curl Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Alarm curl plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides alarm_curl plugin for uWSGI. Package: uwsgi-plugin-alarm-xmpp Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Alarm XMPP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides alarm_xmpp plugin for uWSGI. Package: uwsgi-plugin-curl-cron Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: curl cron plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides curl_cron plugin for uWSGI. Package: uwsgi-plugin-emperor-pg Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Emperor PostgreSQL plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides emperor_pg plugin for uWSGI. Package: uwsgi-plugin-erlang Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Erlang plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Erlang plugin for uWSGI. Package: uwsgi-plugin-rbthreads Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), uwsgi-plugin-rack-ruby1.9.1 (= ${binary:Version}) Description: Ruby native threads plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Ruby 1.9 native threads plugin for uWSGI. Package: uwsgi-plugin-fiber Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), uwsgi-plugin-rack-ruby1.9.1 (= ${binary:Version}) Description: fiber loop engine plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Ruby 1.9 fiber loop engine plugin for uWSGI. Fibers are a form of coroutine, useful for implementing cooperative multitasking in your Ruby 1.9.x apps. Package: uwsgi-plugin-geoip Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: GeoIP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides geoip plugin for uWSGI. Package: uwsgi-plugin-graylog2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: graylog2 plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides graylog2 plugin for uWSGI. Package: uwsgi-plugin-greenlet-python Architecture: @greenlet_archs@ Depends: ${shlibs:Depends}, ${misc:Depends}, python-greenlet, uwsgi-plugin-python (= ${binary:Version}) Description: greenlet plugin for uWSGI (Python) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides greenlet plugin for uWSGI with Python WSGI plugin. Package: uwsgi-plugin-jvm-openjdk-6 Architecture: @openjdk6_archs@ Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), openjdk-6-jre-headless Description: Java plugin for uWSGI (OpenJDK 6) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Java plugin for uWSGI (linked with OpenJDK Java 6 runtime). Package: uwsgi-plugin-jvm-openjdk-7 Architecture: @openjdk7_archs@ Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), openjdk-7-jre-headless Description: Java plugin for uWSGI (OpenJDK 7) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Java plugin for uWSGI (linked with OpenJDK Java 7 runtime). Package: uwsgi-plugin-jwsgi-openjdk-6 Architecture: @openjdk6_archs@ Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-jvm-openjdk-6 (= ${binary:Version}), openjdk-6-jre-headless Description: JWSGI plugin for uWSGI (OpenJDK 6) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides JWSGI plugin for uWSGI (linked with OpenJDK Java 6 runtime). Package: uwsgi-plugin-jwsgi-openjdk-7 Architecture: @openjdk7_archs@ Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-jvm-openjdk-7 (= ${binary:Version}), openjdk-7-jre-headless Description: JWSGI plugin for uWSGI (OpenJDK 7) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides JWSGI plugin for uWSGI (linked with OpenJDK Java 7 runtime). Package: uwsgi-plugin-ldap Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: LDAP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides ldap plugin for uWSGI. Package: uwsgi-plugin-lua5.1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Lua WSAPI plugin for uWSGI (Lua 5.1) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Lua WSAPI plugin for uWSGI (linked with Lua 5.1 runtime). Package: uwsgi-plugin-lua5.2 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Lua WSAPI plugin for uWSGI (Lua 5.2) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Lua WSAPI plugin for uWSGI (linked with Lua 5.2 runtime). Package: uwsgi-plugin-psgi Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Perl PSGI plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Perl PSGI plugin for uWSGI. Package: uwsgi-plugin-pyerl-python Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-python (= ${binary:Version}), uwsgi-plugin-erlang (= ${binary:Version}) Description: pyerl plugin for uWSGI (Python) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides pyerl plugin for uWSGI with Python WSGI plugin. Package: uwsgi-plugin-pyerl-python3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-plugin-python3 (= ${binary:Version}), uwsgi-plugin-erlang (= ${binary:Version}) Description: pyerl plugin for uWSGI (Python 3) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides pyerl plugin for uWSGI with Python 3 WSGI plugin. Package: uwsgi-plugin-python Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Provides: httpd-wsgi Suggests: python-uwsgidecorators Description: Python WSGI plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Python WSGI plugin for uWSGI (linked with Python 2.X runtime). Package: uwsgi-plugin-python3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Provides: httpd-wsgi Suggests: python3-uwsgidecorators Description: Python 3 WSGI plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Python 3 WSGI plugin for uWSGI (linked with Python 3.X runtime). Package: uwsgi-plugin-rack-ruby1.9.1 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Rack plugin for uWSGI (Ruby 1.9.1) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides Rack plugin for uWSGI (linked with Ruby 1.9.1 runtime). Package: uwsgi-plugin-router-access Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: Access router plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides router_access plugin for uWSGI. Package: uwsgi-plugin-sqlite3 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: sqlite3 configurations plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides sqlite plugin for uWSGI, which allows loading configurations from sqlite3 db. Package: uwsgi-plugin-v8 Architecture: @v8_archs@ Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: V8 JavaScript plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides V8 plugin for uWSGI. Package: uwsgi-plugin-php Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}), ${cdbs:Depends} Description: PHP plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides PHP plugin for uWSGI. Package: uwsgi-plugin-xslt Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, uwsgi-core (= ${binary:Version}) Description: XSLT request plugin for uWSGI uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It is designed to be fully modular. This means that different plugins can be used in order to add compatibility with tons of different technology on top of the same core. . This package provides xslt plugin for uWSGI. Package: libapache2-mod-proxy-uwsgi Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, ${cdbs:Depends} Description: uwsgi proxy module for Apache2 (mod_uwsgi) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . This package provides Apache2 module for communicating with uWSGI. . It is a proxy module, so it provides all of the futures exported by mod_proxy. . It is fully Apache API compliant and it should be easily integrated with all of the available modules. Package: libapache2-mod-proxy-uwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, libapache2-mod-proxy-uwsgi (= ${binary:Version}) Description: debugging symbols for Apache2 mod_proxy_uwsgi uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for Apache2 mod_proxy_uwsgi. Install this package if you need to debug module or if you need a useful backtrace of a crash. Package: libapache2-mod-uwsgi Architecture: any Section: httpd Depends: ${shlibs:Depends}, ${misc:Depends}, ${cdbs:Depends} Conflicts: libapache2-mod-ruwsgi Replaces: libapache2-mod-ruwsgi Description: uwsgi module for Apache2 (mod_uwsgi) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . This package provides Apache2 module for communicating with uWSGI. . This is the first module developed, it is stable but a bit hacky (it does not fully use the Apache2 API). Package: libapache2-mod-uwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, libapache2-mod-uwsgi (= ${binary:Version}) Description: debugging symbols for Apache2 mod_uwsgi uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for Apache2 mod_uwsgi. Install this package if you need to debug module or if you need a useful backtrace of a crash. Package: libapache2-mod-ruwsgi Architecture: any Section: httpd Depends: ${shlibs:Depends}, ${misc:Depends}, ${cdbs:Depends} Conflicts: libapache2-mod-uwsgi Replaces: libapache2-mod-uwsgi Description: uwsgi module for Apache2 (mod_Ruwsgi) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. It uses the uwsgi protocol for all the networking/interprocess communications. . This package provides Apache2 module for communicating with uWSGI. . This is the second module developed and it's more Apache2 API friendly. Package: libapache2-mod-ruwsgi-dbg Architecture: any Section: debug Depends: ${misc:Depends}, libapache2-mod-ruwsgi (= ${binary:Version}) Description: debugging symbols for Apache2 mod_Ruwsgi uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package contains the debug symbols for Apache2 mod_Ruwsgi. Install this package if you need to debug module or if you need a useful backtrace of a crash. Package: python-uwsgidecorators Architecture: all Section: python Depends: ${python:Depends}, ${misc:Depends}, uwsgi-core, uwsgi-plugin-python Description: module of decorators for elegant access to uWSGI API (Python) uwsgidecorators is a simple Python module that exports a bunch of decorators to allow a more elegant approach to uWSGI API. Provided decorators helps with creating of RPC functions, timers, filemonitors. . This package provides uwsgidecorators module, accessible from Python 2.X runtime. Package: python3-uwsgidecorators Architecture: all Section: python Depends: ${python3:Depends}, ${misc:Depends}, uwsgi-core, uwsgi-plugin-python3 Description: module of decorators for elegant access to uWSGI API (Python 3) uwsgidecorators is a simple Python module that exports a bunch of decorators to allow a more elegant approach to uWSGI API. Provided decorators helps with creating of RPC functions, timers, filemonitors. . This package provides uwsgidecorators module, accessible from Python 3.X runtime. . uwsgidecorators module doesn't targeted at Python 3 officially, so some decorators may not work or work improperly. Package: uwsgi-extra Architecture: all Depends: ${misc:Depends} Description: fast, self-healing application container server (extra files) uWSGI presents a complete stack for networked/clustered web applications, implementing message/object passing, caching, RPC and process management. . This package provides extra files from uWSGI distribution. debian/uwsgi.dirs0000644000000000000000000000010212214577571011213 0ustar etc/uwsgi/apps-available etc/uwsgi/apps-enabled var/log/uwsgi/app debian/watch0000644000000000000000000000064712214577571010241 0ustar version=3 # Upstream names tarball of: # * beta as 'uwsgi-0.9.7-beta1.tar.gz' # * RC as 'uwsgi-0.9.7-rc1.tar.gz' # * release as 'uwsgi-0.9.7.tar.gz' # # uversionmangle recipe was found at # http://lists.debian.org/debian-devel/2009/12/msg00503.html # # uversionmangle is changed as upstream broke the pattern opts=dversionmangle=s/\+dfsg// \ http://projects.unbit.it/downloads/uwsgi-(\d[\d\.]+)\.tar\.gz debian uupdate debian/uwsgi-emperor.dirs0000644000000000000000000000001612214577571012666 0ustar var/log/uwsgi debian/uwsgi.logrotate0000644000000000000000000000021212214577571012254 0ustar "/var/log/uwsgi/*.log" "/var/log/uwsgi/*/*.log" { copytruncate daily rotate 5 compress delaycompress missingok notifempty } debian/uwsgi-plugin-jwsgi-openjdk-6.lintian-overrides0000644000000000000000000000040112214577571020122 0ustar # Allow RPATH against libjvm.so in OpenJDK, # until http://bugs.debian.org/562622 is solved. uwsgi-plugin-jwsgi-openjdk-6 binary: binary-or-shlib-defines-rpath usr/lib/uwsgi/plugins/jwsgi_openjdk6_plugin.so "/usr/lib/jvm/java-6-openjdk-*/jre/lib/*/server/" debian/uwsgi-plugin-python.README.Debian0000644000000000000000000000057312214577571015217 0ustar Issue: ImportError: No module named site ======================================== In case when Virtualenv environment is specified with 'home' option, make sure that Python interpreter and uWSGI Python plugin versions are the same. For example, if virtualenv is using python2.6 interpreter, provide option `plugin = python26` in uWSGI configuration or as a command line option. debian/uwsgi.load.in0000644000000000000000000000013112214577571011600 0ustar LoadModule @@apache_module_name@@_module /usr/lib/apache2/modules/mod_@@module_name@@.so debian/uwsgi.init.d0000644000000000000000000001063112214577571011447 0ustar #!/bin/bash ### BEGIN INIT INFO # Provides: uwsgi # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop uWSGI server instance(s) # Description: This script manages uWSGI server instance(s). # You could control specific instance(s) by issuing: # # service uwsgi ... # # You can issue to init.d script following commands: # * start | starts daemon # * stop | stops daemon # * reload | sends to daemon SIGHUP signal # * force-reload | sends to daemon SIGTERM signal # * restart | issues 'stop', then 'start' commands # * status | shows status of daemon instance # # 'status' command must be issued with exactly one # argument: ''. # # In init.d script output: # * . -- command was executed without problems or instance # is already in needed state # * ! -- command failed (or executed with some problems) # * ? -- configuration file for this instance isn't found # and this instance is ignored # # For more details see /usr/share/doc/uwsgi/README.Debian. ### END INIT INFO # Author: Leonid Borisenko # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="app server(s)" NAME="uwsgi" DAEMON="/usr/bin/uwsgi" SCRIPTNAME="/etc/init.d/${NAME}" UWSGI_CONFDIR="/etc/uwsgi" UWSGI_APPS_CONFDIR_SUFFIX="s-enabled" UWSGI_APPS_CONFDIR_GLOB="${UWSGI_CONFDIR}/app${UWSGI_APPS_CONFDIR_SUFFIX}" UWSGI_RUNDIR="/run/uwsgi" # Configuration namespace is used as name of runtime and log subdirectory. # uWSGI instances sharing the same app configuration directory also shares # the same runtime and log subdirectory. # # When init.d script cannot detect namespace for configuration file, default # namespace will be used. UWSGI_DEFAULT_CONFNAMESPACE=app # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Read configuration variable file if it is present [ -r "/etc/default/${NAME}" ] && . "/etc/default/${NAME}" # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # Define supplementary functions . /usr/share/uwsgi/init/snippets . /usr/share/uwsgi/init/do_command WHAT=$1 shift case "$WHAT" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_command "$WHAT" "$@" RETVAL="$?" [ "$VERBOSE" != no ] && log_end_msg "$RETVAL" ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_command "$WHAT" "$@" RETVAL="$?" [ "$VERBOSE" != no ] && log_end_msg "$RETVAL" ;; status) if [ -z "$1" ]; then [ "$VERBOSE" != no ] && log_failure_msg "which one?" else PIDFILE="$( find_specific_pidfile "$(relative_path_to_conffile_with_spec "$1")" )" status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" \ && exit 0 \ || exit $? fi ;; reload) [ "$VERBOSE" != no ] && log_daemon_msg "Reloading $DESC" "$NAME" do_command "$WHAT" "$@" RETVAL="$?" [ "$VERBOSE" != no ] && log_end_msg "$RETVAL" ;; force-reload) [ "$VERBOSE" != no ] && log_daemon_msg "Forced reloading $DESC" "$NAME" do_command "$WHAT" "$@" RETVAL="$?" [ "$VERBOSE" != no ] && log_end_msg "$RETVAL" ;; restart) [ "$VERBOSE" != no ] && log_daemon_msg "Restarting $DESC" "$NAME" CURRENT_VERBOSE=$VERBOSE VERBOSE=no do_command stop "$@" VERBOSE=$CURRENT_VERBOSE case "$?" in 0) do_command start "$@" RETVAL="$?" [ "$VERBOSE" != no ] && log_end_msg "$RETVAL" ;; *) # Failed to stop [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 exit 3 ;; esac debian/uwsgi-emperor.init.d0000644000000000000000000000655212214577571013125 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: uwsgi-emperor # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop uWSGI server instance(s) # Description: This script manages uWSGI Emperor server instance(s). ### END INIT INFO # Author: Janos Guljas # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="emperor server" NAME="uwsgi" DAEMON="/usr/bin/uwsgi" PIDFILE=/run/uwsgi-emperor.pid LOGFILE=/var/log/uwsgi/emperor.log DAEMON_ARGS="--ini /etc/uwsgi-emperor/emperor.ini --pidfile ${PIDFILE} --daemonize ${LOGFILE}" SCRIPTNAME="/etc/init.d/uwsgi-emperor" # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Read configuration variable file if it is present [ -r "/etc/default/uwsgi-emperor" ] && . "/etc/default/uwsgi-emperor" # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started if [ "$ENABLED" != yes ]; then [ "$VERBOSE" != no ] && log_progress_msg "(disabled; see /etc/default/uwsgi-emperor)" return 2 fi start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS 1> /dev/null 2>&1 \ || return 2 } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=QUIT/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; reload|force-reload) log_daemon_msg "Reloading $DESC" "$NAME" do_reload log_end_msg $? ;; restart) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 exit 3 ;; esac : debian/pkgarchs.sh0000644000000000000000000000252612214652772011341 0ustar #!/bin/sh # # Copyright © 2008 Jonas Smedegaard # Description: Resolves supported archs of a Debian package # # This program 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, or (at your option) # any later version. # # This program 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 program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA. # # Depends: devscripts set -e defaultsuite="unstable" currentsuite="`dpkg-parsechangelog | grep ^Distribution: | awk '{print $2}'`" pkg="$1" suite="${2:-$currentsuite}" case "$suite" in UNRELEASED|"") echo >&2 "WARNING: bad suite \"$suite\", using \"$defaultsuite\" instead." suite="$defaultsuite" ;; esac echo >&2 "INFO: Resolving architectures for package \"$pkg\" through rmadison Internet request." rmadison -s "$suite" "$pkg" \ | awk -F'|' '{ print $4 }' \ | sed 's/ //g;s/,/\n/g' \ | LANG=C sort \ | tr '\n' ' ' \ | sed 's/ $/\n/' debian/uwsgi-plugin.links.in0000644000000000000000000000006112214577571013277 0ustar usr/bin/uwsgi-core usr/bin/uwsgi_@@plugin_name@@ debian/uwsgi-core.prerm0000644000000000000000000000172612214577571012342 0ustar #!/bin/sh # prerm script for uwsgi-core # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi-core ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-python.prerm.in0000644000000000000000000000312312214577571014625 0ustar #!/bin/sh # prerm script for uwsgi-plugin-@@python_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) for PYVER_DOTLESS in @@available_python_versions_dotless@@; do update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_python${PYVER_DOTLESS} update-alternatives --quiet \ --remove \ uwsgi-plugin-@@python_kind@@ \ /usr/lib/uwsgi/plugins/python${PYVER_DOTLESS}_plugin.so done PYTHON_PLUGIN_ALTERNATIVES_COUNT="$(\ update-alternatives --list uwsgi-plugin-@@python_kind@@ 2>/dev/null \ | wc -l \ )" if [ "$PYTHON_PLUGIN_ALTERNATIVES_COUNT" -eq 0 ]; then update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_@@python_kind@@ fi ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-jwsgi-openjdk-6.prerm0000644000000000000000000000202112214577571015611 0ustar #!/bin/sh # prerm script for uwsgi-plugin-jwsgi-openjdk-6 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi-plugin-jwsgi \ /usr/lib/uwsgi/plugins/jwsgi_openjdk6_plugin.so ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-python.rtupdate.in0000644000000000000000000000417112214577571015334 0ustar #!/bin/sh set -e if [ "x$1" = "xrtupdate" ]; then # Transform new default Python runtime name from 'pythonX.Y' to 'pythonXY'. NEW_RTNAME_DOTLESS="$(echo "$3" | tr -d .)" # Versions of Python interpreter which was available at packaging moment # (and for which appropriate pythonXY_plugin.so was built). KNOWN_PYVERS_DOTLESS="@@available_python_versions_dotless@@" DEFAULT_PLUGIN_ALTERNATIVE_PRIORITY=75 ALT_PLUGIN_ALTERNATIVE_PRIORITY=35 for MAYBE_NEW_DEFAULT_PYVER_DOTLESS in $KNOWN_PYVERS_DOTLESS; do # Check if pythonX.Y runtime (where pythonX.Y is a new default Python # version) was available at packaging moment. # # If it wasn't available, there is no point in changing default alternative # (as appropriate pythonXY_plugin.so wasn't built and packaged). if [ "x$NEW_RTNAME_DOTLESS" = "xpython$MAYBE_NEW_DEFAULT_PYVER_DOTLESS" ] then # Reset prorities of all packaged alternatives of @@python_kind@@_plugin.so # to lower value. for PYVER_DOTLESS in $KNOWN_PYVERS_DOTLESS; do update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/@@python_kind@@_plugin.so \ uwsgi-plugin-@@python_kind@@ \ /usr/lib/uwsgi/plugins/python${PYVER_DOTLESS}_plugin.so \ $ALT_PLUGIN_ALTERNATIVE_PRIORITY \ --slave \ /usr/share/man/man1/uwsgi_@@python_kind@@.1.gz \ uwsgi_@@python_kind@@.1.gz \ /usr/share/man/man1/uwsgi_python${PYVER_DOTLESS}.1.gz done # Set higher priority for pythonXY_plugin.so (where pythonX.Y is a # new default Python version). update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/@@python_kind@@_plugin.so \ uwsgi-plugin-@@python_kind@@ \ /usr/lib/uwsgi/plugins/${NEW_RTNAME_DOTLESS}_plugin.so \ $DEFAULT_PLUGIN_ALTERNATIVE_PRIORITY \ --slave \ /usr/share/man/man1/uwsgi_@@python_kind@@.1.gz \ uwsgi_@@python_kind@@.1.gz \ /usr/share/man/man1/uwsgi_${NEW_RTNAME_DOTLESS}.1.gz break # for MAYBE_NEW_DEFAULT_PYVER_DOTLESS ... fi done fi debian/uwsgi-plugin-python.postinst.in0000644000000000000000000000537212214577571015373 0ustar #!/bin/sh # postinst script for uwsgi-plugin-@@python_kind@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) PYVER_DEFAULT_DOTLESS=@@default_python_version_dotless@@ for PYVER_DOTLESS in @@available_python_versions_dotless@@; do if [ "x$PYVER_DOTLESS" = "x$PYVER_DEFAULT_DOTLESS" ]; then ALTERNATIVE_PRIORITY=75 else ALTERNATIVE_PRIORITY=35 fi update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/@@python_kind@@_plugin.so \ uwsgi-plugin-@@python_kind@@ \ /usr/lib/uwsgi/plugins/python${PYVER_DOTLESS}_plugin.so \ $ALTERNATIVE_PRIORITY \ --slave \ /usr/bin/uwsgi_@@python_kind@@ \ uwsgi_@@python_kind@@ \ /usr/bin/uwsgi-core \ --slave \ /usr/share/man/man1/uwsgi_@@python_kind@@.1.gz \ uwsgi_@@python_kind@@.1.gz \ /usr/share/man/man1/uwsgi_python${PYVER_DOTLESS}.1.gz update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_python${PYVER_DOTLESS} \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_python${PYVER_DOTLESS}.1.gz done # for PYVER_DOTLESS ... UWSGI_PYTHON_BINARY_IS_UWSGI_ALTERNATIVE="$(\ update-alternatives --list uwsgi 2>/dev/null \ | grep '/uwsgi_@@python_kind@@$' \ | wc -l \ )" if [ "$UWSGI_PYTHON_BINARY_IS_UWSGI_ALTERNATIVE" -eq 0 ]; then update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi_@@python_kind@@ \ 35 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi_@@python_kind@@.1.gz fi ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-core.postinst0000644000000000000000000000232512214577571013074 0ustar #!/bin/sh # postinst script for uwsgi-core # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/bin/uwsgi \ uwsgi \ /usr/bin/uwsgi-core \ 75 \ --slave \ /usr/share/man/man1/uwsgi.1.gz \ uwsgi.1.gz \ /usr/share/man/man1/uwsgi-core.1.gz ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libapache2-mod.prerm.in0000644000000000000000000000165712214577571013435 0ustar #!/bin/sh # prerm script for libapache2-mod-@@module_name@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package if [ "$1" = "purge" ] ; then if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then . /usr/share/apache2/apache2-maintscript-helper apache2_invoke dismod @@module_name@@ || exit 1 fi fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-jwsgi-openjdk-7.postinst0000644000000000000000000000224412214577571016357 0ustar #!/bin/sh # postinst script for uwsgi-plugin-jwsgi-openjdk-7 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/jwsgi_plugin.so \ uwsgi-plugin-jwsgi \ /usr/lib/uwsgi/plugins/jwsgi_openjdk7_plugin.so \ 75 ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-plugin-jwsgi-openjdk-7.lintian-overrides0000644000000000000000000000040112214577571020123 0ustar # Allow RPATH against libjvm.so in OpenJDK, # until http://bugs.debian.org/562622 is solved. uwsgi-plugin-jwsgi-openjdk-7 binary: binary-or-shlib-defines-rpath usr/lib/uwsgi/plugins/jwsgi_openjdk7_plugin.so "/usr/lib/jvm/java-7-openjdk-*/jre/lib/*/server/" debian/uwsgi-plugin-pyerl.rtupdate.in0000644000000000000000000000347412214577571015153 0ustar #!/bin/sh set -e if [ "x$1" = "xrtupdate" ]; then # Transform new default Python runtime name from 'pythonX.Y' to 'pythonXY'. NEW_RTNAME_DOTLESS="$(echo "$3" | tr -d .)" # Versions of Python interpreter which was available at packaging moment # (and for which appropriate pyerl_pythonXY_plugin.so was built). KNOWN_PYVERS_DOTLESS="@@available_python_versions_dotless@@" DEFAULT_PLUGIN_ALTERNATIVE_PRIORITY=75 ALT_PLUGIN_ALTERNATIVE_PRIORITY=35 for MAYBE_NEW_DEFAULT_PYVER_DOTLESS in $KNOWN_PYVERS_DOTLESS; do # Check if pythonX.Y runtime (where pythonX.Y is a new default Python # version) was available at packaging moment. # # If it wasn't available, there is no point in changing default alternative # (as appropriate pyerl_pythonXY_plugin.so wasn't built and packaged). if [ "x$NEW_RTNAME_DOTLESS" = "xpython$MAYBE_NEW_DEFAULT_PYVER_DOTLESS" ] then # Reset prorities of all packaged alternatives of @@python_kind@@_plugin.so # to lower value. for PYVER_DOTLESS in $KNOWN_PYVERS_DOTLESS; do update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/pyerl_@@python_kind@@_plugin.so \ uwsgi-plugin-pyerl-@@python_kind@@ \ /usr/lib/uwsgi/plugins/pyerl_python${PYVER_DOTLESS}_plugin.so \ $ALT_PLUGIN_ALTERNATIVE_PRIORITY done # Set higher priority for pyerl_pythonXY_plugin.so (where pythonX.Y is a # new default Python version). update-alternatives --quiet \ --install \ /usr/lib/uwsgi/plugins/pyerl_@@python_kind@@_plugin.so \ uwsgi-plugin-pyerl-@@python_kind@@ \ /usr/lib/uwsgi/plugins/pyerl_${NEW_RTNAME_DOTLESS}_plugin.so \ $DEFAULT_PLUGIN_ALTERNATIVE_PRIORITY break # for MAYBE_NEW_DEFAULT_PYVER_DOTLESS ... fi done fi debian/uwsgi-plugin.prerm.in0000644000000000000000000000176312214577571013316 0ustar #!/bin/sh # prerm script for uwsgi-plugin-@@plugin_name@@ # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove) update-alternatives --quiet \ --remove \ uwsgi \ /usr/bin/uwsgi_@@plugin_name@@ ;; upgrade|deconfigure|failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/uwsgi-emperor.install0000644000000000000000000000004512215746244013371 0ustar debian/uwsgi-emperor-files/etc/* etc