From ab20eefd6f16c3f5b9290586dc802eba45cd544d Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Wed, 25 Jan 2012 23:36:15 -0500 Subject: [PATCH 01/12] Downgraded PQXX API used due to the 2.6 series on most modern linux distros. Implemented most of the other functions. --- include/transport/pqxxbackend.h | 3 + src/pqxxbackend.cpp | 109 ++++++++++++++++---------------- 2 files changed, 59 insertions(+), 53 deletions(-) diff --git a/include/transport/pqxxbackend.h b/include/transport/pqxxbackend.h index e13c6b03..f02d86fc 100644 --- a/include/transport/pqxxbackend.h +++ b/include/transport/pqxxbackend.h @@ -98,6 +98,9 @@ class PQXXBackend : public StorageBackend private: bool exec(const std::string &query, bool show_error = true); bool exec(pqxx::work &txn, const std::string &query, bool show_error = true); + template + std::string quote(pqxx::work &txn, const T &t); + Config *m_config; std::string m_prefix; diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index af0efd36..36953090 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -124,6 +124,11 @@ bool PQXXBackend::createDatabase() { return true; } +template +std::string PQXXBackend::quote(pqxx::work &txn, const T &t) { + return "'" + txn.esc(pqxx::to_string(t)) + "'"; +} + bool PQXXBackend::exec(const std::string &query, bool show_error) { pqxx::work txn(*m_conn); return exec(txn, query, show_error); @@ -148,15 +153,14 @@ void PQXXBackend::setUser(const UserInfo &user) { encrypted = Util::encryptPassword(encrypted, CONFIG_STRING(m_config, "database.encryption_key")); } pqxx::work txn(*m_conn); - exec(txn, "UPDATE " + m_prefix + "users SET uin=" + txn.quote(user.uin) + ", password=" + txn.quote(encrypted) + ";" - "INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " - "(" + txn.quote(user.jid) + "," - + txn.quote(user.uin) + "," - + txn.quote(encrypted) + "," - + txn.quote(user.language) + "," - + txn.quote(user.encoding) + "," + exec(txn, "INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " + "(" + quote(txn, user.jid) + "," + + quote(txn, user.uin) + "," + + quote(txn, encrypted) + "," + + quote(txn, user.language) + "," + + quote(txn, user.encoding) + "," + "NOW()," - + txn.quote(user.vip) +")"); + + (user.vip ? "'true'" : "'false'") +")"); } bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { @@ -164,7 +168,7 @@ bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { pqxx::work txn(*m_conn); pqxx::result r = txn.exec("SELECT id, jid, uin, password, encoding, language, vip FROM " + m_prefix + "users WHERE jid=" - + txn.quote(barejid)); + + quote(txn, barejid)); if (r.size() == 0) { return false; @@ -189,7 +193,7 @@ bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { void PQXXBackend::setUserOnline(long id, bool online) { try { pqxx::work txn(*m_conn); - exec(txn, "UPDATE " + m_prefix + "users SET online=" + txn.quote(online) + ", last_login=NOW() WHERE id=" + txn.quote(id)); + exec(txn, "UPDATE " + m_prefix + "users SET online=" + (online ? "'true'" : "'false'") + ", last_login=NOW() WHERE id=" + pqxx::to_string(id)); } catch (std::exception& e) { LOG4CXX_ERROR(logger, e.what()); @@ -234,13 +238,13 @@ long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { } void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { -// "UPDATE " + m_prefix + "buddies SET groups=?, nickname=?, flags=?, subscription=? WHERE user_id=? AND uin=?" -// std::string groups = Util::serializeGroups(buddyInfo.groups); -// *m_updateBuddy << groups; -// *m_updateBuddy << buddyInfo.alias << buddyInfo.flags << buddyInfo.subscription; -// *m_updateBuddy << userId << buddyInfo.legacyName; - -// EXEC(m_updateBuddy, updateBuddy(userId, buddyInfo)); + try { + pqxx::work txn(*m_conn); + exec(txn, "UPDATE " + m_prefix + "buddies SET groups=" + quote(txn, Util::serializeGroups(buddyInfo.groups)) + ", nickname=" + quote(txn, buddyInfo.alias) + ", flags=" + quote(txn, buddyInfo.flags) + ", subscription=" + quote(txn, buddyInfo.subscription) + " WHERE user_id=" + pqxx::to_string(userId) + " AND uin=" + quote(txn, buddyInfo.legacyName)); + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + } } bool PQXXBackend::getBuddies(long id, std::list &roster) { @@ -317,55 +321,54 @@ bool PQXXBackend::getBuddies(long id, std::list &roster) { } bool PQXXBackend::removeUser(long id) { -// *m_removeUser << (int) id; -// EXEC(m_removeUser, removeUser(id)); -// if (!exec_ok) -// return false; + try { + pqxx::work txn(*m_conn); + exec(txn, "DELETE FROM " + m_prefix + "users SET id=" + pqxx::to_string(id)); + exec(txn, "DELETE FROM " + m_prefix + "buddies SET user_id=" + pqxx::to_string(id)); + exec(txn, "DELETE FROM " + m_prefix + "user_settings SET user_id=" + pqxx::to_string(id)); + exec(txn, "DELETE FROM " + m_prefix + "buddies_settings SET user_id=" + pqxx::to_string(id)); -// *m_removeUserSettings << (int) id; -// EXEC(m_removeUserSettings, removeUser(id)); -// if (!exec_ok) -// return false; - -// *m_removeUserBuddies << (int) id; -// EXEC(m_removeUserBuddies, removeUser(id)); -// if (!exec_ok) -// return false; - -// *m_removeUserBuddiesSettings << (int) id; -// EXEC(m_removeUserBuddiesSettings, removeUser(id)); -// if (!exec_ok) -// return false; - - return true; + return true; + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + } + return false; } void PQXXBackend::getUserSetting(long id, const std::string &variable, int &type, std::string &value) { -//// "SELECT type, value FROM " + m_prefix + "users_settings WHERE user_id=? AND var=?" -// *m_getUserSetting << id << variable; -// EXEC(m_getUserSetting, getUserSetting(id, variable, type, value)); -// if (m_getUserSetting->fetch() != 0) { -//// "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES (?,?,?,?)" -// *m_setUserSetting << id << variable << type << value; -// EXEC(m_setUserSetting, getUserSetting(id, variable, type, value)); -// } -// else { -// *m_getUserSetting >> type >> value; -// } + try { + pqxx::work txn(*m_conn); + + pqxx::result r = txn.exec("SELECT type, value FROM " + m_prefix + "users_settings WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); + if (r.size() == 0) { + exec(txn, "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES(" + pqxx::to_string(id) + "," + quote(txn, variable) + "," + pqxx::to_string(type) + "," + quote(txn, value) + ")"); + } + else { + type = r[0][0].as(); + value = r[0][0].as(); + } + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + } } void PQXXBackend::updateUserSetting(long id, const std::string &variable, const std::string &value) { -//// "UPDATE " + m_prefix + "users_settings SET value=? WHERE user_id=? AND var=?" -// *m_updateUserSetting << value << id << variable; -// EXEC(m_updateUserSetting, updateUserSetting(id, variable, value)); + try { + pqxx::work txn(*m_conn); + exec(txn, "UPDATE " + m_prefix + "users_settings SET value=" + quote(txn, value) + " WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + } } void PQXXBackend::beginTransaction() { -// exec("START TRANSACTION;"); + exec("START TRANSACTION;"); } void PQXXBackend::commitTransaction() { -// exec("COMMIT;"); + exec("COMMIT;"); } } From 4e3b6ce117b24d169ceabaaee4f41294b1180e06 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 27 Jan 2012 11:57:13 -0500 Subject: [PATCH 02/12] One more function to go after this. At some future date I'd like to consider if the API provides some better mechanisms, but this'll do for now. --- src/pqxxbackend.cpp | 114 ++++++++++++++++++++------------------------ 1 file changed, 53 insertions(+), 61 deletions(-) diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index 36953090..1194b2ef 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -248,76 +248,67 @@ void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { } bool PQXXBackend::getBuddies(long id, std::list &roster) { -// SELECT id, uin, subscription, nickname, groups, flags FROM " + m_prefix + "buddies WHERE user_id=? ORDER BY id ASC -// *m_getBuddies << id; + try { + pqxx::work txn(*m_conn); -// "SELECT buddy_id, type, var, value FROM " + m_prefix + "buddies_settings WHERE user_id=? ORDER BY buddy_id ASC" -// *m_getBuddiesSettings << id; + pqxx::result r = txn.exec("SELECT id, uin, subscription, nickname, groups, flags FROM " + m_prefix + "buddies WHERE user_id=" + pqxx::to_string(id) + " ORDER BY id ASC"); + for (pqxx::result::const_iterator it = r.begin(); it != r.end(); it++) { + BuddyInfo b; + std::string group; -// SettingVariableInfo var; -// long buddy_id = -1; -// std::string key; + b.id = r[0][0].as(); + b.legacyName = r[0][1].as(); + b.subscription = r[0][2].as(); + b.alias = r[0][3].as(); + group = r[0][4].as(); + b.flags = r[0][5].as(); -// EXEC(m_getBuddies, getBuddies(id, roster)); -// if (!exec_ok) -// return false; + if (!group.empty()) { + b.groups = Util::deserializeGroups(group); + } -// while (m_getBuddies->fetch() == 0) { -// BuddyInfo b; + roster.push_back(b); + } -// std::string group; -// *m_getBuddies >> b.id >> b.legacyName >> b.subscription >> b.alias >> group >> b.flags; -// if (!group.empty()) { -// b.groups = Util::deserializeGroups(group); -// } + r = txn.exec("SELECT buddy_id, type, var, value FROM " + m_prefix + "buddies_settings WHERE user_id=" + pqxx::to_string(id) + " ORDER BY buddy_id ASC"); + for (pqxx::result::const_iterator it = r.begin(); it != r.end(); it++) { + SettingVariableInfo var; + long buddy_id = -1; + std::string key; + std::string val; -// roster.push_back(b); -// } + buddy_id = r[0][0].as(); + var.type = r[0][1].as(); + key = r[0][2].as(); + val = r[0][3].as(); + switch (var.type) { + case TYPE_BOOLEAN: + var.b = atoi(val.c_str()); + break; + case TYPE_STRING: + var.s = val; + break; + default: + continue; + break; + } -// EXEC(m_getBuddiesSettings, getBuddies(id, roster)); -// if (!exec_ok) -// return false; + BOOST_FOREACH(BuddyInfo &b, roster) { + if (buddy_id == b.id) { + b.settings[key] = var; + break; + } + } + } -// BOOST_FOREACH(BuddyInfo &b, roster) { -// if (buddy_id == b.id) { -//// std::cout << "Adding buddy info setting " << key << "\n"; -// b.settings[key] = var; -// buddy_id = -1; -// } + return true; + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + } -// while(buddy_id == -1 && m_getBuddiesSettings->fetch() == 0) { -// std::string val; -// *m_getBuddiesSettings >> buddy_id >> var.type >> key >> val; - -// switch (var.type) { -// case TYPE_BOOLEAN: -// var.b = atoi(val.c_str()); -// break; -// case TYPE_STRING: -// var.s = val; -// break; -// default: -// if (buddy_id == b.id) { -// buddy_id = -1; -// } -// continue; -// break; -// } -// if (buddy_id == b.id) { -//// std::cout << "Adding buddy info setting " << key << "=" << val << "\n"; -// b.settings[key] = var; -// buddy_id = -1; -// } -// } -// } - -// while(m_getBuddiesSettings->fetch() == 0) { -// // TODO: probably remove those settings, because there's no buddy for them. -// // It should not happend, but one never know... -// } - - return true; + return false; } bool PQXXBackend::removeUser(long id) { @@ -329,6 +320,7 @@ bool PQXXBackend::removeUser(long id) { exec(txn, "DELETE FROM " + m_prefix + "buddies_settings SET user_id=" + pqxx::to_string(id)); return true; + } catch (std::exception& e) { LOG4CXX_ERROR(logger, e.what()); } @@ -345,7 +337,7 @@ void PQXXBackend::getUserSetting(long id, const std::string &variable, int &type } else { type = r[0][0].as(); - value = r[0][0].as(); + value = r[0][1].as(); } } catch (std::exception& e) { From 83604ed64063eb214a0a5960e968751133a47b51 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 27 Jan 2012 16:05:18 -0500 Subject: [PATCH 03/12] Finished last postgres function. --- src/pqxxbackend.cpp | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index 1194b2ef..ae6ddc9d 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -118,7 +118,7 @@ bool PQXXBackend::createDatabase() { "UNIQUE (ver)" ");"); -// exec("INSERT INTO db_version (ver) VALUES ('2');"); + exec("INSERT INTO db_version (ver) VALUES ('1');"); } return true; @@ -218,29 +218,34 @@ bool PQXXBackend::getOnlineUsers(std::vector &users) { } long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { -// "INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)" -// std::string groups = Util::serializeGroups(buddyInfo.groups); -// *m_addBuddy << userId << buddyInfo.legacyName << buddyInfo.subscription; -// *m_addBuddy << groups; -// *m_addBuddy << buddyInfo.alias << buddyInfo.flags; + pqxx::work txn(*m_conn); + pqxx::result r = txn.exec("INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES " + + "(" + pqxx::to_string(userId) + "," + + quote(txn, buddyInfo.legacyName) + "," + + quote(txn, buddyInfo.subscription) + "," + + quote(txn, Util::serializeGroups(buddyInfo.groups)) + "," + + quote(txn, buddyInfo.alias) + "," + + pqxx::to_string(buddyInfo.flags) + ") RETURNING id"); -// EXEC(m_addBuddy, addBuddy(userId, buddyInfo)); + long id = r[0][0].as(); -// long id = (long) mysql_insert_id(&m_conn); + r = txn.exec("UPDATE " + m_prefix + "buddies_settings SET var = " + quote(txn, buddyInfo.settings.find("icon_hash")->first) + ", type = " + pqxx::to_string(TYPE_STRING) + ", value = " + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + " WHERE user_id = " + pqxx::to_string(userId) + " AND buddy_id = " + pqxx::to_string(id)); + if (r.affected_rows() == 0) { + exec("INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES " + + "(" + pqxx::to_string(userId) + "," + + pqxx::to_string(id) + "," + + quote(txn, buddyInfo.settings.find("icon_hash")->first) + "," + + pqxx::to_string(TYPE_STRING) + "," + + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + ")"); + } -// INSERT OR REPLACE INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES (?, ?, ?, ?, ?) -// if (!buddyInfo.settings.find("icon_hash")->second.s.empty()) { -// *m_updateBuddySetting << userId << id << buddyInfo.settings.find("icon_hash")->first << (int) TYPE_STRING << buddyInfo.settings.find("icon_hash")->second.s << buddyInfo.settings.find("icon_hash")->second.s; -// EXEC(m_updateBuddySetting, addBuddy(userId, buddyInfo)); -// } - - return 0; + return id; } void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { try { pqxx::work txn(*m_conn); - exec(txn, "UPDATE " + m_prefix + "buddies SET groups=" + quote(txn, Util::serializeGroups(buddyInfo.groups)) + ", nickname=" + quote(txn, buddyInfo.alias) + ", flags=" + quote(txn, buddyInfo.flags) + ", subscription=" + quote(txn, buddyInfo.subscription) + " WHERE user_id=" + pqxx::to_string(userId) + " AND uin=" + quote(txn, buddyInfo.legacyName)); + exec(txn, "UPDATE " + m_prefix + "buddies SET groups=" + quote(txn, Util::serializeGroups(buddyInfo.groups)) + ", nickname=" + quote(txn, buddyInfo.alias) + ", flags=" + pqxx::to_string(buddyInfo.flags) + ", subscription=" + quote(txn, buddyInfo.subscription) + " WHERE user_id=" + pqxx::to_string(userId) + " AND uin=" + quote(txn, buddyInfo.legacyName)); } catch (std::exception& e) { LOG4CXX_ERROR(logger, e.what()); From f5aca3ea878a12acc28a5fb9ec01c8292b89a6a4 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Wed, 15 Feb 2012 10:22:27 -0500 Subject: [PATCH 04/12] Casted TYPE_STRING properly. --- src/pqxxbackend.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index ae6ddc9d..d20bfc95 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -229,13 +229,13 @@ long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { long id = r[0][0].as(); - r = txn.exec("UPDATE " + m_prefix + "buddies_settings SET var = " + quote(txn, buddyInfo.settings.find("icon_hash")->first) + ", type = " + pqxx::to_string(TYPE_STRING) + ", value = " + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + " WHERE user_id = " + pqxx::to_string(userId) + " AND buddy_id = " + pqxx::to_string(id)); + r = txn.exec("UPDATE " + m_prefix + "buddies_settings SET var = " + quote(txn, buddyInfo.settings.find("icon_hash")->first) + ", type = " + pqxx::to_string((int)TYPE_STRING) + ", value = " + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + " WHERE user_id = " + pqxx::to_string(userId) + " AND buddy_id = " + pqxx::to_string(id)); if (r.affected_rows() == 0) { exec("INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES " + "(" + pqxx::to_string(userId) + "," + pqxx::to_string(id) + "," + quote(txn, buddyInfo.settings.find("icon_hash")->first) + "," - + pqxx::to_string(TYPE_STRING) + "," + + pqxx::to_string((int)TYPE_STRING) + "," + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + ")"); } From 6764937113b6baa0436d62de871db3ccaecb4d2a Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Wed, 15 Feb 2012 12:29:28 -0500 Subject: [PATCH 05/12] Removed auto-transaction postgres handlers in lieu of our own transaction calls. Updated config file to mention postgres. --- include/transport/pqxxbackend.h | 4 ++-- spectrum/src/sample2.cfg | 4 ++-- src/pqxxbackend.cpp | 34 +++++++++++++++++---------------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/include/transport/pqxxbackend.h b/include/transport/pqxxbackend.h index f02d86fc..f571433b 100644 --- a/include/transport/pqxxbackend.h +++ b/include/transport/pqxxbackend.h @@ -97,9 +97,9 @@ class PQXXBackend : public StorageBackend private: bool exec(const std::string &query, bool show_error = true); - bool exec(pqxx::work &txn, const std::string &query, bool show_error = true); + bool exec(pqxx::nontransaction &txn, const std::string &query, bool show_error = true); template - std::string quote(pqxx::work &txn, const T &t); + std::string quote(pqxx::nontransaction &txn, const T &t); Config *m_config; std::string m_prefix; diff --git a/spectrum/src/sample2.cfg b/spectrum/src/sample2.cfg index d2de8992..d91e2c40 100644 --- a/spectrum/src/sample2.cfg +++ b/spectrum/src/sample2.cfg @@ -73,11 +73,11 @@ backend_config = /etc/spectrum2/backend-logging.cfg [database] # Database backend type -# "sqlite3", "mysql" or "none" without database backend +# "sqlite3", "mysql", "pqxx", or "none" without database backend type = none # For SQLite3: Full path to database -# For MySQL: name of database +# For MySQL and PostgreSQL: name of database # default database = /var/lib/spectrum2/$jid/database.sql #database = jabber_transport diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index d20bfc95..c6136bd3 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -125,16 +125,16 @@ bool PQXXBackend::createDatabase() { } template -std::string PQXXBackend::quote(pqxx::work &txn, const T &t) { +std::string PQXXBackend::quote(pqxx::nontransaction &txn, const T &t) { return "'" + txn.esc(pqxx::to_string(t)) + "'"; } bool PQXXBackend::exec(const std::string &query, bool show_error) { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); return exec(txn, query, show_error); } -bool PQXXBackend::exec(pqxx::work &txn, const std::string &query, bool show_error) { +bool PQXXBackend::exec(pqxx::nontransaction &txn, const std::string &query, bool show_error) { try { txn.exec(query); txn.commit(); @@ -152,7 +152,7 @@ void PQXXBackend::setUser(const UserInfo &user) { if (!CONFIG_STRING(m_config, "database.encryption_key").empty()) { encrypted = Util::encryptPassword(encrypted, CONFIG_STRING(m_config, "database.encryption_key")); } - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); exec(txn, "INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " "(" + quote(txn, user.jid) + "," + quote(txn, user.uin) + "," @@ -165,7 +165,7 @@ void PQXXBackend::setUser(const UserInfo &user) { bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); pqxx::result r = txn.exec("SELECT id, jid, uin, password, encoding, language, vip FROM " + m_prefix + "users WHERE jid=" + quote(txn, barejid)); @@ -192,7 +192,7 @@ bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { void PQXXBackend::setUserOnline(long id, bool online) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); exec(txn, "UPDATE " + m_prefix + "users SET online=" + (online ? "'true'" : "'false'") + ", last_login=NOW() WHERE id=" + pqxx::to_string(id)); } catch (std::exception& e) { @@ -202,7 +202,7 @@ void PQXXBackend::setUserOnline(long id, bool online) { bool PQXXBackend::getOnlineUsers(std::vector &users) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); pqxx::result r = txn.exec("SELECT jid FROM " + m_prefix + "users WHERE online=1"); for (pqxx::result::const_iterator it = r.begin(); it != r.end(); it++) { @@ -218,7 +218,7 @@ bool PQXXBackend::getOnlineUsers(std::vector &users) { } long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); pqxx::result r = txn.exec("INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES " + "(" + pqxx::to_string(userId) + "," + quote(txn, buddyInfo.legacyName) + "," @@ -231,7 +231,7 @@ long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { r = txn.exec("UPDATE " + m_prefix + "buddies_settings SET var = " + quote(txn, buddyInfo.settings.find("icon_hash")->first) + ", type = " + pqxx::to_string((int)TYPE_STRING) + ", value = " + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + " WHERE user_id = " + pqxx::to_string(userId) + " AND buddy_id = " + pqxx::to_string(id)); if (r.affected_rows() == 0) { - exec("INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES " + txn.exec("INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES " + "(" + pqxx::to_string(userId) + "," + pqxx::to_string(id) + "," + quote(txn, buddyInfo.settings.find("icon_hash")->first) + "," @@ -239,12 +239,14 @@ long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + ")"); } + txn.commit(); + return id; } void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); exec(txn, "UPDATE " + m_prefix + "buddies SET groups=" + quote(txn, Util::serializeGroups(buddyInfo.groups)) + ", nickname=" + quote(txn, buddyInfo.alias) + ", flags=" + pqxx::to_string(buddyInfo.flags) + ", subscription=" + quote(txn, buddyInfo.subscription) + " WHERE user_id=" + pqxx::to_string(userId) + " AND uin=" + quote(txn, buddyInfo.legacyName)); } catch (std::exception& e) { @@ -254,7 +256,7 @@ void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { bool PQXXBackend::getBuddies(long id, std::list &roster) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); pqxx::result r = txn.exec("SELECT id, uin, subscription, nickname, groups, flags FROM " + m_prefix + "buddies WHERE user_id=" + pqxx::to_string(id) + " ORDER BY id ASC"); for (pqxx::result::const_iterator it = r.begin(); it != r.end(); it++) { @@ -318,7 +320,7 @@ bool PQXXBackend::getBuddies(long id, std::list &roster) { bool PQXXBackend::removeUser(long id) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); exec(txn, "DELETE FROM " + m_prefix + "users SET id=" + pqxx::to_string(id)); exec(txn, "DELETE FROM " + m_prefix + "buddies SET user_id=" + pqxx::to_string(id)); exec(txn, "DELETE FROM " + m_prefix + "user_settings SET user_id=" + pqxx::to_string(id)); @@ -334,11 +336,11 @@ bool PQXXBackend::removeUser(long id) { void PQXXBackend::getUserSetting(long id, const std::string &variable, int &type, std::string &value) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); pqxx::result r = txn.exec("SELECT type, value FROM " + m_prefix + "users_settings WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); if (r.size() == 0) { - exec(txn, "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES(" + pqxx::to_string(id) + "," + quote(txn, variable) + "," + pqxx::to_string(type) + "," + quote(txn, value) + ")"); + txn.exec(txn, "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES(" + pqxx::to_string(id) + "," + quote(txn, variable) + "," + pqxx::to_string(type) + "," + quote(txn, value) + ")"); } else { type = r[0][0].as(); @@ -352,7 +354,7 @@ void PQXXBackend::getUserSetting(long id, const std::string &variable, int &type void PQXXBackend::updateUserSetting(long id, const std::string &variable, const std::string &value) { try { - pqxx::work txn(*m_conn); + pqxx::nontransaction txn(*m_conn); exec(txn, "UPDATE " + m_prefix + "users_settings SET value=" + quote(txn, value) + " WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); } catch (std::exception& e) { @@ -361,7 +363,7 @@ void PQXXBackend::updateUserSetting(long id, const std::string &variable, const } void PQXXBackend::beginTransaction() { - exec("START TRANSACTION;"); + exec("BEGIN;"); } void PQXXBackend::commitTransaction() { From 68f1f2897fc2fe612c031188f525d766bbf876ab Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Wed, 15 Feb 2012 18:12:09 -0500 Subject: [PATCH 06/12] Cleaned up code a bit, more to come. --- src/pqxxbackend.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index c6136bd3..90818d56 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -99,8 +99,8 @@ bool PQXXBackend::createDatabase() { "language varchar(25) NOT NULL," "encoding varchar(50) NOT NULL default 'utf8'," "last_login timestamp," - "vip boolean NOT NULL default '0'," - "online boolean NOT NULL default '0'," + "vip boolean NOT NULL default 'false'," + "online boolean NOT NULL default 'false'," "PRIMARY KEY (id)," "UNIQUE (jid)" ");"); @@ -153,8 +153,8 @@ void PQXXBackend::setUser(const UserInfo &user) { encrypted = Util::encryptPassword(encrypted, CONFIG_STRING(m_config, "database.encryption_key")); } pqxx::nontransaction txn(*m_conn); - exec(txn, "INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " - "(" + quote(txn, user.jid) + "," + txn.exec("INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " + + "(" + quote(txn, user.jid) + "," + quote(txn, user.uin) + "," + quote(txn, encrypted) + "," + quote(txn, user.language) + "," @@ -193,7 +193,7 @@ bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { void PQXXBackend::setUserOnline(long id, bool online) { try { pqxx::nontransaction txn(*m_conn); - exec(txn, "UPDATE " + m_prefix + "users SET online=" + (online ? "'true'" : "'false'") + ", last_login=NOW() WHERE id=" + pqxx::to_string(id)); + txn.exec("UPDATE " + m_prefix + "users SET online=" + (online ? "'true'" : "'false'") + ", last_login=NOW() WHERE id=" + pqxx::to_string(id)); } catch (std::exception& e) { LOG4CXX_ERROR(logger, e.what()); @@ -203,7 +203,7 @@ void PQXXBackend::setUserOnline(long id, bool online) { bool PQXXBackend::getOnlineUsers(std::vector &users) { try { pqxx::nontransaction txn(*m_conn); - pqxx::result r = txn.exec("SELECT jid FROM " + m_prefix + "users WHERE online=1"); + pqxx::result r = txn.exec("SELECT jid FROM " + m_prefix + "users WHERE online='true'"); for (pqxx::result::const_iterator it = r.begin(); it != r.end(); it++) { users.push_back((*it)[0].as()); @@ -247,7 +247,7 @@ long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { try { pqxx::nontransaction txn(*m_conn); - exec(txn, "UPDATE " + m_prefix + "buddies SET groups=" + quote(txn, Util::serializeGroups(buddyInfo.groups)) + ", nickname=" + quote(txn, buddyInfo.alias) + ", flags=" + pqxx::to_string(buddyInfo.flags) + ", subscription=" + quote(txn, buddyInfo.subscription) + " WHERE user_id=" + pqxx::to_string(userId) + " AND uin=" + quote(txn, buddyInfo.legacyName)); + txn.exec("UPDATE " + m_prefix + "buddies SET groups=" + quote(txn, Util::serializeGroups(buddyInfo.groups)) + ", nickname=" + quote(txn, buddyInfo.alias) + ", flags=" + pqxx::to_string(buddyInfo.flags) + ", subscription=" + quote(txn, buddyInfo.subscription) + " WHERE user_id=" + pqxx::to_string(userId) + " AND uin=" + quote(txn, buddyInfo.legacyName)); } catch (std::exception& e) { LOG4CXX_ERROR(logger, e.what()); @@ -321,10 +321,10 @@ bool PQXXBackend::getBuddies(long id, std::list &roster) { bool PQXXBackend::removeUser(long id) { try { pqxx::nontransaction txn(*m_conn); - exec(txn, "DELETE FROM " + m_prefix + "users SET id=" + pqxx::to_string(id)); - exec(txn, "DELETE FROM " + m_prefix + "buddies SET user_id=" + pqxx::to_string(id)); - exec(txn, "DELETE FROM " + m_prefix + "user_settings SET user_id=" + pqxx::to_string(id)); - exec(txn, "DELETE FROM " + m_prefix + "buddies_settings SET user_id=" + pqxx::to_string(id)); + txn.exec("DELETE FROM " + m_prefix + "users SET id=" + pqxx::to_string(id)); + txn.exec("DELETE FROM " + m_prefix + "buddies SET user_id=" + pqxx::to_string(id)); + txn.exec("DELETE FROM " + m_prefix + "user_settings SET user_id=" + pqxx::to_string(id)); + txn.exec("DELETE FROM " + m_prefix + "buddies_settings SET user_id=" + pqxx::to_string(id)); return true; } @@ -340,7 +340,7 @@ void PQXXBackend::getUserSetting(long id, const std::string &variable, int &type pqxx::result r = txn.exec("SELECT type, value FROM " + m_prefix + "users_settings WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); if (r.size() == 0) { - txn.exec(txn, "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES(" + pqxx::to_string(id) + "," + quote(txn, variable) + "," + pqxx::to_string(type) + "," + quote(txn, value) + ")"); + txn.exec("INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES(" + pqxx::to_string(id) + "," + quote(txn, variable) + "," + pqxx::to_string((int)type) + "," + quote(txn, value) + ")"); } else { type = r[0][0].as(); @@ -355,7 +355,7 @@ void PQXXBackend::getUserSetting(long id, const std::string &variable, int &type void PQXXBackend::updateUserSetting(long id, const std::string &variable, const std::string &value) { try { pqxx::nontransaction txn(*m_conn); - exec(txn, "UPDATE " + m_prefix + "users_settings SET value=" + quote(txn, value) + " WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); + txn.exec("UPDATE " + m_prefix + "users_settings SET value=" + quote(txn, value) + " WHERE user_id=" + pqxx::to_string(id) + " AND var=" + quote(txn, variable)); } catch (std::exception& e) { LOG4CXX_ERROR(logger, e.what()); From 7f5a07be383f5bd11063b8bfd795f1aae7f1fe52 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 17 Feb 2012 13:49:57 -0500 Subject: [PATCH 07/12] Cleaned up code a bit, primarily adding more exception catching in proper locations. --- src/pqxxbackend.cpp | 80 +++++++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/src/pqxxbackend.cpp b/src/pqxxbackend.cpp index 90818d56..c2ae4580 100644 --- a/src/pqxxbackend.cpp +++ b/src/pqxxbackend.cpp @@ -57,7 +57,14 @@ bool PQXXBackend::connect() { str += CONFIG_STRING(m_config, "database.database") + " "; str += "user=" + CONFIG_STRING(m_config, "database.user") + " "; - m_conn = new pqxx::connection(str); + + try { + m_conn = new pqxx::connection(str); + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + return false; + } createDatabase(); @@ -152,15 +159,20 @@ void PQXXBackend::setUser(const UserInfo &user) { if (!CONFIG_STRING(m_config, "database.encryption_key").empty()) { encrypted = Util::encryptPassword(encrypted, CONFIG_STRING(m_config, "database.encryption_key")); } - pqxx::nontransaction txn(*m_conn); - txn.exec("INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " - + "(" + quote(txn, user.jid) + "," - + quote(txn, user.uin) + "," - + quote(txn, encrypted) + "," - + quote(txn, user.language) + "," - + quote(txn, user.encoding) + "," - + "NOW()," - + (user.vip ? "'true'" : "'false'") +")"); + try { + pqxx::nontransaction txn(*m_conn); + txn.exec("INSERT INTO " + m_prefix + "users (jid, uin, password, language, encoding, last_login, vip) VALUES " + + "(" + quote(txn, user.jid) + "," + + quote(txn, user.uin) + "," + + quote(txn, encrypted) + "," + + quote(txn, user.language) + "," + + quote(txn, user.encoding) + "," + + "NOW()," + + (user.vip ? "'true'" : "'false'") +")"); + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + } } bool PQXXBackend::getUser(const std::string &barejid, UserInfo &user) { @@ -218,30 +230,34 @@ bool PQXXBackend::getOnlineUsers(std::vector &users) { } long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) { - pqxx::nontransaction txn(*m_conn); - pqxx::result r = txn.exec("INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES " - + "(" + pqxx::to_string(userId) + "," - + quote(txn, buddyInfo.legacyName) + "," - + quote(txn, buddyInfo.subscription) + "," - + quote(txn, Util::serializeGroups(buddyInfo.groups)) + "," - + quote(txn, buddyInfo.alias) + "," - + pqxx::to_string(buddyInfo.flags) + ") RETURNING id"); - - long id = r[0][0].as(); - - r = txn.exec("UPDATE " + m_prefix + "buddies_settings SET var = " + quote(txn, buddyInfo.settings.find("icon_hash")->first) + ", type = " + pqxx::to_string((int)TYPE_STRING) + ", value = " + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + " WHERE user_id = " + pqxx::to_string(userId) + " AND buddy_id = " + pqxx::to_string(id)); - if (r.affected_rows() == 0) { - txn.exec("INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES " + try { + pqxx::nontransaction txn(*m_conn); + pqxx::result r = txn.exec("INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES " + "(" + pqxx::to_string(userId) + "," - + pqxx::to_string(id) + "," - + quote(txn, buddyInfo.settings.find("icon_hash")->first) + "," - + pqxx::to_string((int)TYPE_STRING) + "," - + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + ")"); + + quote(txn, buddyInfo.legacyName) + "," + + quote(txn, buddyInfo.subscription) + "," + + quote(txn, Util::serializeGroups(buddyInfo.groups)) + "," + + quote(txn, buddyInfo.alias) + "," + + pqxx::to_string(buddyInfo.flags) + ") RETURNING id"); + + long id = r[0][0].as(); + + r = txn.exec("UPDATE " + m_prefix + "buddies_settings SET var = " + quote(txn, buddyInfo.settings.find("icon_hash")->first) + ", type = " + pqxx::to_string((int)TYPE_STRING) + ", value = " + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + " WHERE user_id = " + pqxx::to_string(userId) + " AND buddy_id = " + pqxx::to_string(id)); + if (r.affected_rows() == 0) { + txn.exec("INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES " + + "(" + pqxx::to_string(userId) + "," + + pqxx::to_string(id) + "," + + quote(txn, buddyInfo.settings.find("icon_hash")->first) + "," + + pqxx::to_string((int)TYPE_STRING) + "," + + quote(txn, buddyInfo.settings.find("icon_hash")->second.s) + ")"); + } + + return id; + } + catch (std::exception& e) { + LOG4CXX_ERROR(logger, e.what()); + return -1; } - - txn.commit(); - - return id; } void PQXXBackend::updateBuddy(long userId, const BuddyInfo &buddyInfo) { From 5c1c94902bc55da48d56e192390b6bf2fd338c28 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Wed, 19 Sep 2012 11:02:07 -0400 Subject: [PATCH 08/12] Added redhat packaging components -- needs some work on spec file version detection in particular. --- packaging/spectrum2.init | 79 +++ packaging/spectrum2.spec | 1396 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 1475 insertions(+) create mode 100755 packaging/spectrum2.init create mode 100644 packaging/spectrum2.spec diff --git a/packaging/spectrum2.init b/packaging/spectrum2.init new file mode 100755 index 00000000..eea3cecd --- /dev/null +++ b/packaging/spectrum2.init @@ -0,0 +1,79 @@ +#!/bin/bash + +# spectrum2 Start and stop spectrum 2. + +# chkconfig: - 80 20 +# description: spectrum2 +# processname: spectrum2 + +### BEGIN INIT INFO +# Provides: spectrum2 +# Required-Start: network +# Required-Stop: network +# Default-Start: +# Default-Stop: 0 1 6 +# Short-Description: Start and stop spectrum 2 +# Description: Spectrum is an XMPP transport/gateway. +### END INIT INFO + +# Source function library. +. /etc/init.d/functions + +prog=$"Spectrum 2 server" + +RETVAL=0 + +start() { + [ "$EUID" != "0" ] && exit 4 + +# echo -n $"Starting $prog: " + RETVAL=0 + + export PURPLE_LEAKCHECK_HELP=1; + export G_SLICE=always-malloc; + export PURPLE_VERBOSE_DEBUG=1; + ulimit -c unlimited; + spectrum2_manager start +# echo_success + + return "$RETVAL" +} + +stop() { + [ "$EUID" != "0" ] && exit 4 + + spectrum2_manager stop + return "$RETVAL" +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|force-reload) + stop + sleep 3 + start + ;; + condrestart) + ;; + try-restart) + ;; + status) + spectrum2_manager status + RETVAL=$? + ;; + reload) + exit 3 + ;; + *) + echo $"Usage: $0 {start|stop|restart|try-restart|status|force-reload}" + exit 2 +esac + +exit "$RETVAL" + diff --git a/packaging/spectrum2.spec b/packaging/spectrum2.spec new file mode 100644 index 00000000..706631e4 --- /dev/null +++ b/packaging/spectrum2.spec @@ -0,0 +1,1396 @@ +%global groupname spectrum +%global username spectrum + +Summary: XMPP transport +Name: spectrum2 +Version: 2.0 +Release: 392%{?dist} +Group: Applications/Internet +License: GPLv3 +Source0: spectrum2.tar.gz +URL: http://swift.im/ +# BuildRequires: cmake +# BuildRequires: boost-devel +# BuildRequires: mysql-devel +# BuildRequires: cppunit-devel +# BuildRequires: libsqlite3x-devel +# BuildRequires: protobuf-devel +# BuildRequires: protobuf-compiler +# BuildRequires: popt-devel +# BuildRequires: libidn-devel +# BuildRequires: expat-devel +# BuildRequires: avahi-devel +# BuildRequires: log4cxx-devel +Requires: boost +Requires: mysql-libs +%if 0%{?rhel} +Requires: sqlite +%else +Requires: libsqlite3x +%endif +Requires: protobuf +Requires: popt +Requires: libidn +Requires: expat +Requires: avahi +Requires: log4cxx +#---- +Requires: libtransport%{?_isa} = %{version}-%{release} +Requires: swiften + +%description +Spectrum 2.0 + +%prep +%setup -q -n spectrum2 + +%build +%cmake . -DCMAKE_BUILD_TYPE=Debug +make VERBOSE=1 %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} +install -d %{buildroot}%{_localstatedir}/{lib,run,log}/spectrum2 +install -p -D -m 755 packaging/spectrum2.init \ + %{buildroot}%{_initddir}/spectrum2 + +ln -s /usr/bin/spectrum2_libpurple_backend %{buildroot}/usr/bin/spectrum_libpurple_backend + +%pre +getent group %{groupname} >/dev/null || groupadd -r %{groupname} +getent passwd %{username} >/dev/null || \ + useradd -r -g %{groupname} -d %{_localstatedir}/lib/spectrum \ + -s /sbin/nologin \ + -c "spectrum XMPP transport" %{username} +exit 0 + +%files +%defattr(-, root, root,-) +%doc README +%{_bindir}/spectrum2 +%{_bindir}/spectrum2_manager +/etc/spectrum2/* +%{_initddir}/spectrum2 +%attr(700, %{username}, %{groupname}) %{_localstatedir}/lib/spectrum2/ +%attr(700, %{username}, %{groupname}) %{_localstatedir}/run/spectrum2/ +%attr(700, %{username}, %{groupname}) %{_localstatedir}/log/spectrum2/ + +%package libpurple-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: libpurple-hanzz +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description libpurple-backend +Spectrum2 libpurple backend + +%files libpurple-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_libpurple_backend +/usr/bin/spectrum_libpurple_backend +/usr/bin/spectrum2_frotz_backend +/usr/bin/dfrotz + +%package libcommuni-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: communi +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description libcommuni-backend +Spectrum2 libpurple backend + +%files libcommuni-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_libcommuni_backend + +%package smstools3-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description smstools3-backend +Spectrum2 SMSTools3 backend + +%files smstools3-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_smstools3_backend + +%package skype-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description skype-backend +Spectrum2 Skype backend + +%files skype-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_skype_backend + +%package swiften-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description swiften-backend +Spectrum2 Swiften backend + +%files swiften-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_swiften_backend + +%package libyahoo2-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description libyahoo2-backend +Spectrum2 libyahoo2 backend + +%files libyahoo2-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_libyahoo2_backend + +%package twitter-backend +Summary: Libtransport +Group: Development/Libraries +Requires: boost +Requires: libtransport%{?_isa} = %{version}-%{release} + +%description twitter-backend +Spectrum2 libyahoo2 backend + +%files twitter-backend +%defattr(-, root, root,-) +/usr/bin/spectrum2_twitter_backend + +# %package libircclient-qt-backend +# Summary: Libtransport +# Group: Development/Libraries +# Requires: boost +# Requires: libpurple +# +# %description libircclient-qt-backend +# Spectrum2 libircclient-qt backend +# +# %files libircclient-qt-backend +# %defattr(-, root, root,-) +# /usr/bin/spectrum_libircclient-qt_backend + +%package -n libtransport +Summary: Libtransport +Group: Development/Libraries +Requires: boost + +%description -n libtransport +Libtransport library + +%files -n libtransport +%defattr(-, root, root,-) +%{_libdir}/libtransport*.so* +/usr/include/transport + + +%changelog +* Mon Sep 17 2012 bump - 2.0-392 +- bump + +* Sun Sep 16 2012 bump - 2.0-391 +- bump + +* Sat Sep 15 2012 bump - 2.0-390 +- bump + +* Fri Sep 14 2012 bump - 2.0-389 +- bump + +* Thu Sep 13 2012 bump - 2.0-388 +- bump + +* Wed Sep 12 2012 bump - 2.0-387 +- bump + +* Wed Sep 12 2012 bump - 2.0-386 +- bump + +* Tue Sep 11 2012 bump - 2.0-385 +- bump + +* Mon Sep 10 2012 bump - 2.0-384 +- bump + +* Sun Sep 09 2012 bump - 2.0-383 +- bump + +* Sat Sep 08 2012 bump - 2.0-382 +- bump + +* Fri Sep 07 2012 bump - 2.0-381 +- bump + +* Thu Sep 06 2012 bump - 2.0-380 +- bump + +* Wed Sep 05 2012 bump - 2.0-379 +- bump + +* Tue Sep 04 2012 bump - 2.0-378 +- bump + +* Mon Sep 03 2012 bump - 2.0-377 +- bump + +* Sun Sep 02 2012 bump - 2.0-376 +- bump + +* Sun Sep 02 2012 bump - 2.0-375 +- bump + +* Sat Sep 01 2012 bump - 2.0-374 +- bump + +* Sat Sep 01 2012 bump - 2.0-373 +- bump + +* Sat Sep 01 2012 bump - 2.0-372 +- bump + +* Fri Aug 31 2012 bump - 2.0-371 +- bump + +* Fri Aug 31 2012 bump - 2.0-370 +- bump + +* Thu Aug 30 2012 bump - 2.0-369 +- bump + +* Wed Aug 29 2012 bump - 2.0-368 +- bump + +* Tue Aug 28 2012 bump - 2.0-367 +- bump + +* Mon Aug 27 2012 bump - 2.0-366 +- bump + +* Sun Aug 26 2012 bump - 2.0-365 +- bump + +* Sat Aug 25 2012 bump - 2.0-364 +- bump + +* Fri Aug 24 2012 bump - 2.0-363 +- bump + +* Thu Aug 23 2012 bump - 2.0-362 +- bump + +* Wed Aug 22 2012 bump - 2.0-361 +- bump + +* Tue Aug 21 2012 bump - 2.0-360 +- bump + +* Mon Aug 20 2012 bump - 2.0-359 +- bump + +* Sun Aug 19 2012 bump - 2.0-358 +- bump + +* Sat Aug 18 2012 bump - 2.0-357 +- bump + +* Fri Aug 17 2012 bump - 2.0-356 +- bump + +* Thu Aug 16 2012 bump - 2.0-355 +- bump + +* Wed Aug 15 2012 bump - 2.0-354 +- bump + +* Tue Aug 14 2012 bump - 2.0-353 +- bump + +* Mon Aug 13 2012 bump - 2.0-352 +- bump + +* Sun Aug 12 2012 bump - 2.0-351 +- bump + +* Sat Aug 11 2012 bump - 2.0-350 +- bump + +* Fri Aug 10 2012 bump - 2.0-349 +- bump + +* Thu Aug 09 2012 bump - 2.0-348 +- bump + +* Thu Aug 09 2012 bump - 2.0-347 +- bump + +* Wed Aug 08 2012 bump - 2.0-346 +- bump + +* Tue Aug 07 2012 bump - 2.0-345 +- bump + +* Mon Aug 06 2012 bump - 2.0-344 +- bump + +* Sun Aug 05 2012 bump - 2.0-343 +- bump + +* Sat Aug 04 2012 bump - 2.0-342 +- bump + +* Fri Aug 03 2012 bump - 2.0-341 +- bump + +* Thu Aug 02 2012 bump - 2.0-340 +- bump + +* Wed Aug 01 2012 bump - 2.0-339 +- bump + +* Tue Jul 31 2012 bump - 2.0-338 +- bump + +* Mon Jul 30 2012 bump - 2.0-337 +- bump + +* Sun Jul 29 2012 bump - 2.0-336 +- bump + +* Sat Jul 28 2012 bump - 2.0-335 +- bump + +* Fri Jul 27 2012 bump - 2.0-334 +- bump + +* Thu Jul 26 2012 bump - 2.0-333 +- bump + +* Wed Jul 25 2012 bump - 2.0-332 +- bump + +* Tue Jul 24 2012 bump - 2.0-331 +- bump + +* Mon Jul 23 2012 bump - 2.0-330 +- bump + +* Sun Jul 22 2012 bump - 2.0-329 +- bump + +* Sat Jul 21 2012 bump - 2.0-328 +- bump + +* Fri Jul 20 2012 bump - 2.0-327 +- bump + +* Thu Jul 19 2012 bump - 2.0-326 +- bump + +* Wed Jul 18 2012 bump - 2.0-325 +- bump + +* Tue Jul 17 2012 bump - 2.0-324 +- bump + +* Mon Jul 16 2012 bump - 2.0-323 +- bump + +* Sun Jul 15 2012 bump - 2.0-322 +- bump + +* Sat Jul 14 2012 bump - 2.0-321 +- bump + +* Fri Jul 13 2012 bump - 2.0-320 +- bump + +* Thu Jul 12 2012 bump - 2.0-319 +- bump + +* Wed Jul 11 2012 bump - 2.0-318 +- bump + +* Tue Jul 10 2012 bump - 2.0-317 +- bump + +* Mon Jul 09 2012 bump - 2.0-316 +- bump + +* Sun Jul 08 2012 bump - 2.0-315 +- bump + +* Sat Jul 07 2012 bump - 2.0-314 +- bump + +* Fri Jul 06 2012 bump - 2.0-313 +- bump + +* Thu Jul 05 2012 bump - 2.0-312 +- bump + +* Wed Jul 04 2012 bump - 2.0-311 +- bump + +* Tue Jul 03 2012 bump - 2.0-310 +- bump + +* Mon Jul 02 2012 bump - 2.0-309 +- bump + +* Sun Jul 01 2012 bump - 2.0-308 +- bump + +* Sat Jun 30 2012 bump - 2.0-307 +- bump + +* Fri Jun 29 2012 bump - 2.0-306 +- bump + +* Thu Jun 28 2012 bump - 2.0-305 +- bump + +* Wed Jun 27 2012 bump - 2.0-304 +- bump + +* Tue Jun 26 2012 bump - 2.0-303 +- bump + +* Mon Jun 25 2012 bump - 2.0-302 +- bump + +* Sun Jun 24 2012 bump - 2.0-301 +- bump + +* Sat Jun 23 2012 bump - 2.0-300 +- bump + +* Fri Jun 22 2012 bump - 2.0-299 +- bump + +* Thu Jun 21 2012 bump - 2.0-298 +- bump + +* Wed Jun 20 2012 bump - 2.0-297 +- bump + +* Tue Jun 19 2012 bump - 2.0-296 +- bump + +* Mon Jun 18 2012 bump - 2.0-295 +- bump + +* Sun Jun 17 2012 bump - 2.0-294 +- bump + +* Sat Jun 16 2012 bump - 2.0-293 +- bump + +* Fri Jun 15 2012 bump - 2.0-292 +- bump + +* Thu Jun 14 2012 bump - 2.0-291 +- bump + +* Wed Jun 13 2012 bump - 2.0-290 +- bump + +* Tue Jun 12 2012 bump - 2.0-289 +- bump + +* Mon Jun 11 2012 bump - 2.0-288 +- bump + +* Sun Jun 10 2012 bump - 2.0-287 +- bump + +* Sat Jun 09 2012 bump - 2.0-286 +- bump + +* Fri Jun 08 2012 bump - 2.0-285 +- bump + +* Thu Jun 07 2012 bump - 2.0-284 +- bump + +* Thu Jun 07 2012 bump - 2.0-283 +- bump + +* Wed Jun 06 2012 bump - 2.0-282 +- bump + +* Wed Jun 06 2012 bump - 2.0-281 +- bump + +* Wed Jun 06 2012 bump - 2.0-280 +- bump + +* Wed Jun 06 2012 bump - 2.0-279 +- bump + +* Wed Jun 06 2012 bump - 2.0-278 +- bump + +* Tue Jun 05 2012 bump - 2.0-277 +- bump + +* Mon Jun 04 2012 bump - 2.0-276 +- bump + +* Sun Jun 03 2012 bump - 2.0-275 +- bump + +* Sat Jun 02 2012 bump - 2.0-274 +- bump + +* Fri Jun 01 2012 bump - 2.0-273 +- bump + +* Thu May 31 2012 bump - 2.0-272 +- bump + +* Wed May 30 2012 bump - 2.0-271 +- bump + +* Tue May 29 2012 bump - 2.0-270 +- bump + +* Mon May 28 2012 bump - 2.0-269 +- bump + +* Sun May 27 2012 bump - 2.0-268 +- bump + +* Sat May 26 2012 bump - 2.0-267 +- bump + +* Sat May 26 2012 bump - 2.0-266 +- bump + +* Sat May 26 2012 bump - 2.0-265 +- bump + +* Fri May 25 2012 bump - 2.0-264 +- bump + +* Fri May 25 2012 bump - 2.0-263 +- bump + +* Fri May 25 2012 bump - 2.0-262 +- bump + +* Thu May 24 2012 bump - 2.0-261 +- bump + +* Wed May 23 2012 bump - 2.0-260 +- bump + +* Tue May 22 2012 bump - 2.0-259 +- bump + +* Mon May 21 2012 bump - 2.0-258 +- bump + +* Sun May 20 2012 bump - 2.0-257 +- bump + +* Sat May 19 2012 bump - 2.0-256 +- bump + +* Fri May 18 2012 bump - 2.0-255 +- bump + +* Thu May 17 2012 bump - 2.0-254 +- bump + +* Wed May 16 2012 bump - 2.0-253 +- bump + +* Tue May 15 2012 bump - 2.0-252 +- bump + +* Mon May 14 2012 bump - 2.0-251 +- bump + +* Mon May 14 2012 bump - 2.0-250 +- bump + +* Sun May 13 2012 bump - 2.0-249 +- bump + +* Sat May 12 2012 bump - 2.0-248 +- bump + +* Fri May 11 2012 bump - 2.0-247 +- bump + +* Thu May 10 2012 bump - 2.0-246 +- bump + +* Wed May 09 2012 bump - 2.0-245 +- bump + +* Tue May 08 2012 bump - 2.0-244 +- bump + +* Mon May 07 2012 bump - 2.0-243 +- bump + +* Sun May 06 2012 bump - 2.0-242 +- bump + +* Sat May 05 2012 bump - 2.0-241 +- bump + +* Fri May 04 2012 bump - 2.0-240 +- bump + +* Thu May 03 2012 bump - 2.0-239 +- bump + +* Wed May 02 2012 bump - 2.0-238 +- bump + +* Tue May 01 2012 bump - 2.0-237 +- bump + +* Mon Apr 30 2012 bump - 2.0-236 +- bump + +* Sun Apr 29 2012 bump - 2.0-235 +- bump + +* Sat Apr 28 2012 bump - 2.0-234 +- bump + +* Fri Apr 27 2012 bump - 2.0-233 +- bump + +* Thu Apr 26 2012 bump - 2.0-232 +- bump + +* Wed Apr 25 2012 bump - 2.0-231 +- bump + +* Tue Apr 24 2012 bump - 2.0-230 +- bump + +* Mon Apr 23 2012 bump - 2.0-229 +- bump + +* Sun Apr 22 2012 bump - 2.0-228 +- bump + +* Sat Apr 21 2012 bump - 2.0-227 +- bump + +* Fri Apr 20 2012 bump - 2.0-226 +- bump + +* Thu Apr 19 2012 bump - 2.0-225 +- bump + +* Wed Apr 18 2012 bump - 2.0-224 +- bump + +* Tue Apr 17 2012 bump - 2.0-223 +- bump + +* Mon Apr 16 2012 bump - 2.0-222 +- bump + +* Sun Apr 15 2012 bump - 2.0-221 +- bump + +* Sat Apr 14 2012 bump - 2.0-220 +- bump + +* Sat Apr 14 2012 bump - 2.0-219 +- bump + +* Fri Apr 13 2012 bump - 2.0-218 +- bump + +* Thu Apr 12 2012 bump - 2.0-217 +- bump + +* Wed Apr 11 2012 bump - 2.0-216 +- bump + +* Tue Apr 10 2012 bump - 2.0-215 +- bump + +* Mon Apr 09 2012 bump - 2.0-214 +- bump + +* Sun Apr 08 2012 bump - 2.0-213 +- bump + +* Sat Apr 07 2012 bump - 2.0-212 +- bump + +* Fri Apr 06 2012 bump - 2.0-211 +- bump + +* Thu Apr 05 2012 bump - 2.0-210 +- bump + +* Wed Apr 04 2012 bump - 2.0-209 +- bump + +* Tue Apr 03 2012 bump - 2.0-208 +- bump + +* Mon Apr 02 2012 bump - 2.0-207 +- bump + +* Sun Apr 01 2012 bump - 2.0-206 +- bump + +* Sat Mar 31 2012 bump - 2.0-205 +- bump + +* Fri Mar 30 2012 bump - 2.0-204 +- bump + +* Thu Mar 29 2012 bump - 2.0-203 +- bump + +* Wed Mar 28 2012 bump - 2.0-202 +- bump + +* Tue Mar 27 2012 bump - 2.0-201 +- bump + +* Mon Mar 26 2012 bump - 2.0-200 +- bump + +* Sun Mar 25 2012 bump - 2.0-199 +- bump + +* Sat Mar 24 2012 bump - 2.0-198 +- bump + +* Fri Mar 23 2012 bump - 2.0-197 +- bump + +* Thu Mar 22 2012 bump - 2.0-196 +- bump + +* Wed Mar 21 2012 bump - 2.0-195 +- bump + +* Tue Mar 20 2012 bump - 2.0-194 +- bump + +* Mon Mar 19 2012 bump - 2.0-193 +- bump + +* Sun Mar 18 2012 bump - 2.0-192 +- bump + +* Sat Mar 17 2012 bump - 2.0-191 +- bump + +* Fri Mar 16 2012 bump - 2.0-190 +- bump + +* Thu Mar 15 2012 bump - 2.0-189 +- bump + +* Wed Mar 14 2012 bump - 2.0-188 +- bump + +* Tue Mar 13 2012 bump - 2.0-187 +- bump + +* Mon Mar 12 2012 bump - 2.0-186 +- bump + +* Sun Mar 11 2012 bump - 2.0-185 +- bump + +* Sat Mar 10 2012 bump - 2.0-184 +- bump + +* Fri Mar 09 2012 bump - 2.0-183 +- bump + +* Thu Mar 08 2012 bump - 2.0-182 +- bump + +* Wed Mar 07 2012 bump - 2.0-181 +- bump + +* Tue Mar 06 2012 bump - 2.0-180 +- bump + +* Mon Mar 05 2012 bump - 2.0-179 +- bump + +* Sun Mar 04 2012 bump - 2.0-178 +- bump + +* Sat Mar 03 2012 bump - 2.0-177 +- bump + +* Fri Mar 02 2012 bump - 2.0-176 +- bump + +* Thu Mar 01 2012 bump - 2.0-175 +- bump + +* Wed Feb 29 2012 bump - 2.0-174 +- bump + +* Tue Feb 28 2012 bump - 2.0-173 +- bump + +* Mon Feb 27 2012 bump - 2.0-172 +- bump + +* Sun Feb 26 2012 bump - 2.0-171 +- bump + +* Sun Feb 26 2012 bump - 2.0-170 +- bump + +* Sun Feb 26 2012 bump - 2.0-169 +- bump + +* Sun Feb 26 2012 bump - 2.0-168 +- bump + +* Sun Feb 26 2012 bump - 2.0-167 +- bump + +* Sat Feb 25 2012 bump - 2.0-166 +- bump + +* Sat Feb 25 2012 bump - 2.0-165 +- bump + +* Sat Feb 25 2012 bump - 2.0-164 +- bump + +* Fri Feb 24 2012 bump - 2.0-163 +- bump + +* Thu Feb 23 2012 bump - 2.0-162 +- bump + +* Wed Feb 22 2012 bump - 2.0-161 +- bump + +* Tue Feb 21 2012 bump - 2.0-160 +- bump + +* Mon Feb 20 2012 bump - 2.0-159 +- bump + +* Sun Feb 19 2012 bump - 2.0-158 +- bump + +* Sat Feb 18 2012 bump - 2.0-157 +- bump + +* Fri Feb 17 2012 bump - 2.0-156 +- bump + +* Thu Feb 16 2012 bump - 2.0-155 +- bump + +* Thu Feb 16 2012 bump - 2.0-154 +- bump + +* Thu Feb 16 2012 bump - 2.0-153 +- bump + +* Wed Feb 15 2012 bump - 2.0-152 +- bump + +* Tue Feb 14 2012 bump - 2.0-151 +- bump + +* Mon Feb 13 2012 bump - 2.0-150 +- bump + +* Sun Feb 12 2012 bump - 2.0-149 +- bump + +* Sat Feb 11 2012 bump - 2.0-148 +- bump + +* Fri Feb 10 2012 bump - 2.0-147 +- bump + +* Thu Feb 09 2012 bump - 2.0-146 +- bump + +* Wed Feb 08 2012 bump - 2.0-145 +- bump + +* Tue Feb 07 2012 bump - 2.0-144 +- bump + +* Mon Feb 06 2012 bump - 2.0-143 +- bump + +* Sun Feb 05 2012 bump - 2.0-142 +- bump + +* Sat Feb 04 2012 bump - 2.0-141 +- bump + +* Fri Feb 03 2012 bump - 2.0-140 +- bump + +* Thu Feb 02 2012 bump - 2.0-139 +- bump + +* Wed Feb 01 2012 bump - 2.0-138 +- bump + +* Tue Jan 31 2012 bump - 2.0-137 +- bump + +* Mon Jan 30 2012 bump - 2.0-136 +- bump + +* Sun Jan 29 2012 bump - 2.0-135 +- bump + +* Sat Jan 28 2012 bump - 2.0-134 +- bump + +* Fri Jan 27 2012 bump - 2.0-133 +- bump + +* Thu Jan 26 2012 bump - 2.0-132 +- bump + +* Wed Jan 25 2012 bump - 2.0-131 +- bump + +* Tue Jan 24 2012 bump - 2.0-130 +- bump + +* Tue Jan 24 2012 bump - 2.0-129 +- bump + +* Tue Jan 24 2012 bump - 2.0-128 +- bump + +* Mon Jan 23 2012 bump - 2.0-127 +- bump + +* Sun Jan 22 2012 bump - 2.0-126 +- bump + +* Sat Jan 21 2012 bump - 2.0-125 +- bump + +* Fri Jan 20 2012 bump - 2.0-124 +- bump + +* Fri Jan 20 2012 bump - 2.0-123 +- bump + +* Fri Jan 20 2012 bump - 2.0-122 +- bump + +* Thu Jan 19 2012 bump - 2.0-121 +- bump + +* Wed Jan 18 2012 bump - 2.0-120 +- bump + +* Wed Jan 18 2012 bump - 2.0-119 +- bump + +* Tue Jan 17 2012 bump - 2.0-118 +- bump + +* Mon Jan 16 2012 bump - 2.0-117 +- bump + +* Sun Jan 15 2012 bump - 2.0-116 +- bump + +* Sat Jan 14 2012 bump - 2.0-115 +- bump + +* Fri Jan 13 2012 bump - 2.0-114 +- bump + +* Thu Jan 12 2012 bump - 2.0-113 +- bump + +* Wed Jan 11 2012 bump - 2.0-112 +- bump + +* Tue Jan 10 2012 bump - 2.0-111 +- bump + +* Mon Jan 09 2012 bump - 2.0-110 +- bump + +* Sun Jan 08 2012 bump - 2.0-109 +- bump + +* Sat Jan 07 2012 bump - 2.0-108 +- bump + +* Fri Jan 06 2012 bump - 2.0-107 +- bump + +* Fri Jan 06 2012 bump - 2.0-106 +- bump + +* Fri Jan 06 2012 bump - 2.0-105 +- bump + +* Thu Jan 05 2012 bump - 2.0-104 +- bump + +* Wed Jan 04 2012 bump - 2.0-103 +- bump + +* Tue Jan 03 2012 bump - 2.0-102 +- bump + +* Mon Jan 02 2012 bump - 2.0-101 +- bump + +* Sun Jan 01 2012 bump - 2.0-100 +- bump + +* Sat Dec 31 2011 bump - 2.0-99 +- bump + +* Fri Dec 30 2011 bump - 2.0-98 +- bump + +* Thu Dec 29 2011 bump - 2.0-97 +- bump + +* Wed Dec 28 2011 bump - 2.0-96 +- bump + +* Tue Dec 27 2011 bump - 2.0-95 +- bump + +* Mon Dec 26 2011 bump - 2.0-94 +- bump + +* Sun Dec 25 2011 bump - 2.0-93 +- bump + +* Sun Dec 25 2011 bump - 2.0-92 +- bump + +* Sun Dec 25 2011 bump - 2.0-91 +- bump + +* Sun Dec 25 2011 bump - 2.0-90 +- bump + +* Sat Dec 24 2011 bump - 2.0-89 +- bump + +* Fri Dec 23 2011 bump - 2.0-88 +- bump + +* Thu Dec 22 2011 bump - 2.0-87 +- bump + +* Wed Dec 21 2011 bump - 2.0-86 +- bump + +* Wed Dec 21 2011 bump - 2.0-85 +- bump + +* Wed Dec 21 2011 bump - 2.0-84 +- bump + +* Wed Dec 21 2011 bump - 2.0-83 +- bump + +* Tue Dec 20 2011 bump - 2.0-82 +- bump + +* Tue Dec 20 2011 bump - 2.0-81 +- bump + +* Tue Dec 20 2011 bump - 2.0-80 +- bump + +* Mon Dec 19 2011 bump - 2.0-79 +- bump + +* Sun Dec 18 2011 bump - 2.0-78 +- bump + +* Sat Dec 17 2011 bump - 2.0-77 +- bump + +* Fri Dec 16 2011 bump - 2.0-76 +- bump + +* Thu Dec 15 2011 bump - 2.0-75 +- bump + +* Tue Dec 13 2011 bump - 2.0-74 +- bump + +* Mon Dec 12 2011 bump - 2.0-73 +- bump + +* Mon Dec 12 2011 bump - 2.0-72 +- bump + +* Sun Dec 11 2011 bump - 2.0-71 +- bump + +* Sat Dec 10 2011 bump - 2.0-70 +- bump + +* Fri Dec 09 2011 bump - 2.0-69 +- bump + +* Thu Dec 08 2011 bump - 2.0-68 +- bump + +* Wed Dec 07 2011 bump - 2.0-67 +- bump + +* Wed Dec 07 2011 bump - 2.0-66 +- bump + +* Mon Dec 05 2011 bump - 2.0-65 +- bump + +* Mon Dec 05 2011 bump - 2.0-64 +- bump + +* Sun Dec 04 2011 bump - 2.0-63 +- bump + +* Sat Dec 03 2011 bump - 2.0-62 +- bump + +* Sat Dec 03 2011 bump - 2.0-61 +- bump + +* Fri Dec 02 2011 bump - 2.0-60 +- bump + +* Thu Dec 01 2011 bump - 2.0-59 +- bump + +* Wed Nov 30 2011 bump - 2.0-58 +- bump + +* Tue Nov 29 2011 bump - 2.0-57 +- bump + +* Mon Nov 28 2011 bump - 2.0-56 +- bump + +* Sun Nov 27 2011 bump - 2.0-55 +- bump + +* Sat Nov 26 2011 bump - 2.0-54 +- bump + +* Fri Nov 25 2011 bump - 2.0-53 +- bump + +* Thu Nov 24 2011 bump - 2.0-52 +- bump + +* Wed Nov 23 2011 bump - 2.0-51 +- bump + +* Tue Nov 22 2011 bump - 2.0-50 +- bump + +* Mon Nov 21 2011 bump - 2.0-49 +- bump + +* Sun Nov 20 2011 bump - 2.0-48 +- bump + +* Sat Nov 19 2011 bump - 2.0-47 +- bump + +* Fri Nov 18 2011 bump - 2.0-46 +- bump + +* Thu Nov 17 2011 bump - 2.0-45 +- bump + +* Wed Nov 16 2011 bump - 2.0-44 +- bump + +* Tue Nov 15 2011 bump - 2.0-43 +- bump + +* Tue Nov 15 2011 bump - 2.0-42 +- bump + +* Tue Nov 15 2011 bump - 2.0-41 +- bump + +* Mon Nov 14 2011 bump - 2.0-40 +- bump + +* Mon Nov 14 2011 bump - 2.0-39 +- bump + +* Mon Nov 14 2011 bump - 2.0-38 +- bump + +* Mon Nov 14 2011 bump - 2.0-37 +- bump + +* Mon Nov 14 2011 bump - 2.0-36 +- bump + +* Sun Nov 13 2011 bump - 2.0-35 +- bump + +* Sun Nov 13 2011 bump - 2.0-34 +- bump + +* Sun Nov 13 2011 bump - 2.0-33 +- bump + +* Sun Nov 13 2011 bump - 2.0-32 +- bump + +* Sat Nov 12 2011 bump - 2.0-31 +- bump + +* Sat Nov 12 2011 bump - 2.0-30 +- bump + +* Fri Nov 11 2011 bump - 2.0-29 +- bump + +* Thu Nov 10 2011 bump - 2.0-28 +- bump + +* Wed Nov 09 2011 bump - 2.0-27 +- bump + +* Tue Nov 08 2011 bump - 2.0-26 +- bump + +* Mon Nov 07 2011 bump - 2.0-25 +- bump + +* Sun Nov 06 2011 bump - 2.0-24 +- bump + +* Sat Nov 05 2011 bump - 2.0-23 +- bump + +* Sat Nov 05 2011 bump - 2.0-22 +- bump + +* Sat Nov 05 2011 bump - 2.0-21 +- bump + +* Fri Nov 04 2011 bump - 2.0-20 +- bump + +* Thu Nov 03 2011 bump - 2.0-19 +- bump + +* Thu Nov 03 2011 bump - 2.0-18 +- bump + +* Wed Nov 02 2011 bump - 2.0-17 +- bump + +* Wed Nov 02 2011 bump - 2.0-16 +- bump + +* Wed Nov 02 2011 bump - 2.0-15 +- bump + +* Wed Nov 02 2011 bump - 2.0-14 +- bump + +* Tue Nov 01 2011 bump - 2.0-13 +- bump + +* Tue Nov 01 2011 bump - 2.0-12 +- bump + +* Tue Nov 01 2011 bump - 2.0-11 +- bump + +* Mon Jul 25 2011 Jan Kaluza - 1.0-4 +- rebuild for new boost + +* Wed May 25 2011 Jan Kaluza - 1.0-3 +- fix #706719 - fixed another crash during login + +* Tue Apr 26 2011 Jan Kaluza - 1.0-2 +- fix #697832 - fixed crash during login + +* Tue Apr 19 2011 Jan Kaluza - 1.0-1 +- update to new upstream version 1.0 + +* Wed Apr 06 2011 Jan Kaluza - 1.0-0.11.beta9 +- rebuild for new boost + +* Tue Mar 15 2011 Jan Kaluza - 1.0-0.10.beta9 +- update to new upstream version 1.0-beta9 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.0-0.9.beta8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Sun Feb 06 2011 Thomas Spura - 1.0-0.8.beta8 +- rebuild for new boost + +* Wed Nov 10 2010 Jan Kaluza - 1.0-0.7.beta8 +- update to new upstream version 1.0-beta8 + +* Tue Oct 19 2010 Jan Kaluza - 1.0-0.6.beta7 +- update to new upstream version 1.0-beta7 + +* Mon Aug 30 2010 Jan Kaluza - 1.0-0.5.beta6 +- update to new upstream version 1.0-beta6 + +* Tue Aug 10 2010 Jan Kaluza - 1.0-0.4.beta5 +- build with avahi-devel to get DNSSD Support + +* Wed Aug 04 2010 Jan Kaluza - 1.0-0.3.beta5 +- build with optflags +- preserve swift.xpm timestamp +- fixed license and install COPYING file +- fixed Changelog entries + +* Wed Jul 28 2010 Jan Kaluza - 1.0-0.2.beta5 +- delete all unused bundled libraries +- don't use deprecated BuildRoot tag +- swift.xpm replaced by icon from swift tarball + +* Wed Jul 28 2010 Jan Kaluza - 1.0-0.1.beta5 +- created this SPEC file From 7407f4790413be92dcd1dce00df64553a6c76ff6 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 21 Sep 2012 13:53:46 -0400 Subject: [PATCH 09/12] Updated a few things to handle auto-builds more cleanly. --- packaging/spectrum2.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packaging/spectrum2.spec b/packaging/spectrum2.spec index 706631e4..f8879fee 100644 --- a/packaging/spectrum2.spec +++ b/packaging/spectrum2.spec @@ -1,10 +1,13 @@ %global groupname spectrum %global username spectrum +%define _version 2.0 +%define _release %{?_release}%{!?_release:1} + Summary: XMPP transport Name: spectrum2 -Version: 2.0 -Release: 392%{?dist} +Version: %{_version} +Release: %{_release}%{?dist} Group: Applications/Internet License: GPLv3 Source0: spectrum2.tar.gz @@ -49,6 +52,7 @@ Spectrum 2.0 make VERBOSE=1 %{?_smp_mflags} %install +rm -rf %{buildroot} make install DESTDIR=%{buildroot} install -d %{buildroot}%{_localstatedir}/{lib,run,log}/spectrum2 install -p -D -m 755 packaging/spectrum2.init \ From aa12cc5bb4d69c08e497c642ace17cad319ac62c Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 21 Sep 2012 14:12:51 -0400 Subject: [PATCH 10/12] Fixed spec file so it properly pulls in a define of _release. --- packaging/spectrum2.spec | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packaging/spectrum2.spec b/packaging/spectrum2.spec index f8879fee..d7a41c91 100644 --- a/packaging/spectrum2.spec +++ b/packaging/spectrum2.spec @@ -1,13 +1,10 @@ %global groupname spectrum %global username spectrum -%define _version 2.0 -%define _release %{?_release}%{!?_release:1} - Summary: XMPP transport Name: spectrum2 -Version: %{_version} -Release: %{_release}%{?dist} +Version: 2.0 +Release: %{?_release}%{!?_release:1}%{?dist} Group: Applications/Internet License: GPLv3 Source0: spectrum2.tar.gz From aa32d0a80d13b7a3179c9a909335bf313c42d6e7 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 30 Nov 2012 11:00:15 -0500 Subject: [PATCH 11/12] Removed bumps --- packaging/spectrum2.spec | 1147 +------------------------------------- 1 file changed, 2 insertions(+), 1145 deletions(-) diff --git a/packaging/spectrum2.spec b/packaging/spectrum2.spec index d7a41c91..dd1c4560 100644 --- a/packaging/spectrum2.spec +++ b/packaging/spectrum2.spec @@ -200,1151 +200,8 @@ Libtransport library %changelog -* Mon Sep 17 2012 bump - 2.0-392 -- bump - -* Sun Sep 16 2012 bump - 2.0-391 -- bump - -* Sat Sep 15 2012 bump - 2.0-390 -- bump - -* Fri Sep 14 2012 bump - 2.0-389 -- bump - -* Thu Sep 13 2012 bump - 2.0-388 -- bump - -* Wed Sep 12 2012 bump - 2.0-387 -- bump - -* Wed Sep 12 2012 bump - 2.0-386 -- bump - -* Tue Sep 11 2012 bump - 2.0-385 -- bump - -* Mon Sep 10 2012 bump - 2.0-384 -- bump - -* Sun Sep 09 2012 bump - 2.0-383 -- bump - -* Sat Sep 08 2012 bump - 2.0-382 -- bump - -* Fri Sep 07 2012 bump - 2.0-381 -- bump - -* Thu Sep 06 2012 bump - 2.0-380 -- bump - -* Wed Sep 05 2012 bump - 2.0-379 -- bump - -* Tue Sep 04 2012 bump - 2.0-378 -- bump - -* Mon Sep 03 2012 bump - 2.0-377 -- bump - -* Sun Sep 02 2012 bump - 2.0-376 -- bump - -* Sun Sep 02 2012 bump - 2.0-375 -- bump - -* Sat Sep 01 2012 bump - 2.0-374 -- bump - -* Sat Sep 01 2012 bump - 2.0-373 -- bump - -* Sat Sep 01 2012 bump - 2.0-372 -- bump - -* Fri Aug 31 2012 bump - 2.0-371 -- bump - -* Fri Aug 31 2012 bump - 2.0-370 -- bump - -* Thu Aug 30 2012 bump - 2.0-369 -- bump - -* Wed Aug 29 2012 bump - 2.0-368 -- bump - -* Tue Aug 28 2012 bump - 2.0-367 -- bump - -* Mon Aug 27 2012 bump - 2.0-366 -- bump - -* Sun Aug 26 2012 bump - 2.0-365 -- bump - -* Sat Aug 25 2012 bump - 2.0-364 -- bump - -* Fri Aug 24 2012 bump - 2.0-363 -- bump - -* Thu Aug 23 2012 bump - 2.0-362 -- bump - -* Wed Aug 22 2012 bump - 2.0-361 -- bump - -* Tue Aug 21 2012 bump - 2.0-360 -- bump - -* Mon Aug 20 2012 bump - 2.0-359 -- bump - -* Sun Aug 19 2012 bump - 2.0-358 -- bump - -* Sat Aug 18 2012 bump - 2.0-357 -- bump - -* Fri Aug 17 2012 bump - 2.0-356 -- bump - -* Thu Aug 16 2012 bump - 2.0-355 -- bump - -* Wed Aug 15 2012 bump - 2.0-354 -- bump - -* Tue Aug 14 2012 bump - 2.0-353 -- bump - -* Mon Aug 13 2012 bump - 2.0-352 -- bump - -* Sun Aug 12 2012 bump - 2.0-351 -- bump - -* Sat Aug 11 2012 bump - 2.0-350 -- bump - -* Fri Aug 10 2012 bump - 2.0-349 -- bump - -* Thu Aug 09 2012 bump - 2.0-348 -- bump - -* Thu Aug 09 2012 bump - 2.0-347 -- bump - -* Wed Aug 08 2012 bump - 2.0-346 -- bump - -* Tue Aug 07 2012 bump - 2.0-345 -- bump - -* Mon Aug 06 2012 bump - 2.0-344 -- bump - -* Sun Aug 05 2012 bump - 2.0-343 -- bump - -* Sat Aug 04 2012 bump - 2.0-342 -- bump - -* Fri Aug 03 2012 bump - 2.0-341 -- bump - -* Thu Aug 02 2012 bump - 2.0-340 -- bump - -* Wed Aug 01 2012 bump - 2.0-339 -- bump - -* Tue Jul 31 2012 bump - 2.0-338 -- bump - -* Mon Jul 30 2012 bump - 2.0-337 -- bump - -* Sun Jul 29 2012 bump - 2.0-336 -- bump - -* Sat Jul 28 2012 bump - 2.0-335 -- bump - -* Fri Jul 27 2012 bump - 2.0-334 -- bump - -* Thu Jul 26 2012 bump - 2.0-333 -- bump - -* Wed Jul 25 2012 bump - 2.0-332 -- bump - -* Tue Jul 24 2012 bump - 2.0-331 -- bump - -* Mon Jul 23 2012 bump - 2.0-330 -- bump - -* Sun Jul 22 2012 bump - 2.0-329 -- bump - -* Sat Jul 21 2012 bump - 2.0-328 -- bump - -* Fri Jul 20 2012 bump - 2.0-327 -- bump - -* Thu Jul 19 2012 bump - 2.0-326 -- bump - -* Wed Jul 18 2012 bump - 2.0-325 -- bump - -* Tue Jul 17 2012 bump - 2.0-324 -- bump - -* Mon Jul 16 2012 bump - 2.0-323 -- bump - -* Sun Jul 15 2012 bump - 2.0-322 -- bump - -* Sat Jul 14 2012 bump - 2.0-321 -- bump - -* Fri Jul 13 2012 bump - 2.0-320 -- bump - -* Thu Jul 12 2012 bump - 2.0-319 -- bump - -* Wed Jul 11 2012 bump - 2.0-318 -- bump - -* Tue Jul 10 2012 bump - 2.0-317 -- bump - -* Mon Jul 09 2012 bump - 2.0-316 -- bump - -* Sun Jul 08 2012 bump - 2.0-315 -- bump - -* Sat Jul 07 2012 bump - 2.0-314 -- bump - -* Fri Jul 06 2012 bump - 2.0-313 -- bump - -* Thu Jul 05 2012 bump - 2.0-312 -- bump - -* Wed Jul 04 2012 bump - 2.0-311 -- bump - -* Tue Jul 03 2012 bump - 2.0-310 -- bump - -* Mon Jul 02 2012 bump - 2.0-309 -- bump - -* Sun Jul 01 2012 bump - 2.0-308 -- bump - -* Sat Jun 30 2012 bump - 2.0-307 -- bump - -* Fri Jun 29 2012 bump - 2.0-306 -- bump - -* Thu Jun 28 2012 bump - 2.0-305 -- bump - -* Wed Jun 27 2012 bump - 2.0-304 -- bump - -* Tue Jun 26 2012 bump - 2.0-303 -- bump - -* Mon Jun 25 2012 bump - 2.0-302 -- bump - -* Sun Jun 24 2012 bump - 2.0-301 -- bump - -* Sat Jun 23 2012 bump - 2.0-300 -- bump - -* Fri Jun 22 2012 bump - 2.0-299 -- bump - -* Thu Jun 21 2012 bump - 2.0-298 -- bump - -* Wed Jun 20 2012 bump - 2.0-297 -- bump - -* Tue Jun 19 2012 bump - 2.0-296 -- bump - -* Mon Jun 18 2012 bump - 2.0-295 -- bump - -* Sun Jun 17 2012 bump - 2.0-294 -- bump - -* Sat Jun 16 2012 bump - 2.0-293 -- bump - -* Fri Jun 15 2012 bump - 2.0-292 -- bump - -* Thu Jun 14 2012 bump - 2.0-291 -- bump - -* Wed Jun 13 2012 bump - 2.0-290 -- bump - -* Tue Jun 12 2012 bump - 2.0-289 -- bump - -* Mon Jun 11 2012 bump - 2.0-288 -- bump - -* Sun Jun 10 2012 bump - 2.0-287 -- bump - -* Sat Jun 09 2012 bump - 2.0-286 -- bump - -* Fri Jun 08 2012 bump - 2.0-285 -- bump - -* Thu Jun 07 2012 bump - 2.0-284 -- bump - -* Thu Jun 07 2012 bump - 2.0-283 -- bump - -* Wed Jun 06 2012 bump - 2.0-282 -- bump - -* Wed Jun 06 2012 bump - 2.0-281 -- bump - -* Wed Jun 06 2012 bump - 2.0-280 -- bump - -* Wed Jun 06 2012 bump - 2.0-279 -- bump - -* Wed Jun 06 2012 bump - 2.0-278 -- bump - -* Tue Jun 05 2012 bump - 2.0-277 -- bump - -* Mon Jun 04 2012 bump - 2.0-276 -- bump - -* Sun Jun 03 2012 bump - 2.0-275 -- bump - -* Sat Jun 02 2012 bump - 2.0-274 -- bump - -* Fri Jun 01 2012 bump - 2.0-273 -- bump - -* Thu May 31 2012 bump - 2.0-272 -- bump - -* Wed May 30 2012 bump - 2.0-271 -- bump - -* Tue May 29 2012 bump - 2.0-270 -- bump - -* Mon May 28 2012 bump - 2.0-269 -- bump - -* Sun May 27 2012 bump - 2.0-268 -- bump - -* Sat May 26 2012 bump - 2.0-267 -- bump - -* Sat May 26 2012 bump - 2.0-266 -- bump - -* Sat May 26 2012 bump - 2.0-265 -- bump - -* Fri May 25 2012 bump - 2.0-264 -- bump - -* Fri May 25 2012 bump - 2.0-263 -- bump - -* Fri May 25 2012 bump - 2.0-262 -- bump - -* Thu May 24 2012 bump - 2.0-261 -- bump - -* Wed May 23 2012 bump - 2.0-260 -- bump - -* Tue May 22 2012 bump - 2.0-259 -- bump - -* Mon May 21 2012 bump - 2.0-258 -- bump - -* Sun May 20 2012 bump - 2.0-257 -- bump - -* Sat May 19 2012 bump - 2.0-256 -- bump - -* Fri May 18 2012 bump - 2.0-255 -- bump - -* Thu May 17 2012 bump - 2.0-254 -- bump - -* Wed May 16 2012 bump - 2.0-253 -- bump - -* Tue May 15 2012 bump - 2.0-252 -- bump - -* Mon May 14 2012 bump - 2.0-251 -- bump - -* Mon May 14 2012 bump - 2.0-250 -- bump - -* Sun May 13 2012 bump - 2.0-249 -- bump - -* Sat May 12 2012 bump - 2.0-248 -- bump - -* Fri May 11 2012 bump - 2.0-247 -- bump - -* Thu May 10 2012 bump - 2.0-246 -- bump - -* Wed May 09 2012 bump - 2.0-245 -- bump - -* Tue May 08 2012 bump - 2.0-244 -- bump - -* Mon May 07 2012 bump - 2.0-243 -- bump - -* Sun May 06 2012 bump - 2.0-242 -- bump - -* Sat May 05 2012 bump - 2.0-241 -- bump - -* Fri May 04 2012 bump - 2.0-240 -- bump - -* Thu May 03 2012 bump - 2.0-239 -- bump - -* Wed May 02 2012 bump - 2.0-238 -- bump - -* Tue May 01 2012 bump - 2.0-237 -- bump - -* Mon Apr 30 2012 bump - 2.0-236 -- bump - -* Sun Apr 29 2012 bump - 2.0-235 -- bump - -* Sat Apr 28 2012 bump - 2.0-234 -- bump - -* Fri Apr 27 2012 bump - 2.0-233 -- bump - -* Thu Apr 26 2012 bump - 2.0-232 -- bump - -* Wed Apr 25 2012 bump - 2.0-231 -- bump - -* Tue Apr 24 2012 bump - 2.0-230 -- bump - -* Mon Apr 23 2012 bump - 2.0-229 -- bump - -* Sun Apr 22 2012 bump - 2.0-228 -- bump - -* Sat Apr 21 2012 bump - 2.0-227 -- bump - -* Fri Apr 20 2012 bump - 2.0-226 -- bump - -* Thu Apr 19 2012 bump - 2.0-225 -- bump - -* Wed Apr 18 2012 bump - 2.0-224 -- bump - -* Tue Apr 17 2012 bump - 2.0-223 -- bump - -* Mon Apr 16 2012 bump - 2.0-222 -- bump - -* Sun Apr 15 2012 bump - 2.0-221 -- bump - -* Sat Apr 14 2012 bump - 2.0-220 -- bump - -* Sat Apr 14 2012 bump - 2.0-219 -- bump - -* Fri Apr 13 2012 bump - 2.0-218 -- bump - -* Thu Apr 12 2012 bump - 2.0-217 -- bump - -* Wed Apr 11 2012 bump - 2.0-216 -- bump - -* Tue Apr 10 2012 bump - 2.0-215 -- bump - -* Mon Apr 09 2012 bump - 2.0-214 -- bump - -* Sun Apr 08 2012 bump - 2.0-213 -- bump - -* Sat Apr 07 2012 bump - 2.0-212 -- bump - -* Fri Apr 06 2012 bump - 2.0-211 -- bump - -* Thu Apr 05 2012 bump - 2.0-210 -- bump - -* Wed Apr 04 2012 bump - 2.0-209 -- bump - -* Tue Apr 03 2012 bump - 2.0-208 -- bump - -* Mon Apr 02 2012 bump - 2.0-207 -- bump - -* Sun Apr 01 2012 bump - 2.0-206 -- bump - -* Sat Mar 31 2012 bump - 2.0-205 -- bump - -* Fri Mar 30 2012 bump - 2.0-204 -- bump - -* Thu Mar 29 2012 bump - 2.0-203 -- bump - -* Wed Mar 28 2012 bump - 2.0-202 -- bump - -* Tue Mar 27 2012 bump - 2.0-201 -- bump - -* Mon Mar 26 2012 bump - 2.0-200 -- bump - -* Sun Mar 25 2012 bump - 2.0-199 -- bump - -* Sat Mar 24 2012 bump - 2.0-198 -- bump - -* Fri Mar 23 2012 bump - 2.0-197 -- bump - -* Thu Mar 22 2012 bump - 2.0-196 -- bump - -* Wed Mar 21 2012 bump - 2.0-195 -- bump - -* Tue Mar 20 2012 bump - 2.0-194 -- bump - -* Mon Mar 19 2012 bump - 2.0-193 -- bump - -* Sun Mar 18 2012 bump - 2.0-192 -- bump - -* Sat Mar 17 2012 bump - 2.0-191 -- bump - -* Fri Mar 16 2012 bump - 2.0-190 -- bump - -* Thu Mar 15 2012 bump - 2.0-189 -- bump - -* Wed Mar 14 2012 bump - 2.0-188 -- bump - -* Tue Mar 13 2012 bump - 2.0-187 -- bump - -* Mon Mar 12 2012 bump - 2.0-186 -- bump - -* Sun Mar 11 2012 bump - 2.0-185 -- bump - -* Sat Mar 10 2012 bump - 2.0-184 -- bump - -* Fri Mar 09 2012 bump - 2.0-183 -- bump - -* Thu Mar 08 2012 bump - 2.0-182 -- bump - -* Wed Mar 07 2012 bump - 2.0-181 -- bump - -* Tue Mar 06 2012 bump - 2.0-180 -- bump - -* Mon Mar 05 2012 bump - 2.0-179 -- bump - -* Sun Mar 04 2012 bump - 2.0-178 -- bump - -* Sat Mar 03 2012 bump - 2.0-177 -- bump - -* Fri Mar 02 2012 bump - 2.0-176 -- bump - -* Thu Mar 01 2012 bump - 2.0-175 -- bump - -* Wed Feb 29 2012 bump - 2.0-174 -- bump - -* Tue Feb 28 2012 bump - 2.0-173 -- bump - -* Mon Feb 27 2012 bump - 2.0-172 -- bump - -* Sun Feb 26 2012 bump - 2.0-171 -- bump - -* Sun Feb 26 2012 bump - 2.0-170 -- bump - -* Sun Feb 26 2012 bump - 2.0-169 -- bump - -* Sun Feb 26 2012 bump - 2.0-168 -- bump - -* Sun Feb 26 2012 bump - 2.0-167 -- bump - -* Sat Feb 25 2012 bump - 2.0-166 -- bump - -* Sat Feb 25 2012 bump - 2.0-165 -- bump - -* Sat Feb 25 2012 bump - 2.0-164 -- bump - -* Fri Feb 24 2012 bump - 2.0-163 -- bump - -* Thu Feb 23 2012 bump - 2.0-162 -- bump - -* Wed Feb 22 2012 bump - 2.0-161 -- bump - -* Tue Feb 21 2012 bump - 2.0-160 -- bump - -* Mon Feb 20 2012 bump - 2.0-159 -- bump - -* Sun Feb 19 2012 bump - 2.0-158 -- bump - -* Sat Feb 18 2012 bump - 2.0-157 -- bump - -* Fri Feb 17 2012 bump - 2.0-156 -- bump - -* Thu Feb 16 2012 bump - 2.0-155 -- bump - -* Thu Feb 16 2012 bump - 2.0-154 -- bump - -* Thu Feb 16 2012 bump - 2.0-153 -- bump - -* Wed Feb 15 2012 bump - 2.0-152 -- bump - -* Tue Feb 14 2012 bump - 2.0-151 -- bump - -* Mon Feb 13 2012 bump - 2.0-150 -- bump - -* Sun Feb 12 2012 bump - 2.0-149 -- bump - -* Sat Feb 11 2012 bump - 2.0-148 -- bump - -* Fri Feb 10 2012 bump - 2.0-147 -- bump - -* Thu Feb 09 2012 bump - 2.0-146 -- bump - -* Wed Feb 08 2012 bump - 2.0-145 -- bump - -* Tue Feb 07 2012 bump - 2.0-144 -- bump - -* Mon Feb 06 2012 bump - 2.0-143 -- bump - -* Sun Feb 05 2012 bump - 2.0-142 -- bump - -* Sat Feb 04 2012 bump - 2.0-141 -- bump - -* Fri Feb 03 2012 bump - 2.0-140 -- bump - -* Thu Feb 02 2012 bump - 2.0-139 -- bump - -* Wed Feb 01 2012 bump - 2.0-138 -- bump - -* Tue Jan 31 2012 bump - 2.0-137 -- bump - -* Mon Jan 30 2012 bump - 2.0-136 -- bump - -* Sun Jan 29 2012 bump - 2.0-135 -- bump - -* Sat Jan 28 2012 bump - 2.0-134 -- bump - -* Fri Jan 27 2012 bump - 2.0-133 -- bump - -* Thu Jan 26 2012 bump - 2.0-132 -- bump - -* Wed Jan 25 2012 bump - 2.0-131 -- bump - -* Tue Jan 24 2012 bump - 2.0-130 -- bump - -* Tue Jan 24 2012 bump - 2.0-129 -- bump - -* Tue Jan 24 2012 bump - 2.0-128 -- bump - -* Mon Jan 23 2012 bump - 2.0-127 -- bump - -* Sun Jan 22 2012 bump - 2.0-126 -- bump - -* Sat Jan 21 2012 bump - 2.0-125 -- bump - -* Fri Jan 20 2012 bump - 2.0-124 -- bump - -* Fri Jan 20 2012 bump - 2.0-123 -- bump - -* Fri Jan 20 2012 bump - 2.0-122 -- bump - -* Thu Jan 19 2012 bump - 2.0-121 -- bump - -* Wed Jan 18 2012 bump - 2.0-120 -- bump - -* Wed Jan 18 2012 bump - 2.0-119 -- bump - -* Tue Jan 17 2012 bump - 2.0-118 -- bump - -* Mon Jan 16 2012 bump - 2.0-117 -- bump - -* Sun Jan 15 2012 bump - 2.0-116 -- bump - -* Sat Jan 14 2012 bump - 2.0-115 -- bump - -* Fri Jan 13 2012 bump - 2.0-114 -- bump - -* Thu Jan 12 2012 bump - 2.0-113 -- bump - -* Wed Jan 11 2012 bump - 2.0-112 -- bump - -* Tue Jan 10 2012 bump - 2.0-111 -- bump - -* Mon Jan 09 2012 bump - 2.0-110 -- bump - -* Sun Jan 08 2012 bump - 2.0-109 -- bump - -* Sat Jan 07 2012 bump - 2.0-108 -- bump - -* Fri Jan 06 2012 bump - 2.0-107 -- bump - -* Fri Jan 06 2012 bump - 2.0-106 -- bump - -* Fri Jan 06 2012 bump - 2.0-105 -- bump - -* Thu Jan 05 2012 bump - 2.0-104 -- bump - -* Wed Jan 04 2012 bump - 2.0-103 -- bump - -* Tue Jan 03 2012 bump - 2.0-102 -- bump - -* Mon Jan 02 2012 bump - 2.0-101 -- bump - -* Sun Jan 01 2012 bump - 2.0-100 -- bump - -* Sat Dec 31 2011 bump - 2.0-99 -- bump - -* Fri Dec 30 2011 bump - 2.0-98 -- bump - -* Thu Dec 29 2011 bump - 2.0-97 -- bump - -* Wed Dec 28 2011 bump - 2.0-96 -- bump - -* Tue Dec 27 2011 bump - 2.0-95 -- bump - -* Mon Dec 26 2011 bump - 2.0-94 -- bump - -* Sun Dec 25 2011 bump - 2.0-93 -- bump - -* Sun Dec 25 2011 bump - 2.0-92 -- bump - -* Sun Dec 25 2011 bump - 2.0-91 -- bump - -* Sun Dec 25 2011 bump - 2.0-90 -- bump - -* Sat Dec 24 2011 bump - 2.0-89 -- bump - -* Fri Dec 23 2011 bump - 2.0-88 -- bump - -* Thu Dec 22 2011 bump - 2.0-87 -- bump - -* Wed Dec 21 2011 bump - 2.0-86 -- bump - -* Wed Dec 21 2011 bump - 2.0-85 -- bump - -* Wed Dec 21 2011 bump - 2.0-84 -- bump - -* Wed Dec 21 2011 bump - 2.0-83 -- bump - -* Tue Dec 20 2011 bump - 2.0-82 -- bump - -* Tue Dec 20 2011 bump - 2.0-81 -- bump - -* Tue Dec 20 2011 bump - 2.0-80 -- bump - -* Mon Dec 19 2011 bump - 2.0-79 -- bump - -* Sun Dec 18 2011 bump - 2.0-78 -- bump - -* Sat Dec 17 2011 bump - 2.0-77 -- bump - -* Fri Dec 16 2011 bump - 2.0-76 -- bump - -* Thu Dec 15 2011 bump - 2.0-75 -- bump - -* Tue Dec 13 2011 bump - 2.0-74 -- bump - -* Mon Dec 12 2011 bump - 2.0-73 -- bump - -* Mon Dec 12 2011 bump - 2.0-72 -- bump - -* Sun Dec 11 2011 bump - 2.0-71 -- bump - -* Sat Dec 10 2011 bump - 2.0-70 -- bump - -* Fri Dec 09 2011 bump - 2.0-69 -- bump - -* Thu Dec 08 2011 bump - 2.0-68 -- bump - -* Wed Dec 07 2011 bump - 2.0-67 -- bump - -* Wed Dec 07 2011 bump - 2.0-66 -- bump - -* Mon Dec 05 2011 bump - 2.0-65 -- bump - -* Mon Dec 05 2011 bump - 2.0-64 -- bump - -* Sun Dec 04 2011 bump - 2.0-63 -- bump - -* Sat Dec 03 2011 bump - 2.0-62 -- bump - -* Sat Dec 03 2011 bump - 2.0-61 -- bump - -* Fri Dec 02 2011 bump - 2.0-60 -- bump - -* Thu Dec 01 2011 bump - 2.0-59 -- bump - -* Wed Nov 30 2011 bump - 2.0-58 -- bump - -* Tue Nov 29 2011 bump - 2.0-57 -- bump - -* Mon Nov 28 2011 bump - 2.0-56 -- bump - -* Sun Nov 27 2011 bump - 2.0-55 -- bump - -* Sat Nov 26 2011 bump - 2.0-54 -- bump - -* Fri Nov 25 2011 bump - 2.0-53 -- bump - -* Thu Nov 24 2011 bump - 2.0-52 -- bump - -* Wed Nov 23 2011 bump - 2.0-51 -- bump - -* Tue Nov 22 2011 bump - 2.0-50 -- bump - -* Mon Nov 21 2011 bump - 2.0-49 -- bump - -* Sun Nov 20 2011 bump - 2.0-48 -- bump - -* Sat Nov 19 2011 bump - 2.0-47 -- bump - -* Fri Nov 18 2011 bump - 2.0-46 -- bump - -* Thu Nov 17 2011 bump - 2.0-45 -- bump - -* Wed Nov 16 2011 bump - 2.0-44 -- bump - -* Tue Nov 15 2011 bump - 2.0-43 -- bump - -* Tue Nov 15 2011 bump - 2.0-42 -- bump - -* Tue Nov 15 2011 bump - 2.0-41 -- bump - -* Mon Nov 14 2011 bump - 2.0-40 -- bump - -* Mon Nov 14 2011 bump - 2.0-39 -- bump - -* Mon Nov 14 2011 bump - 2.0-38 -- bump - -* Mon Nov 14 2011 bump - 2.0-37 -- bump - -* Mon Nov 14 2011 bump - 2.0-36 -- bump - -* Sun Nov 13 2011 bump - 2.0-35 -- bump - -* Sun Nov 13 2011 bump - 2.0-34 -- bump - -* Sun Nov 13 2011 bump - 2.0-33 -- bump - -* Sun Nov 13 2011 bump - 2.0-32 -- bump - -* Sat Nov 12 2011 bump - 2.0-31 -- bump - -* Sat Nov 12 2011 bump - 2.0-30 -- bump - -* Fri Nov 11 2011 bump - 2.0-29 -- bump - -* Thu Nov 10 2011 bump - 2.0-28 -- bump - -* Wed Nov 09 2011 bump - 2.0-27 -- bump - -* Tue Nov 08 2011 bump - 2.0-26 -- bump - -* Mon Nov 07 2011 bump - 2.0-25 -- bump - -* Sun Nov 06 2011 bump - 2.0-24 -- bump - -* Sat Nov 05 2011 bump - 2.0-23 -- bump - -* Sat Nov 05 2011 bump - 2.0-22 -- bump - -* Sat Nov 05 2011 bump - 2.0-21 -- bump - -* Fri Nov 04 2011 bump - 2.0-20 -- bump - -* Thu Nov 03 2011 bump - 2.0-19 -- bump - -* Thu Nov 03 2011 bump - 2.0-18 -- bump - -* Wed Nov 02 2011 bump - 2.0-17 -- bump - -* Wed Nov 02 2011 bump - 2.0-16 -- bump - -* Wed Nov 02 2011 bump - 2.0-15 -- bump - -* Wed Nov 02 2011 bump - 2.0-14 -- bump - -* Tue Nov 01 2011 bump - 2.0-13 -- bump - -* Tue Nov 01 2011 bump - 2.0-12 -- bump - -* Tue Nov 01 2011 bump - 2.0-11 -- bump +* Nov 30 2012 Jan Kaluza - 2.0 +- Work in progress * Mon Jul 25 2011 Jan Kaluza - 1.0-4 - rebuild for new boost From a0595550b30af0e94d28df7d334f70a619bd9480 Mon Sep 17 00:00:00 2001 From: Daniel Henninger Date: Fri, 30 Nov 2012 11:01:00 -0500 Subject: [PATCH 12/12] Moved packaging stuff into fedora subdir. --- packaging/{ => fedora}/spectrum2.init | 0 packaging/{ => fedora}/spectrum2.spec | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packaging/{ => fedora}/spectrum2.init (100%) rename packaging/{ => fedora}/spectrum2.spec (99%) diff --git a/packaging/spectrum2.init b/packaging/fedora/spectrum2.init similarity index 100% rename from packaging/spectrum2.init rename to packaging/fedora/spectrum2.init diff --git a/packaging/spectrum2.spec b/packaging/fedora/spectrum2.spec similarity index 99% rename from packaging/spectrum2.spec rename to packaging/fedora/spectrum2.spec index dd1c4560..57be3e97 100644 --- a/packaging/spectrum2.spec +++ b/packaging/fedora/spectrum2.spec @@ -52,7 +52,7 @@ make VERBOSE=1 %{?_smp_mflags} rm -rf %{buildroot} make install DESTDIR=%{buildroot} install -d %{buildroot}%{_localstatedir}/{lib,run,log}/spectrum2 -install -p -D -m 755 packaging/spectrum2.init \ +install -p -D -m 755 packaging/fedora/spectrum2.init \ %{buildroot}%{_initddir}/spectrum2 ln -s /usr/bin/spectrum2_libpurple_backend %{buildroot}/usr/bin/spectrum_libpurple_backend