diff --git a/.gitignore b/.gitignore index b916051..e2612c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ /units-*.tar.gz -/units-*.tar.gz.sig -/units-*/ diff --git a/0001-units-2.14-units_cur-default-path.patch b/0001-units-2.14-units_cur-default-path.patch new file mode 100644 index 0000000..8581dbc --- /dev/null +++ b/0001-units-2.14-units_cur-default-path.patch @@ -0,0 +1,25 @@ +From d300ba3e84ab76f9c0977ab5219072ca2350b055 Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Mon, 4 Dec 2017 12:03:01 +0100 +Subject: [PATCH] units_cur: replace default path properly + +--- + Makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 1a74852..46e2bb7 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -128,7 +128,7 @@ units_cur3: units_cur2 + rm -rf python3_tempdir + + units_cur_inst: units_cur +- sed -e "s@outfile = 'currency.units'@outfile='@UDAT@currency.units'@"\ ++ sed -e "s@outfile_name = 'currency.units'@outfile_name='@UDAT@currency.units'@"\ + -e "s@/usr/bin/python@$(PYTHON)@" \ + units_cur > units_cur_inst + +-- +2.13.6 + diff --git a/0002-units-2.15-units_cur.patch b/0002-units-2.15-units_cur.patch new file mode 100644 index 0000000..cd023ef --- /dev/null +++ b/0002-units-2.15-units_cur.patch @@ -0,0 +1,159 @@ +From 32b280b54c0c02e2ab9c41b017363ce3c2dd855d Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Mon, 28 May 2018 14:52:21 +0200 +Subject: [PATCH 1/2] update units_cur script from units-2.16 + +--- + units_cur2 | 28 ++++++++++++++++++++++------ + 1 file changed, 22 insertions(+), 6 deletions(-) + +diff --git a/units_cur2 b/units_cur2 +index ec5872a..5541355 100755 +--- a/units_cur2 ++++ b/units_cur2 +@@ -1,5 +1,16 @@ + #!/usr/bin/python + # ++# For Python 2 & 3 compatibility ++from __future__ import absolute_import, division, print_function ++# ++# ++ ++version = '4.1' ++ ++# 30 October 2017 ++# ++# Fixed to include USD in the list of currency codes. ++# + # Version 4 + # 2 October 2017 + # +@@ -7,9 +18,6 @@ + # Switched to requests library using JSON. One program now runs under + # Python 2 or Python 3. Thanks to Ray Hamel for some help with this update. + +-# For Python 2 & 3 compatibility +-from __future__ import absolute_import, division, print_function +- + # Normal imports + import requests + import codecs +@@ -21,9 +29,10 @@ from sys import exit, stderr, stdout + + outfile_name = 'currency.units' + +-# The Yahoo API is excellent, but unfortunately requires we explicitly request +-# each currency we want +-# ++# This exchange rate table lists the currency ISO 4217 codes, their ++# long text names, and any fixed definitions. If the definition is ++# empty then units_cur will query the server for a value. ++ + currency = OrderedDict([ + ('ATS', ['austriaschilling', '1|13.7603 euro']), + ('BEF', ['belgiumfranc', '1|40.3399 euro']), +@@ -192,6 +201,7 @@ currency = OrderedDict([ + ('TZS', ['tanzaniashilling','']), + ('UAH', ['ukrainehryvnia','']), + ('UGX', ['ugandaschilling','']), ++ ('USD', ['unitedstatesdollar', 'US$']), + ('UYU', ['uruguaypeso','']), + ('UZS', ['uzbekistansum','']), + ('VEF', ['venezuelabolivar','']), +@@ -224,6 +234,12 @@ ap.add_argument( + type=str, + ) + ++ap.add_argument('-V','--version', ++ action='version', ++ version='%(prog)s version ' + version, ++ help='display units_cur version', ++) ++ + ap.add_argument('-v','--verbose', + action='store_true', + help='display details when fetching currency data', +-- +2.14.3 + + +From 4e59d86aa34fa8ef95ef1f81e2720670735c910d Mon Sep 17 00:00:00 2001 +From: Kamil Dudka +Date: Mon, 28 May 2018 14:21:35 +0200 +Subject: [PATCH 2/2] Resolves: #1574835 - make units_cur work again + +--- + units_cur2 | 44 ++++++++++++++++++++++++++------------------ + 1 file changed, 26 insertions(+), 18 deletions(-) + +diff --git a/units_cur2 b/units_cur2 +index 5541355..d00c12c 100755 +--- a/units_cur2 ++++ b/units_cur2 +@@ -5,14 +5,17 @@ from __future__ import absolute_import, division, print_function + # + # + +-version = '4.1' ++version = '4.2' + +-# 30 October 2017 ++# Version 4.2: 18 April 2018 ++# ++# Handle case of empty/malformed entry returned from the server ++# ++# Version 4.1: 30 October 2017 + # + # Fixed to include USD in the list of currency codes. + # +-# Version 4 +-# 2 October 2017 ++# Version 4: 2 October 2017 + # + # Complete rewrite to use Yahoo YQL API due to removal of TimeGenie RSS feed. + # Switched to requests library using JSON. One program now runs under +@@ -258,22 +261,27 @@ except requests.exceptions.RequestException as e: + format(e)) + exit(1) + +-rates = [ data['resource']['fields']['price'] for data in webdata] +-codes = [ data['resource']['fields']['symbol'][0:3] for data in webdata] + + rate_index = 1 +- +-for (code,rate) in zip(codes,rates): +- if code not in currency.keys(): +- if (verbose): +- stderr.write('Got unknown currency with code {}\n'.format(code)) +- else: +- if not currency[code][rate_index]: +- currency[code][rate_index] = '1|{} US$'.format(rate) +- elif verbose: +- stderr.write('Got value "{}" for currency "{}" but ' +- 'it is already defined\n'.format(rate, code)) +- ++for data in webdata: ++ entry = data['resource']['fields'] ++ if 'price' not in entry or 'symbol' not in entry: # Skip empty/bad entries ++ if verbose: ++ stderr.write('Got bad entry from server: '+str(entry)+'\n') ++ else: ++ rate = entry['price'] ++ code = entry['symbol'][0:3] ++ if code not in currency.keys(): ++ if (verbose): ++ stderr.write('Got unknown currency with code {}\n'.format(code)) ++ else: ++ if not currency[code][rate_index]: ++ currency[code][rate_index] = '1|{} US$'.format(rate) ++ elif verbose: ++ stderr.write('Got value "{}" for currency "{}" but ' ++ 'it is already defined\n'.format(rate, code)) ++ ++ + # Delete currencies where we have no rate data + for code in currency.keys(): + if not currency[code][rate_index]: +-- +2.14.3 + diff --git a/0100-units-2.22-no-network.patch b/0100-units-2.22-no-network.patch deleted file mode 100644 index 6c85a81..0000000 --- a/0100-units-2.22-no-network.patch +++ /dev/null @@ -1,26 +0,0 @@ -From f18e95585de3d6f94c3b64af7bcc8793063223d3 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Wed, 8 Aug 2018 18:08:34 +0200 -Subject: [PATCH] Makefile.in: do not update currency.units from network - -Builds of packages are supposed to be reproducible. ---- - Makefile.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Makefile.in b/Makefile.in -index 79baf1d..2b71aeb 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -266,7 +266,7 @@ units.txt: units.1 - - doc: units.dvi units.info units.txt units.pdf UnitsMKS.pdf UnitsWin.pdf - --check: all currency-update-check -+check: all - @echo Checking units - @./units -f $(srcdir)/definitions.units \ - '(((square(kiloinch)+2.84m2) /0.5) meters^2)^(1|4)' m \ --- -2.37.2 - diff --git a/0101-fix-make-less-default-pager.patch b/0101-fix-make-less-default-pager.patch deleted file mode 100644 index 6f2599f..0000000 --- a/0101-fix-make-less-default-pager.patch +++ /dev/null @@ -1,26 +0,0 @@ -From f9e58208af29f62cec46a583039110876fbd5f3e Mon Sep 17 00:00:00 2001 -From: Jan Macku -Date: Mon, 2 Mar 2026 10:23:17 +0100 -Subject: [PATCH] fix: make less default pager - -Resolves: #2268395 ---- - units.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/units.c b/units.c -index 2bc1a02..fd138c5 100644 ---- a/units.c -+++ b/units.c -@@ -137,7 +137,7 @@ under the terms of the GNU General Public License." - #ifdef _WIN32 - # define DEFAULTPAGER "more" /* Default pager for Windows */ - #else --# define DEFAULTPAGER "/usr/bin/pager" /* Default pager for Unix */ -+# define DEFAULTPAGER "/usr/bin/less" /* Default pager for Unix */ - #endif - #define DEFAULTLOCALE "en_US" /* Default locale */ - #define MAXINCLUDE 5 /* Max depth of include files */ --- -2.53.0 - diff --git a/sources b/sources index c90157e..0182943 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (units-2.27.tar.gz.sig) = 6696986c3f40bdbef7a1a761c5314b6cce836c862aaae5926ab40da9516e5bf1d37293bcfc82bd01b92d54125b35d8e426d1b4368c7afef938b4ebf1c3723ee2 -SHA512 (units-2.27.tar.gz) = 432633abb10c68910d658e7ce50b23c26100566c2e9fc377e963f0d86d60b5366e12519c33b947805d447b7cbbb891578a8e1f7f2120aa8f95c3e9fbab60e881 +SHA512 (units-2.14.tar.gz) = 3cd09a76fb1cccbafaa3e023c791740738c8347425b2645cad1fa768dee3ebde917602cf65988ee8922fed512ec0bc2367f68545450789fc6bf1a79f066a6986 diff --git a/units-2.14.tar.gz.sig b/units-2.14.tar.gz.sig new file mode 100644 index 0000000..5892a0e Binary files /dev/null and b/units-2.14.tar.gz.sig differ diff --git a/units-2.15-units_cur b/units-2.15-units_cur new file mode 100644 index 0000000..ec5872a --- /dev/null +++ b/units-2.15-units_cur @@ -0,0 +1,336 @@ +#!/usr/bin/python +# +# Version 4 +# 2 October 2017 +# +# Complete rewrite to use Yahoo YQL API due to removal of TimeGenie RSS feed. +# Switched to requests library using JSON. One program now runs under +# Python 2 or Python 3. Thanks to Ray Hamel for some help with this update. + +# For Python 2 & 3 compatibility +from __future__ import absolute_import, division, print_function + +# Normal imports +import requests +import codecs +from argparse import ArgumentParser +from collections import OrderedDict +from datetime import date +from os import linesep +from sys import exit, stderr, stdout + +outfile_name = 'currency.units' + +# The Yahoo API is excellent, but unfortunately requires we explicitly request +# each currency we want +# +currency = OrderedDict([ + ('ATS', ['austriaschilling', '1|13.7603 euro']), + ('BEF', ['belgiumfranc', '1|40.3399 euro']), + ('CYP', ['cypruspound', '1|0.585274 euro']), + ('EEK', ['estoniakroon', '1|15.6466 euro # Equal to 1|8 germanymark']), + ('FIM', ['finlandmarkka', '1|5.94573 euro']), + ('FRF', ['francefranc', '1|6.55957 euro']), + ('DEM', ['germanymark', '1|1.95583 euro']), + ('GRD', ['greecedrachma', '1|340.75 euro']), + ('IEP', ['irelandpunt', '1|0.787564 euro']), + ('ITL', ['italylira', '1|1936.27 euro']), + ('LVL', ['latvialats', '1|0.702804 euro']), + ('LTL', ['lithuanialitas', '1|3.4528 euro']), + ('LUF', ['luxembourgfranc', '1|40.3399 euro']), + ('MTL', ['maltalira', '1|0.4293 euro']), + ('SKK', ['slovakiakornua', '1|30.1260 euro']), + ('SIT', ['sloveniatolar', '1|239.640 euro']), + ('ESP', ['spainpeseta', '1|166.386 euro']), + ('NLG', ['netherlandsguilder','1|2.20371 euro']), + ('PTE', ['portugalescudo', '1|200.482 euro']), + ('CVE', ['capeverdeescudo', '1|110.265 euro']), + ('BGN', ['bulgarialev', '1|1.9558 euro']), + ('BAM', ['bosniaconvertiblemark','germanymark']), + ('KMF', ['comorosfranc', '1|491.96775 euro']), + ('XOF', ['westafricanfranc', '1|655.957 euro']), + ('XPF', ['cfpfranc', '1|119.33 euro']), + ('XAF', ['centralafricancfafranc','1|655.957 euro']), + ('AED', ['uaedirham','']), + ('AFN', ['afghanafghani','']), + ('ALL', ['albanialek','']), + ('AMD', ['armeniadram','']), + ('AOA', ['angolakwanza','']), + ('ARS', ['argentinapeso','']), + ('AUD', ['australiadollar','']), + ('AWG', ['arubaflorin','']), + ('AZN', ['azerbaijanmanat','']), + ('BAM', ['bosniaconvertiblemark','']), + ('BBD', ['barbadosdollar','']), + ('BDT', ['bangladeshtaka','']), + ('BGN', ['bulgarialev','']), + ('BHD', ['bahraindinar','']), + ('BIF', ['burundifranc','']), + ('BMD', ['bermudadollar','']), + ('BND', ['bruneidollar','']), + ('BOB', ['boliviaboliviano','']), + ('BRL', ['brazilreal','']), + ('BSD', ['bahamasdollar','']), + ('BTN', ['bhutanngultrum','']), + ('BWP', ['botswanapula','']), + ('BYN', ['belarusruble','']), + ('BYR', ['oldbelarusruble','10000 BYN']), + ('BZD', ['belizedollar','']), + ('CAD', ['canadadollar','']), + ('CDF', ['drcfranccongolais','']), + ('CHF', ['swissfranc','']), + ('CLP', ['chilepeso','']), + ('CNY', ['chinayuan','']), + ('COP', ['colombiapeso','']), + ('CRC', ['costaricacolon','']), + ('CUP', ['cubapeso','']), + ('CVE', ['capeverdeescudo','']), + ('CZK', ['czechkoruna','']), + ('DJF', ['djiboutifranc','']), + ('DKK', ['denmarkkrona','']), + ('DOP', ['dominicanrepublicpeso','']), + ('DZD', ['algeriadinar','']), + ('EGP', ['egyptpound','']), + ('ERN', ['eritreanakfa','']), + ('ETB', ['ethiopianbirr','']), + ('EUR', ['euro','']), + ('FJD', ['fijidollar','']), + ('FKP', ['falklandislandspound','']), + ('GBP', ['ukpound','']), + ('GEL', ['georgialari','']), + ('GHS', ['ghanacedi','']), + ('GIP', ['gibraltarpound','']), + ('GMD', ['gambiadalasi','']), + ('GNF', ['guineafranc','']), + ('GTQ', ['guatemalaquetzal','']), + ('GYD', ['guyanadollar','']), + ('HKD', ['hongkongdollar','']), + ('HNL', ['honduraslempira','']), + ('HRK', ['croatiakuna','']), + ('HTG', ['haitigourde','']), + ('HUF', ['hungariaforint','']), + ('IDR', ['indonesiarupiah','']), + ('ILS', ['israelnewshekel','']), + ('INR', ['indiarupee','']), + ('IQD', ['iraqdinar','']), + ('IRR', ['iranrial','']), + ('ISK', ['icelandkrona','']), + ('JMD', ['jamaicadollar','']), + ('JOD', ['jordandinar','']), + ('JPY', ['japanyen','']), + ('KES', ['kenyaschilling','']), + ('KGS', ['kyrgyzstansom','']), + ('KHR', ['cambodiariel','']), + ('KMF', ['comorosfranc','']), + ('KPW', ['northkoreawon','']), + ('KRW', ['southkoreawon','']), + ('KWD', ['kuwaitdinar','']), + ('KYD', ['caymanislandsdollar','']), + ('KZT', ['kazakhstantenge','']), + ('LAK', ['laokip','']), + ('LBP', ['lebanonpound','']), + ('LKR', ['srilankanrupee','']), + ('LRD', ['liberiadollar','']), + ('LTL', ['lithuanialita','']), + ('LVL', ['latvialat','']), + ('LYD', ['libyadinar','']), + ('MAD', ['moroccodirham','']), + ('MDL', ['moldovaleu','']), + ('MGA', ['madagascarariary','']), + ('MKD', ['macedoniadenar','']), + ('MMK', ['myanmarkyat','']), + ('MNT', ['mongoliatugrik','']), + ('MOP', ['macaupataca','']), + ('MRO', ['mauritaniaouguiya','']), + ('MUR', ['mauritiusrupee','']), + ('MVR', ['maldiverufiyaa','']), + ('MWK', ['malawikwacha','']), + ('MXN', ['mexicopeso','']), + ('MYR', ['malaysiaringgit','']), + ('MZN', ['mozambicanmetical','']), + ('NAD', ['namibiadollar','']), + ('NGN', ['nigerianaira','']), + ('NIO', ['nicaraguacordobaoro','']), + ('NOK', ['norwaykrone','']), + ('NPR', ['nepalrupee','']), + ('NZD', ['newzealanddollar','']), + ('OMR', ['omanrial','']), + ('PAB', ['panamabalboa','']), + ('PEN', ['perunuevosol','']), + ('PGK', ['papuanewguineakina','']), + ('PHP', ['philippinepeso','']), + ('PKR', ['pakistanrupee','']), + ('PLN', ['polandzloty','']), + ('PYG', ['paraguayguarani','']), + ('QAR', ['qatarrial','']), + ('RON', ['romanianewlei','']), + ('RSD', ['serbiadinar','']), + ('RUB', ['russiaruble','']), + ('RWF', ['rwandafranc','']), + ('SAR', ['saudiarabiariyal','']), + ('SBD', ['solomonislandsdollar','']), + ('SCR', ['seychellesrupee','']), + ('SDG', ['sudanpound','']), + ('SEK', ['swedenkrona','']), + ('SGD', ['singaporedollar','']), + ('SHP', ['sainthelenapound','']), + ('SLL', ['sierraleoneleone','']), + ('SOS', ['somaliaschilling','']), + ('SRD', ['surinamedollar','']), + ('STD', ['saotome&principedobra','']), + ('SVC', ['elsalvadorcolon','']), + ('SYP', ['syriapound','']), + ('SZL', ['swazilandlilangeni','']), + ('THB', ['thailandbaht','']), + ('TJS', ['tajikistansomoni','']), + ('TMT', ['turkmenistanmanat','']), + ('TND', ['tunisiadinar','']), + ('TOP', ["tongapa'anga",'']), + ('TRY', ['turkeylira','']), + ('TTD', ['trinidadandtobagodollar','']), + ('TWD', ['taiwandollar','']), + ('TZS', ['tanzaniashilling','']), + ('UAH', ['ukrainehryvnia','']), + ('UGX', ['ugandaschilling','']), + ('UYU', ['uruguaypeso','']), + ('UZS', ['uzbekistansum','']), + ('VEF', ['venezuelabolivar','']), + ('VEB', ['venezuelaoldbolivar', '1000 VEF']), + ('VND', ['vietnamdong','']), + ('VUV', ['vanuatuvatu','']), + ('WST', ['samoatala','']), + ('XAF', ['centralafricancfafranc','']), + ('XCD', ['eastcaribbeandollar','']), + ('XDR', ['specialdrawingrights','']), + ('YER', ['yemenrial','']), + ('ZAR', ['southafricarand','']), + ('ZMW', ['zambiakwacha','']), + ('ZWL', ['zimbabwedollar','']), +]) + +ap = ArgumentParser( + description="Update currency information for 'units' " + "into the specified filename or if no filename is " + "given, the default: '{}'. The special filename '-' " + "will send the currency data to stdout.".format(outfile_name), +) + +ap.add_argument( + 'output_file', + default=outfile_name, + help='the file to update', + metavar='filename', + nargs='?', + type=str, +) + +ap.add_argument('-v','--verbose', + action='store_true', + help='display details when fetching currency data', +) + +outfile_name = ap.parse_args().output_file +verbose = ap.parse_args().verbose + +try: + res = requests.get('http://finance.yahoo.com/webservice/v1/symbols' + '/allcurrencies/quote?format=json') + res.raise_for_status() + webdata = res.json()['list']['resources'] +except requests.exceptions.RequestException as e: + stderr.write('Error connecting to currency server:\n{}.\n'. + format(e)) + exit(1) + +rates = [ data['resource']['fields']['price'] for data in webdata] +codes = [ data['resource']['fields']['symbol'][0:3] for data in webdata] + +rate_index = 1 + +for (code,rate) in zip(codes,rates): + if code not in currency.keys(): + if (verbose): + stderr.write('Got unknown currency with code {}\n'.format(code)) + else: + if not currency[code][rate_index]: + currency[code][rate_index] = '1|{} US$'.format(rate) + elif verbose: + stderr.write('Got value "{}" for currency "{}" but ' + 'it is already defined\n'.format(rate, code)) + +# Delete currencies where we have no rate data +for code in currency.keys(): + if not currency[code][rate_index]: + if verbose: + stderr.write('No data for {}'.format(code)) + del currency[code] + +try: + req = requests.get('http://services.packetizer.com/spotprices/?f=json') + req.raise_for_status() + metals = req.json() +except requests.exceptions.RequestException as e: + stderr.write('Error connecting to spotprices server:\n{}\n'.format(e)) + exit(1) + +del metals['date'] + +try: + req = requests.get('http://services.packetizer.com/btc/?f=json') + req.raise_for_status() + bitcoin = req.json() +except requests.exceptions.RequestException as e: + stderr.write('Error connecting to bitcoin server:\n{}\n'.format(e)) + exit(1) + +cnames = [currency[code][0] for code in currency.keys()] +crates = [currency[code][1] for code in currency.keys()] + +codestr = '\n'.join('{:23}{}'. + format(code, name) for (code,name) in zip(currency.keys(), cnames)) + +datestr = date.today().isoformat() + +maxlen = max(len(name) for name in cnames) + 2 + +ratestr = '\n'.join( + '{:{}}{}'.format(name, maxlen, rate) for (name, rate) in zip(cnames, crates) + ) + +ozzystr = '\n'.join('{:19}{} US$/troyounce'.format( + metal + 'price', + price, + ) for metal, price in metals.items()) + +bitcoinstr = '{:{}}{} US$ # From services.packetizer.com/btc\n'.format( + 'bitcoin',maxlen,bitcoin['usd']) + +outstr = ( +"""# ISO Currency Codes + +{codestr} + +# Currency exchange rates from Yahoo Finance (finance.yahoo.com) + +!message Currency exchange rates from finance.yahoo.com on {datestr} + +{ratestr} +{bitcoinstr} + +# Precious metals prices from Packetizer (services.packetizer.com/spotprices) + +{ozzystr} + +""".format(codestr=codestr, datestr=datestr, ratestr=ratestr, ozzystr=ozzystr, + bitcoinstr=bitcoinstr) +).replace('\n', linesep) + +try: + if outfile_name == '-': + codecs.StreamReader(stdout, codecs.getreader('utf8')).write(outstr) + else: + with codecs.open(outfile_name, 'w', 'utf8') as of: + of.write(outstr) +except IOError as e: + stderr.write('Unable to write to output file:\n{}\n'.format(e)) + exit(1) diff --git a/units.spec b/units.spec index 14f864d..d2205a3 100644 --- a/units.spec +++ b/units.spec @@ -1,27 +1,29 @@ Summary: A utility for converting amounts from one unit to another Name: units -Version: 2.27 -Release: 3%{?dist} +Version: 2.14 +Release: 6%{?dist} Source: https://ftp.gnu.org/gnu/units/%{name}-%{version}.tar.gz -Source1: units.tmpfiles.conf URL: https://www.gnu.org/software/units/units.html -License: GPL-3.0-or-later - -Requires: less - +License: GPLv3+ +Group: Applications/Engineering +Requires(post): /sbin/install-info +Requires(preun): /sbin/install-info BuildRequires: bison -BuildRequires: systemd-rpm-macros -BuildRequires: gcc -BuildRequires: make BuildRequires: ncurses-devel -BuildRequires: python3-devel +BuildRequires: python BuildRequires: readline-devel -# do not update currency.units from network during build -Patch100: 0100-units-2.22-no-network.patch +# used by the units_cur script +Requires: python-unidecode -# make less a default pager to avoid error about missing /usr/bin/pager -Patch101: 0101-fix-make-less-default-pager.patch +# units_cur script taken from units-2.15 +Source1: units-2.15-units_cur + +# units_cur: replace default path properly (#1520027) +Patch1: 0001-units-2.14-units_cur-default-path.patch + +# make units_cur work again (#1574835) +Patch2: 0002-units-2.15-units_cur.patch %description Units converts an amount from one unit to another, or tells you what @@ -30,200 +32,54 @@ another. The units program can handle multiplicative scale changes as well as conversions such as Fahrenheit to Celsius. %prep -%autosetup -p1 +%setup -q +%patch1 -p1 +install -p -m0755 %{SOURCE1} units_cur2 +%patch2 -p1 +touch units_cur3 %build -# Use C17 standard to avoid compilation errors -# We will revert this change once the upstream adopts the latest C standard -%configure CFLAGS="$RPM_OPT_FLAGS -std=c17" -%make_build +%configure +make %{?_smp_mflags} %install -%make_install +make install DESTDIR=$RPM_BUILD_ROOT -# Copy dynamic files to defaults directory as templates for tmpfiles.d -mkdir -p %{buildroot}%{_datadir}/units/defaults -for f in currency cpi metal_prices crypto; do - cp -p %{buildroot}%{_sharedstatedir}/units/${f}.units %{buildroot}%{_datadir}/units/defaults/ -done - -# Remove /var/lib/units from buildroot - now managed by tmpfiles.d -rm -rf %{buildroot}%{_sharedstatedir}/units - -# Replace absolute symlinks by relative symlinks -for f in currency cpi metal_prices crypto; do - ln -fsv ../../../var/lib/units/${f}.units %{buildroot}%{_datadir}/units/${f}.units -done - -# Install tmpfiles.d configuration for Image Mode support -install -m0644 -D %{SOURCE1} %{buildroot}%{_tmpfilesdir}/units.conf - -gzip %{buildroot}%{_infodir}/units.info +gzip $RPM_BUILD_ROOT%{_infodir}/units.info # provide a man page for units_cur as a symlink to units.1 ln -s units.1 %{buildroot}%{_mandir}/man1/units_cur.1 -%post -%tmpfiles_create units.conf - -%postun -if [ $1 -eq 0 ]; then - systemd-tmpfiles --purge %{_tmpfilesdir}/units.conf 2>/dev/null || : -fi - %check make check +%post +if [ -e %{_infodir}/units.info.gz ]; then + /sbin/install-info %{_infodir}/units.info.gz %{_infodir}/dir || : +fi + +%preun +if [ $1 = 0 -a -e %{_infodir}/units.info.gz ]; then + /sbin/install-info --delete %{_infodir}/units.info.gz %{_infodir}/dir || : +fi + %files -%doc COPYING NEWS README +%doc ChangeLog COPYING NEWS README %{_bindir}/units %{_bindir}/units_cur %{_datadir}/units -%{_tmpfilesdir}/units.conf %{_infodir}/* %{_mandir}/man1/* %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 2.27-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Tue Apr 21 2026 Jan Macku - 2.27-2 -- fix units compatibility with Image Mode - -* Wed Apr 08 2026 Jan Macku - 2.27-1 -- new upstream release - -* Mon Mar 02 2026 Jan Macku - 2.26-1 -- new upstream release - -* Mon Jan 19 2026 Jan Macku - 2.25-1 -- new upstream release - -* Sat Jan 17 2026 Fedora Release Engineering - 2.24-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 2.24-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Thu Feb 20 2025 Jan Macku - 2.24-3 -- Use C17 standard to avoid compilation errors (#2341484) - -* Sun Jan 19 2025 Fedora Release Engineering - 2.24-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Fri Nov 29 2024 Jan Macku - 2.24-1 -- new upstream release - -* Sat Jul 20 2024 Fedora Release Engineering - 2.23-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Thu Apr 11 2024 Jan Macku - 2.23-2 -- fix make less the default pager (#2268395) - -* Mon Feb 19 2024 Jan Macku - 2.23-1 -- new upstream release - -* Sat Jan 27 2024 Fedora Release Engineering - 2.22-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Nov 30 2023 Florian Weimer - 2.22-7 -- C compatibility fix for the configure script (#2252276) - -* Sat Jul 22 2023 Fedora Release Engineering - 2.22-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Thu Apr 13 2023 Lukáš Zaoral - 2.22-5 -- migrate to SPDX license format - -* Sat Jan 21 2023 Fedora Release Engineering - 2.22-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Tue Sep 06 2022 Kamil Dudka - 2.22-3 -- remove a build system tweak related to Python 3 no longer needed - -* Tue Sep 06 2022 Kamil Dudka - 2.22-2 -- replace an absolute symlink by a relative symlink -- use %%make_build and %%make_install RPM macros - -* Tue Sep 06 2022 Kamil Dudka - 2.22-1 -- new upstream release - -* Sat Jul 23 2022 Fedora Release Engineering - 2.21-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 2.21-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 2.21-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Wed Jan 27 2021 Fedora Release Engineering - 2.21-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Mon Nov 16 2020 Kamil Dudka - 2.21-1 -- new upstream release - -* Thu Oct 01 2020 Kamil Dudka - 2.20-1 -- new upstream release - -* Sat Aug 01 2020 Fedora Release Engineering - 2.19-5 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 2.19-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jan 31 2020 Fedora Release Engineering - 2.19-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Sat Jul 27 2019 Fedora Release Engineering - 2.19-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Jun 01 2019 Kamil Dudka - 2.19-1 -- new upstream release - -* Sun Feb 17 2019 Igor Gnatenko - 2.18-3 -- Rebuild for readline 8.0 - -* Sun Feb 03 2019 Fedora Release Engineering - 2.18-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Mon Oct 29 2018 Kamil Dudka - 2.18-1 -- new upstream release - -* Wed Aug 08 2018 Kamil Dudka - 2.17-5 -- do not update currency.units from network during build -- units_cur: validate rate data from server (#1598913) - -* Sat Jul 14 2018 Fedora Release Engineering - 2.17-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Wed Jul 04 2018 Kamil Dudka - 2.17-3 -- use %%{__python3} as the python interpreter - -* Wed Jun 27 2018 Kamil Dudka - 2.17-2 -- drop the dependency on python3-unidecode no longer used by units_cur - -* Tue Jun 26 2018 Kamil Dudka - 2.17-1 -- new upstream release - -* Mon May 28 2018 Kamil Dudka - 2.16-5 +* Mon May 25 2018 Kamil Dudka - 2.14-6 - make units_cur work again (#1574835) -* Mon Feb 19 2018 Kamil Dudka - 2.16-4 -- add explicit BR for the gcc compiler +* Mon Dec 04 2017 Kamil Dudka - 2.14-5 +- units_cur: replace default path properly (#1520027) -* Fri Feb 09 2018 Fedora Release Engineering - 2.16-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Feb 05 2018 Kamil Dudka - 2.16-2 -- make units_cur use Python 3 - -* Wed Nov 01 2017 Kamil Dudka - 2.16-1 -- new upstream release - -* Tue Oct 31 2017 Kamil Dudka - 2.15-1 -- new upstream release +* Tue Oct 31 2017 Kamil Dudka - 2.14-4 +- update units_cur script from units-2.15 (#1507782) * Thu Aug 03 2017 Fedora Release Engineering - 2.14-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild diff --git a/units.tmpfiles.conf b/units.tmpfiles.conf deleted file mode 100644 index f32b17a..0000000 --- a/units.tmpfiles.conf +++ /dev/null @@ -1,5 +0,0 @@ -d /var/lib/units 0755 root root - - -C /var/lib/units/currency.units 0644 root root - /usr/share/units/defaults/currency.units -C /var/lib/units/cpi.units 0644 root root - /usr/share/units/defaults/cpi.units -C /var/lib/units/metal_prices.units 0644 root root - /usr/share/units/defaults/metal_prices.units -C /var/lib/units/crypto.units 0644 root root - /usr/share/units/defaults/crypto.units