/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* e-summary-weather.c * * Copyright (C) 2001 Ximian, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License as published by the Free Software Foundation. * * 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. * * Author: Iain Holmes */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include "e-summary.h" #include "e-summary-weather.h" #include "weather.h" #include "metar.h" struct _ESummaryWeather { ESummaryConnection *connection; GList *weathers; char *html; guint32 timeout; gboolean online; gboolean errorshown; }; static GHashTable *locations_hash = NULL; char * e_summary_weather_get_html (ESummary *summary) { GList *weathers; GString *string; char *html; char *s; if (summary->weather == NULL) { return NULL; } string = g_string_new ("
" ""); s = e_utf8_from_locale_string (_("My Weather")); g_string_append (string, s); g_free (s); g_string_append (string, ""); for (weathers = summary->weather->weathers; weathers; weathers = weathers->next) { if (((Weather *)weathers->data)->html == NULL) { continue; } g_string_append (string, ((Weather *)weathers->data)->html); } g_string_append (string, "
"); html = string->str; g_string_free (string, FALSE); return html; } static char * make_url (const char *code) { return g_strdup_printf ("http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s", code); } static char * make_anchor (const char *name, const char *code) { char *url, *anchor; url = make_url (code); anchor = g_strdup_printf ("%s", url, name); g_free (url); return anchor; } static void weather_make_html (Weather *w) { GString *string; ESummaryWeatherLocation *location; char *sky, *temp, *cond, *s; const char *icon_name; icon_name = icon_from_weather (w); string = g_string_new (""); g_string_sprintf (string, "
 ", icon_name); location = g_hash_table_lookup (locations_hash, w->location); #if 0 if (location == NULL) { url = make_anchor (w->location, w->location); } else { url = make_anchor (location->name, w->location); } #endif if (location == NULL) { g_string_append (string, w->location); } else { g_string_append (string, location->name); } #if 0 g_string_append (string, url); g_free (url); #endif g_string_append (string, ":
