diff --git a/.gitignore b/.gitignore index e2612c2..b916051 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /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 deleted file mode 100644 index 8581dbc..0000000 --- a/0001-units-2.14-units_cur-default-path.patch +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index cd023ef..0000000 --- a/0002-units-2.15-units_cur.patch +++ /dev/null @@ -1,159 +0,0 @@ -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 new file mode 100644 index 0000000..6c85a81 --- /dev/null +++ b/0100-units-2.22-no-network.patch @@ -0,0 +1,26 @@ +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 new file mode 100644 index 0000000..6f2599f --- /dev/null +++ b/0101-fix-make-less-default-pager.patch @@ -0,0 +1,26 @@ +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 0182943..c90157e 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (units-2.14.tar.gz) = 3cd09a76fb1cccbafaa3e023c791740738c8347425b2645cad1fa768dee3ebde917602cf65988ee8922fed512ec0bc2367f68545450789fc6bf1a79f066a6986 +SHA512 (units-2.27.tar.gz.sig) = 6696986c3f40bdbef7a1a761c5314b6cce836c862aaae5926ab40da9516e5bf1d37293bcfc82bd01b92d54125b35d8e426d1b4368c7afef938b4ebf1c3723ee2 +SHA512 (units-2.27.tar.gz) = 432633abb10c68910d658e7ce50b23c26100566c2e9fc377e963f0d86d60b5366e12519c33b947805d447b7cbbb891578a8e1f7f2120aa8f95c3e9fbab60e881 diff --git a/units-2.14.tar.gz.sig b/units-2.14.tar.gz.sig deleted file mode 100644 index 5892a0e..0000000 Binary files a/units-2.14.tar.gz.sig and /dev/null differ diff --git a/units-2.15-units_cur b/units-2.15-units_cur deleted file mode 100644 index ec5872a..0000000 --- a/units-2.15-units_cur +++ /dev/null @@ -1,336 +0,0 @@ -#!/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 d2205a3..14f864d 100644 --- a/units.spec +++ b/units.spec @@ -1,29 +1,27 @@ Summary: A utility for converting amounts from one unit to another Name: units -Version: 2.14 -Release: 6%{?dist} +Version: 2.27 +Release: 3%{?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: GPLv3+ -Group: Applications/Engineering -Requires(post): /sbin/install-info -Requires(preun): /sbin/install-info +License: GPL-3.0-or-later + +Requires: less + BuildRequires: bison +BuildRequires: systemd-rpm-macros +BuildRequires: gcc +BuildRequires: make BuildRequires: ncurses-devel -BuildRequires: python +BuildRequires: python3-devel BuildRequires: readline-devel -# used by the units_cur script -Requires: python-unidecode +# do not update currency.units from network during build +Patch100: 0100-units-2.22-no-network.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 +# make less a default pager to avoid error about missing /usr/bin/pager +Patch101: 0101-fix-make-less-default-pager.patch %description Units converts an amount from one unit to another, or tells you what @@ -32,54 +30,200 @@ another. The units program can handle multiplicative scale changes as well as conversions such as Fahrenheit to Celsius. %prep -%setup -q -%patch1 -p1 -install -p -m0755 %{SOURCE1} units_cur2 -%patch2 -p1 -touch units_cur3 +%autosetup -p1 %build -%configure -make %{?_smp_mflags} +# 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 %install -make install DESTDIR=$RPM_BUILD_ROOT +%make_install -gzip $RPM_BUILD_ROOT%{_infodir}/units.info +# 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 # 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 ChangeLog COPYING NEWS README +%doc COPYING NEWS README %{_bindir}/units %{_bindir}/units_cur %{_datadir}/units +%{_tmpfilesdir}/units.conf %{_infodir}/* %{_mandir}/man1/* %changelog -* Mon May 25 2018 Kamil Dudka - 2.14-6 +* 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 - make units_cur work again (#1574835) -* Mon Dec 04 2017 Kamil Dudka - 2.14-5 -- units_cur: replace default path properly (#1520027) +* Mon Feb 19 2018 Kamil Dudka - 2.16-4 +- add explicit BR for the gcc compiler -* Tue Oct 31 2017 Kamil Dudka - 2.14-4 -- update units_cur script from units-2.15 (#1507782) +* 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 * 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 new file mode 100644 index 0000000..f32b17a --- /dev/null +++ b/units.tmpfiles.conf @@ -0,0 +1,5 @@ +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