"); sky = (char *) weather_sky_string (w); temp = weather_temp_string (w); cond = (char *) weather_conditions_string (w); s = e_utf8_from_locale_string (sky); g_string_append (string, s); g_free (s); g_string_append_c (string, ' '); s = e_utf8_from_locale_string (cond); g_string_append (string, s); g_free (s); g_string_append_c (string, ' '); s = e_utf8_from_locale_string (temp); g_string_append (string, s); g_free (s); g_free (temp); #if 0 g_string_append (string, ""); uri = g_strdup_printf ("", w); g_string_append (string, uri); g_free (uri); g_string_append (string, "(More)
"); #else g_string_append (string, ""); #endif if (w->html != NULL) { g_free (w->html); } w->html = string->str; g_string_free (string, FALSE); e_summary_draw (w->summary); } static ESummaryWeatherLocation * weather_location_new (char **locdata) { ESummaryWeatherLocation *location; location = g_new (ESummaryWeatherLocation, 1); location->name = g_strdup (locdata[0]); location->code = g_strdup (locdata[1]); location->zone = g_strdup (locdata[2]); location->radar = g_strdup (locdata[3]); return location; } static void parse_metar_token (const char *token, gboolean in_comment, Weather *w) { if (in_comment == FALSE) { if (metar_tok_time ((char *) token, w)) { return; } else if (metar_tok_wind ((char *) token, w)) { return; } else if (metar_tok_vis ((char *) token, w)) { return; } else if (metar_tok_cloud ((char *) token, w)) { return; } else if (metar_tok_temp ((char *) token, w)) { return; } else if (metar_tok_pres ((char *) token, w)) { return; } else if (metar_tok_cond ((char *) token, w)) { return; } } } static void parse_metar (const char *metar, Weather *w) { char *metar_dup; char **toks; gint ntoks; gint i; gboolean in_remark = FALSE; metar_dup = g_strdup (metar + 6); metar_init_re (); toks = g_strsplit (metar, " ", 0); for (ntoks = 0; toks[ntoks]; ntoks++) { if (strcmp (toks[ntoks], "RMK") == 0) { in_remark = TRUE; } } for (i = ntoks - 1; i >= 0; i--) { if (*toks[i] != '\0') { if (strcmp (toks[i], "RMK") == 0) { in_remark = FALSE; } else { parse_metar_token (toks[i], in_remark, w); } } } g_strfreev (toks); g_free (metar_dup); weather_make_html (w); } static void message_finished (SoupMessage *msg, gpointer userdata) { Weather *w = (Weather *) userdata; ESummary *summary; char *html, *metar, *end; char *search_str; summary = w->summary; if (summary->weather->connection->callback) { ESummaryConnection *connection = summary->weather->connection; connection->callback (summary, connection->callback_closure); } if (SOUP_MESSAGE_IS_ERROR (msg)) { GString *string; ESummaryWeatherLocation *location; g_warning ("Message failed: %d\n%s", msg->errorcode, msg->errorphrase); w->message = NULL; location = g_hash_table_lookup (locations_hash, w->location); string = g_string_new ("
There was an error downloading data for "); if (location == NULL) { g_string_append (string, w->location); } else { g_string_append (string, location->name); } g_string_append (string, "
"); w->html = e_utf8_from_locale_string (string->str); g_string_free (string, TRUE); e_summary_draw (w->summary); return; } html = g_strdup (msg->response.body); w->message = NULL; /* Find the metar data */ search_str = g_strdup_printf ("\n%s", w->location); metar = strstr (html, search_str); if (metar == NULL) { g_free (search_str); return; } metar++; end = strchr (metar, '\n'); if (end == NULL) { g_free (search_str); return; } *end = '\0'; parse_metar (metar, w); g_free (search_str); return; } gboolean e_summary_weather_update (ESummary *summary) { GList *w; if (summary->weather->online == FALSE) { g_warning ("%s: Repolling but offline", __FUNCTION__); return TRUE; } summary->weather->errorshown = FALSE; for (w = summary->weather->weathers; w; w = w->next) { SoupContext *context; char *uri; Weather *weather = w->data; if (weather->message != NULL) { soup_message_cancel (weather->message); weather->message = NULL; } uri = g_strdup_printf ("http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=%s", weather->location); context = soup_context_get (uri); if (context == NULL) { g_warning ("Invalid URL: %s", uri); soup_context_unref (context); g_free (uri); continue; } weather->message = soup_message_new (context, SOUP_METHOD_GET); soup_context_unref (context); soup_message_queue (weather->message, message_finished, weather); g_free (uri); } return TRUE; } static void weather_free (Weather *w) { g_return_if_fail (w != NULL); if (w->message != NULL) { soup_message_cancel (w->message); } g_free (w->location); g_free (w->html); g_free (w); } static void e_summary_weather_add_location (ESummary *summary, const char *location) { Weather *w; w = g_new0 (Weather, 1); w->summary = summary; w->location = g_strdup (location); summary->weather->weathers = g_list_append (summary->weather->weathers, w); } static gboolean e_summary_weather_init_locations (void) { char *key, *path; int nregions, iregions; char **regions; if (locations_hash != NULL) { return TRUE; } locations_hash = g_hash_table_new (g_str_hash, g_str_equal); path = g_strdup (EVOLUTION_DATADIR "/evolution/Locations"); key = g_strdup_printf ("=%s=/", path); g_free (path); gnome_config_push_prefix (key); g_free (key); gnome_config_get_vector ("Main/regions", &nregions, ®ions); for (iregions = nregions - 1; iregions >= 0; iregions--) { int nstates, istates; char **states; char *region_name; char *region_name_key; char *states_key; region_name_key = g_strconcat (regions[iregions], "/name", NULL); states_key = g_strconcat (regions[iregions], "/states", NULL); region_name = gnome_config_get_string (region_name_key); gnome_config_get_vector (states_key, &nstates, &states); for (istates = nstates - 1; istates >= 0; istates--) { void *iter; char *iter_key, *iter_val; char *state_path, *state_name_key, *state_name; state_path = g_strconcat (regions[iregions], "_", states[istates], "/", NULL); state_name_key = g_strconcat (state_path, "name", NULL); state_name = gnome_config_get_string (state_name_key); iter = gnome_config_init_iterator (state_path); while ((iter = gnome_config_iterator_next (iter, &iter_key, &iter_val)) != NULL) { if (strstr (iter_key, "loc") != NULL) { char **locdata; int nlocdata; ESummaryWeatherLocation *location; gnome_config_make_vector (iter_val, &nlocdata, &locdata); g_return_val_if_fail (nlocdata == 4, FALSE); if (!g_hash_table_lookup (locations_hash, locdata[1])) { location = weather_location_new (locdata); g_hash_table_insert (locations_hash, g_strdup (locdata[1]), location); } g_strfreev (locdata); } g_free (iter_key); g_free (iter_val); } g_free (state_name); g_free (state_path); g_free (state_name_key); } g_strfreev (states); g_free (region_name); g_free (region_name_key); g_free (states_key); } g_strfreev (regions); gnome_config_pop_prefix (); return TRUE; } static void e_summary_weather_protocol (ESummary *summary, const char *uri, void *closure) { } static int e_summary_weather_count (ESummary *summary, void *data) { ESummaryWeather *weather; GList *p; int count = 0; weather = summary->weather; for (p = weather->weathers; p; p = p->next) { Weather *w = p->data; if (w->message != NULL) { count++; } } return count; } static ESummaryConnectionData * make_connection (Weather *w) { ESummaryConnectionData *data; data = g_new (ESummaryConnectionData, 1); data->hostname = make_url (w->location); data->type = g_strdup (_("Weather")); return data; } static GList * e_summary_weather_add (ESummary *summary, void *data) { ESummaryWeather *weather; GList *p, *connections = NULL; weather = summary->weather; for (p = weather->weathers; p; p = p->next) { Weather *w = p->data; if (w->message != NULL) { ESummaryConnectionData *d; d = make_connection (w); connections = g_list_prepend (connections, d); } } return connections; } static void e_summary_weather_set_online (ESummary *summary, GNOME_Evolution_OfflineProgressListener listener, gboolean online, void *data) { ESummaryWeather *weather; GList *p; weather = summary->weather; if (weather->online == online) { return; } if (online == TRUE) { e_summary_weather_update (summary); weather->timeout = gtk_timeout_add (summary->preferences->weather_refresh_time * 1000, (GtkFunction) e_summary_weather_update, summary); } else { for (p = weather->weathers; p; p = p->next) { Weather *w; w = p->data; if (w->message) { soup_message_cancel (w->message); w->message = NULL; } } gtk_timeout_remove (weather->timeout); weather->timeout = 0; } weather->online = online; } void e_summary_weather_init (ESummary *summary) { ESummaryPrefs *prefs; ESummaryWeather *weather; ESummaryConnection *connection; int timeout; g_return_if_fail (summary != NULL); g_return_if_fail (IS_E_SUMMARY (summary)); if (e_summary_weather_init_locations () == FALSE) { return; } prefs = summary->preferences; weather = g_new0 (ESummaryWeather, 1); weather->online = TRUE; summary->weather = weather; connection = g_new (ESummaryConnection, 1); connection->count = e_summary_weather_count; connection->add = e_summary_weather_add; connection->set_online = e_summary_weather_set_online; connection->closure = NULL; connection->callback = NULL; connection->callback_closure = NULL; weather->connection = connection; e_summary_add_online_connection (summary, connection); e_summary_add_protocol_listener (summary, "weather", e_summary_weather_protocol, weather); if (prefs == NULL) { /* translators: Put here a list of codes for locations you want to see in My Evolution by default. You can find the list of all stations and their codes in Evolution sources (evolution/my-evolution/Locations) */ char *default_stations = _("KBOS"), **stations_v, **p; stations_v = g_strsplit (default_stations, ":", 0); g_assert (stations_v != NULL); for (p = stations_v; *p != NULL; p++) { e_summary_weather_add_location (summary, *p); } g_strfreev (stations_v); timeout = 600; } else { GList *p; for (p = prefs->stations; p; p = p->next) { e_summary_weather_add_location (summary, p->data); } timeout = prefs->weather_refresh_time; } e_summary_weather_update (summary); weather->timeout = gtk_timeout_add (timeout * 1000, (GtkFunction) e_summary_weather_update, summary); return; } const char * e_summary_weather_code_to_name (const char *code) { ESummaryWeatherLocation *location; if (locations_hash == NULL) { if (e_summary_weather_init_locations () == FALSE) { return code; } } location = g_hash_table_lookup (locations_hash, code); if (location == NULL) { return code; } else { return location->name; } } void e_summary_weather_ctree_fill (GtkCTree *tree) { GtkCTreeNode *region, *state, *location, *pref_loc_root; char *key, *path; int nregions, iregions; char **regions, *pp[1]; path = g_strdup (EVOLUTION_DATADIR "/evolution/Locations"); key = g_strdup_printf ("=%s=/", path); g_free (path); gnome_config_push_prefix (key); g_free (key); pp[0] = _("Regions"); pref_loc_root = gtk_ctree_insert_node (tree, NULL, NULL, pp, 0, NULL, NULL, NULL, NULL, FALSE, TRUE); gnome_config_get_vector ("Main/regions", &nregions, ®ions); region = NULL; for (iregions = nregions - 1; iregions >= 0; iregions--) { int nstates, istates; char **states; char *region_name; char *region_name_key; char *states_key; region_name_key = g_strconcat (regions[iregions], "/name", NULL); states_key = g_strconcat (regions[iregions], "/states", NULL); region_name = gnome_config_get_string (region_name_key); pp[0] = region_name; region = gtk_ctree_insert_node (tree, pref_loc_root, region, pp, 0, NULL, NULL, NULL, NULL, FALSE, FALSE); gnome_config_get_vector (states_key, &nstates, &states); state = NULL; for (istates = nstates - 1; istates >= 0; istates--) { void *iter; char *iter_key, *iter_val; char *state_path, *state_name_key, *state_name; state_path = g_strconcat (regions[iregions], "_", states[istates], "/", NULL); state_name_key = g_strconcat (state_path, "name", NULL); state_name = gnome_config_get_string (state_name_key); pp[0] = state_name; state = gtk_ctree_insert_node (tree, region, state, pp, 0, NULL, NULL, NULL, NULL, FALSE, FALSE); location = NULL; iter = gnome_config_init_iterator (state_path); while ((iter = gnome_config_iterator_next (iter, &iter_key, &iter_val)) != NULL) { if (strstr (iter_key, "loc") != NULL) { char **locdata; int nlocdata; ESummaryWeatherLocation *w_location; gnome_config_make_vector (iter_val, &nlocdata, &locdata); g_return_if_fail (nlocdata == 4); pp[0] = locdata[0]; location = gtk_ctree_insert_node (tree, state, location, pp, 0, NULL, NULL, NULL, NULL, FALSE, TRUE); w_location = g_hash_table_lookup (locations_hash, locdata[1]); gtk_ctree_node_set_row_data (tree, location, w_location); g_strfreev (locdata); } g_free (iter_key); g_free (iter_val); } g_free (state_name); g_free (state_path); g_free (state_name_key); } g_strfreev (states); g_free (region_name); g_free (region_name_key); g_free (states_key); } g_strfreev (regions); gnome_config_pop_prefix (); return; } void e_summary_weather_reconfigure (ESummary *summary) { ESummaryWeather *weather; GList *old, *p; g_return_if_fail (summary != NULL); g_return_if_fail (IS_E_SUMMARY (summary)); weather = summary->weather; /* Stop timeout so it doesn't occur while we're changing stuff*/ gtk_timeout_remove (weather->timeout); for (old = weather->weathers; old; old = old->next) { Weather *w; w = old->data; weather_free (w); } g_list_free (weather->weathers); weather->weathers = NULL; for (p = summary->preferences->stations; p; p = p->next) { e_summary_weather_add_location (summary, p->data); } weather->timeout = gtk_timeout_add (summary->preferences->weather_refresh_time * 1000, (GtkFunction) e_summary_weather_update, summary); e_summary_weather_update (summary); } void e_summary_weather_free (ESummary *summary) { ESummaryWeather *weather; GList *p; g_return_if_fail (summary != NULL); g_return_if_fail (IS_E_SUMMARY (summary)); weather = summary->weather; if (weather->timeout != 0) { gtk_timeout_remove (weather->timeout); } for (p = weather->weathers; p; p = p->next) { Weather *w = p->data; weather_free (w); } g_list_free (weather->weathers); g_free (weather->html); e_summary_remove_online_connection (summary, weather->connection); g_free (weather->connection); g_free (weather); summary->weather = NULL; } arguments do not contain a -D flag [5] * Check for use of autoplist and pkg-plkist or PLIST_FILE. [6] PR: 231420 [1] 231421 [2] 231422 [3] 231566 [4] 231894 [5] 231865 [6] Submitted by: db [3] [6] * - Bump PORTREVISION to chase openssl update in CURRENTzi2018-10-111-1/+1 | * ports-mgmt/pkg_replace: Update to 20180927swills2018-10-092-5/+5 | | | | | PR: 231749 Submitted by: kdeguchi@sz.tokoha-u.ac.jp (maintainer) * Fix some PKGNAME collisionsantoine2018-10-081-1/+1 | * Fix every instance of RUN_DEPENDS:=${BUILD_DEPENDS} in p5 ports, exceptdes2018-10-061-2/+2 | | | | | | | for where it resulted in a change in output from build-depends-list or run-depends-list. Approved by: portmgr (adamw) * Update ports-mgmt/synth to 2.06ericbsd2018-09-282-4/+4 | | | | Approved by: wg (mentor) * Update to 1.10.99.10bapt2018-09-222-5/+5 | * Mark these ports as broken on powerpc64.linimon2018-09-181-0/+2 | | | | | | While here, pet portlint. Approved by: portmgr (tier-2 blanket) * Update to 2.18.4.marcus2018-09-172-11/+81 | | | | | | | | | | | | | | | | | * Do not complain about icon installation if USE_QT is defined [1] * Add support for checking LICENSE_PERMS [2] * Add a warning when NO_PACKAGE is used [2] * Per the Porter's handbook, check for sections for USE/USES and FLAVORS [3] * Check for -on/-off in OPTION names [4] * Check to make sure the correct LICENSE_FILE_foo is specified [5] PR: 231122 [1] 231155 [2] 230594 [3] 229280 [4] 231303 [5] Submitted by: loader [3] adamw [4] * Apply a patch from git that fixes make packages with hardlinks and config files.brd2018-09-112-1/+17 | * Add DOCS options to ports that should have one.mat2018-09-105-2/+14 | | | | | | | | Also various fixes related to said option. PR: 230864 Submitted by: mat exp-runs by: antoine * Fix fetch by updating GH_TAGNAME as required by r479255woodsb022018-09-091-1/+1 | | | | Approved by: portmgr blanket * Update to 1.10.99.9brd2018-09-092-4/+4 | | | | | | - Remove a check for config files that have hardlinks - Add .gitlab-ci.yml to support the Gitlab CI service - Add a few more tests with hardlinks * - Update to 1.2ehaupt2018-09-042-4/+4 | | | | | - Improve pylint score from 4.73 to 9.08 - Set a distinctive User-Agent when making HTTP/HTTPS requests * Clarify error messagecrees2018-09-012-2/+5 | * - Update to 1.1.1ehaupt2018-08-313-15/+6 | | | | | | | - Support for python3 [1] - Specify LICENSE_FILE since it's available in the distfile [1] Requested by: sunpoet [1] * Fix build with Qt 5.11 (patch sent upstream)jhale2018-08-311-0/+17 | | | | PR: 230884 * Allow building without privileges.ehaupt2018-08-291-0/+11 | | | | Submitted by: ohauer * - Update to 1.1ehaupt2018-08-282-4/+4 | | | | | - Correctly handle hostnames that do not resolve - Implemented a --silent option which will only show errors * - Update to 1.0ehaupt2018-08-284-22/+17 | | | | | | | | | | | | - Add WWW and provide an additional mirror - Provide a longer description as requested by portlint - Distilator will now report when an URL gives a redirect - Rewritten in python using requests and requests_ftp - Licensed under BSD2CLAUSE PR: 215425 Requested by: mat * Update to 1.10.99.8bapt2018-08-213-14/+10 | | | | | | | | | | | | | | | | | | Changes from pkg 1.10.99.7 to 1.10.99.8 - Add options to ignore OSVERSION check and document it - Complain about RO filesystem for pkgdb access if needed - Fix privileges drop done too early - Improve OSVERSION check - Fix some resource leaks - Lots of documentation improvements - Improve conflicts handling - Do not check remote packages when doing `pkg upgrade -v` - Convert from autotools to autosetup - Fix warnings spotted by gcc 7+ - Fix pkg info -R to match the documented behaviour - Update zsh completion - Fix crash with config file handling - pkg is now a semi static binary * Add a small patch to pkg to fix NULL check in pkg_is_config_file().brd2018-08-212-1/+14 | | | | | | This helps pkgbase users with recent updates. Approved by: bapt * - switch MASTER_SITES to githubdinoex2018-08-162-0/+17 | | | | - add more scripts * - switch MASTER_SITES to githubdinoex2018-08-166-2839/+16 | | | | - add more scripts * Flag more ports not compatible to PHP 7.x with IGNORE_WITH_PHPtz2018-08-131-0/+2 | | | | PR: 229982 * Fix breakage introduced in previous commits.marcus2018-08-071-1/+0 | | | | PR: 230427 * Update ports-mgmt/pkg-provides from 0.4.2 to 0.5.0rodrigo2018-08-042-5/+5 | | | | | | Changes : - use https instead of http to update the database - new env variable PROVIDES_URL to overwrite the default URL * Reevert change accidentally included in r476184adamw2018-08-021-1/+1 | * Fix a common grammar error: "can not" means the opposite of "cannot."adamw2018-08-021-1/+2 | | | | "Can not" means "it is possible not to," and "cannot" means "it is impossible to." * Bump PORTREVISION for ports depending on the canonical version of GCCgerald2018-07-303-3/+3 | | | | | | | | | | | | | | in the ports tree (via Mk/bsd.default-versions.mk and lang/gcc) which has now moved from GCC 6 to GCC 7 by default. This includes ports - featuring USE_GCC=yes or USE_GCC=any, - featuring USES=fortran, - using Mk/bsd.octave.mk which in turn features USES=fortran, and those - with USES=compiler specifying one of openmp, nestedfct, c11, c++0x, c++11-lib, c++11-lang, c++14-lang, c++17-lang, or gcc-c++11-lib. PR: 222542 * Fix quoting of optional FLAVOR argument in some make invocations, whichse2018-07-232-3/+3 | | | | | | | were uncovered by fixed quoting in the pm_make* functions. Reported by: tatsuki_makino at hotmail.com (Tatsuki Makino) Approved by: antoine (implicit) * Make some sub-routines use "$@" instead of $* to correctly pass argumentsse2018-07-222-5/+36 | | | | | | | | | with blanks to invoked commands. This fixes clean-up of shared library backups, where only one file was removed due to a parameter list being terminated by the first blank within one parameter. Reported by: tatsuki_makino at hotmail.com (Tatsuki Makino) Approved by: antoine (implicit) * Remove all := from BUILD_DEPENDS, here are never needed.mat2018-07-091-1/+1 | | | | | | | | | | | | | | | | | | | | | | | | | | While there, cleanup, and sort depends. When build and run dependencies are the same, there are three ways to avoid duplicating the list while not adding the framework added BUILD_DEPENDS to the RUN_DEPENDS. In order of preference, they are: 1) use RUN_DEPENDS to set BUILD_DEPENDS: BUILD_DEPENDS= ${RUN_DEPENDS} RUN_DEPENDS= foo:bar/baz 2) create another variable and use it: MY_DEPENDS= foo:bar/baz BUILD_DEPENDS= ${MY_DEPENDS} RUN_DEPENDS= ${MY_DEPENDS} 3) use BUILD_DEPENDS to set RUN_DEPENDS and force evaluation: BUILD_DEPENDS= foo:bar/baz RUN_DEPENDS:= ${BUILD_DEPENDS} Sponsored by: Absolight * Update to 4.0.0krion2018-07-024-7/+54 | | | | | PR: 229411 Submitted by: maintainer * lang/ghc: Update to 8.4.3 and bump PORTREVISION's of all Haskell ports.arrowd2018-06-301-1/+1 | | | | | | | | | | | | | | | | | | | | | | | | | As usual, it is recommended to rebuild or reinstall all the dependent ports and the lang/ghc port itself in one of the following ways: # portmaster -w -r ghc or # portupgrade -fr lang/ghc In case of pkg(8), it is probably safer to remove all the GHC-dependent packages along with GHC and reinstall everything from scratch. For example: # pkg query "%ro" ghc > ghc-pkgs.txt # pkg delete -y lang/ghc In ghc-pkgs.txt, check and remove all the packages that have been moved on the update, then use this command: # pkg install -y `cat ghc-pkgs.txt` Approved by: tcberner (mentor) Differential Revision: https://reviews.freebsd.org/D16038 * Replace bsd.qt.mk by Uses/qt.mk and Uses/qt-dist.mktcberner2018-06-293-5/+6 | | | | | | | | | | | | | | | From now on, ports that depend on Qt4 will have to set USES= qt:4 USE_QT= foo bar ports depending on Qt5 will use USES= qt:5 USE_QT= foo bar PR: 229225 Exp-run by: antoine Reviewed by: mat Approved by: portmgr (antoine) Differential Revision: →https://reviews.freebsd.org/D15540 * Update to upstream version 0.4.r65riggs2018-06-253-9/+9 | | | | | | | | | | | | Detailed maintainer log: - Add TEST-DEPENDS. - Add indication of the type of dependence by the first characters in parentheses: (BR) for BUILD_DEPENDS and RUN_DEPENDS together. - Make it ready for Python 3. - Fix transition of svn sources from Google Code to SF for gen-dist. PR: 228361 Submitted by: vladimir.chukharev@gmail.com (maintainer) * Update to 2.18.3.marcus2018-06-252-20/+16 | | | | | | | | | | | | | | | | * Be less strict in the check for MASTER_SITE_SUBDIR use. This change checks that the subdirectory used is actually different than what is defined in MASTER_SITES_SUBDIRS. To make this easier to do, support has been added to single-quote variables passed to the get_makevar* functions. [1] * Now only PY_FLAVOR is recommended as opposed to FLAVOR. [2] * Remove an errant ':' when suggesting PY_FLAVOR. [3] PR: 228227 [1] Requested by: mat [2] Reported by: koobs [3] * Fix building of specific qt4 ports after qt5 has become the default flavor.se2018-06-222-5/+6 | | | | | | | | | | | | | The ports infrastructure does not consistently deal with FLAVOR environment variables set to an empty string. This caused the dependency check in portmaster to fail for multimedia/phonon. With FLAVOR="" in the environment, "make -V FLAVOR" returns "qt4", but the dependency list produced by "make build-depends-list" assumes "qt5", even though no user preferences for qt5 have been set. Reported by: Walter Schwarzenfeld <w.schwarzenfeld at utanet.at> Approved by: antoine (implicit) * Use PY_FLAVOR for dependencies.mat2018-06-211-2/+2 | | | | | | | FLAVOR is the current port's flavor, it should not be used outside of this scope. Sponsored by: Absolight * ports-mgmt/pkgs_which: feex a typoeadler2018-06-111-1/+1 | | | | Approved by: mandree (maintainer) * Update to 1.0.16romain2018-06-022-4/+4 | * - Update to 3.2.7-372-g6125e0831bdrewery2018-06-022-5/+5 | | | | | | Very minor chase of 3.2.7. - HTML: Reset error load counter on successful load * - Update to 3.2.7bdrewery2018-06-022-5/+5 | | | | | Very minor maintenance release. Changes: https://github.com/freebsd/poudriere/wiki/release_notes_327 * ports-mgmt/pkg_replace: update to 20180530swills2018-05-312-4/+4 | | | | | PR: 228627 Submitted by: kdeguchi@sz.tokoha-u.ac.jp (maintainer) * Update ports-mgmt/synth to 2.05ericbsd2018-05-292-4/+4 | | | | | PR: 228573 Approved by: wg (mentor) * Update WWWsunpoet2018-05-281-1/+1 | | | | | | | search.cpan.org is shutting down. It will redirect to metacpan.org after June 25, 2018. With hat: perl * Update lang/ghc 8.4.2 and the hs-* ports the newer versionstcberner2018-05-261-1/+1 | | | | | | | | | | | | | | * Update lang/ghc to 8.4.2 * Update the boostrap compiler to 8.4.1 * Update the many hs-* ports * Bump the rest Thanks a lot to arrowd for doing all the heavy lifting :) PR: 227968 Exp-run by: antoine Submitted by: arrowd Differential Revision: https://reviews.freebsd.org/D15005 * - Update WWWamdmi32018-05-221-1/+1 | | | | Approved by: portmgr blanket * Document --package-format=<fmt> option. I had implemented that option somese2018-05-212-1/+27 | | | | | | | | | | | time ago, but decided to not expose it in the man-page, since portmaster will not necessarily install the latest version if installing from local Jpackages is requested and there exist multiple package files that only differ in archive format. But since a non-standard package format allows to choose between an optimization for speed or for disk space, this is a useful option that shall be described in the man page. Approved by: antoine (implicit) * Fix recursive building of ports (-r option). The match_flavor function wasse2018-05-202-26/+46 | | | | | | | | | | called before being defined. The issue and cause has been reported by Herbert J. Skuhra. (Thanks!) PR: 227882 Reported by: Herbert J. Skuhra <herbert@gojira.at> Approved by: antoine (implicit) * - Update to 0.4miwi2018-05-203-27/+26 | | | | | | PR: 227828 Submitted by: maintainer Sponsored by: iXsystems Inc. * Fix previous attempt to cache some parameters in environment variables.se2018-05-192-28/+26 | | | | | | | | | The quoting was messed up by use of "eval" and the cached values did not match what the ports system expected. Submitted by: tijl Reported by: tijl Approved by: antoine (implicit) * Cache some build parameters in the environment that were recalculated overse2018-05-182-24/+83 | | | | | | | | | | | | | and over for individual ports. This significantly reduces the time to scan for updates if many ports with USES=compiler are present. Based on a suggestion and code fragment provided by Tijl Coosemans. While here commit a few changes present in my local version that should not cause any functional change. Submitted by: tijl Approved by: antoine (implicit) * Drop MAINTAINERship for these ports:tz2018-05-171-1/+1 | | | | | | | | | | | | | - databases/postgresql-plproxy - devel/fpp - devel/gnu-efi - games/nlarn - games/wesnoth - mail/phpmailer - mail/tlb - ports-mgmt/pkg-plist - sysutils/battray - textproc/xml-parse.el * - Update WWWamdmi32018-05-171-1/+1 | | | | Approved by: portmgr blanket * Bump version to 2.18.2.marcus2018-05-132-5/+6 | | | | | | | | | | Fix a regression in the mae makepatch check. Make sure only the patch header is checked, but make sure to read in the entire patch file. This regression was introduced in 2.18.0. PR: 228203 * Bump version to 2.18.1.marcus2018-05-132-7/+7 | | | | | | | | | | Soften the py-* dependency error around flavors. Now the message is a warning and a suggestion. This is pending more discussion, but this seems like a good compromise for now. PR: 225654 Requested by: antoine * Update to 2.18.0. Enough has happened that it's time for a minor bump.marcus2018-05-123-19/+76 | | | | | | | | | | | | | | | | | | | | | | | | * Fix the check for duplicate SHEBANG_LANG values [1] * Check to make sure patch files end with newlines [2] * Allow flavored *_DEPENDS in the DEPENDS section [3] * Check that kde:4 OR kde:5 is defined with USE_KDE [4] * Add a check to make sure pkg-descr is at least a certain number of lines [5] * Fix a couple of typos [6] [7] * Allow for any *_DEPENDS item in the DEPENDS section and fix a bug in the dependency syntax checking [8] * Add a check to make sure Python dependencies include a FLAVOR [9] PR: 226709 [1] 226109 [2] 226581 [3] 227255 [5] 227729 [6] 227878 [7] 227556 [8] 225654 [9] Submitted by: tcberner [4] 0mp [5][6][7] Differential Revision: D13723 [4] * - Update to 3.2.6-369-g91f1ddf5fbdrewery2018-05-122-5/+5 | | | | | | - jail -u freebsd-update: Auto confirm prompts - bulk tests: Don't let system perl interfere with the partial tree used. - compute_deps: Determine all errors before bailing out * Update ports/synth from 2.03 to 2.04ericbsd2018-05-103-5/+6 | | | | Approved by: wg (mentor) * Apply patch for a segfault on upgradebrd2018-05-102-0/+29 | | | | | | https://github.com/freebsd/pkg/issues/1663 Approved by: bapt * ports-mgmt/pkg_replace: Update to 20180424meta2018-05-063-8/+7 | | | | | | | | | | - Cleanup code - Speed up and strictly check package's dependencies - While here, pet portlint by using pkg-plist instead of PLIST_FILES PR: 227730 Submitted by: kdeguchi@sz.tokoha-u.ac.jp (maintainer) Approved by: pi (mentor) * - Add DIALOG4PORTS option (default on) to install it for 'options' command [1].bdrewery2018-05-041-8/+14 | | | | | | | | | - Add CERTS option (default on) to allow disabling cert dependencies. - Reword QEMU_DESC to match poudriere-devel. - Only install ZSH files if the option is enabled. PR: 225457 [1] Submitted by: Yasuhiro KIMURA <yasu@utahime.org> [1] (based on) * Update ports-mgmt/synth to 2.03ericbsd2018-05-032-5/+4 | | | | Approved by: wg (mentor) * Make the -n option work better for non-root users.se2018-04-292-18/+159 | | | | Approved by: antoine (implicit) * Upgrade pkg-provides from 0.4.1 to 0.4.2rodrigo2018-04-192-6/+5 | | | | | | Major changes: * Fix DragonFly path construction * Fix typos and improve wording