Do not require gperf on build (#5701)

* Build fixes

* fix

* USE_GPERF

* wip

* wip

* wip

* test -j

* Simpler

* fix

* FunctionsURL.h -> URL/FunctionsURL.h

* clean

* clean

* Always use gperf-generated file

* Generator for tldLookup.generated.cpp

* clang-format
This commit is contained in:
proller 2019-06-21 02:50:53 +03:00 committed by alexey-milovidov
parent 606b074a4b
commit f111dbd45f
12 changed files with 95987 additions and 42 deletions

View File

@ -344,7 +344,6 @@ find_contrib_lib(metrohash)
find_contrib_lib(btrie) find_contrib_lib(btrie)
find_contrib_lib(double-conversion) find_contrib_lib(double-conversion)
include (cmake/find_parquet.cmake) include (cmake/find_parquet.cmake)
include (cmake/find_gperf.cmake)
if (ENABLE_TESTS) if (ENABLE_TESTS)
include (cmake/find_gtest.cmake) include (cmake/find_gtest.cmake)

View File

@ -1,19 +1,8 @@
configure_file(config_functions_url.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/config_functions_url.h)
include(${ClickHouse_SOURCE_DIR}/cmake/dbms_glob_sources.cmake) include(${ClickHouse_SOURCE_DIR}/cmake/dbms_glob_sources.cmake)
add_headers_and_sources(clickhouse_functions_url .) add_headers_and_sources(clickhouse_functions_url .)
if (USE_GPERF)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/tldLookup.cpp
COMMAND ${GPERF} ${CMAKE_CURRENT_SOURCE_DIR}/tldLookup.gperf --output-file=${CMAKE_CURRENT_BINARY_DIR}/tldLookup.cpp
)
list(APPEND clickhouse_functions_url_sources ${CMAKE_CURRENT_BINARY_DIR}/tldLookup.cpp)
endif ()
add_library(clickhouse_functions_url ${clickhouse_functions_url_sources} ${clickhouse_functions_url_headers}) add_library(clickhouse_functions_url ${clickhouse_functions_url_sources} ${clickhouse_functions_url_headers})
target_link_libraries(clickhouse_functions_url PRIVATE clickhouse_common_io) target_link_libraries(clickhouse_functions_url PRIVATE clickhouse_common_io)
target_include_directories(clickhouse_functions_url PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/../include) target_include_directories(clickhouse_functions_url PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../include) # ${CMAKE_CURRENT_BINARY_DIR}/include
if (CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE" OR CMAKE_BUILD_TYPE_UC STREQUAL "RELWITHDEBINFO" OR CMAKE_BUILD_TYPE_UC STREQUAL "MINSIZEREL") if (CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE" OR CMAKE_BUILD_TYPE_UC STREQUAL "RELWITHDEBINFO" OR CMAKE_BUILD_TYPE_UC STREQUAL "MINSIZEREL")
# Won't generate debug info for files with heavy template instantiation to achieve faster linking and lower size. # Won't generate debug info for files with heavy template instantiation to achieve faster linking and lower size.
@ -25,3 +14,23 @@ if(USE_HYPERSCAN)
target_link_libraries(clickhouse_functions_url PRIVATE ${HYPERSCAN_LIBRARY}) target_link_libraries(clickhouse_functions_url PRIVATE ${HYPERSCAN_LIBRARY})
target_include_directories(clickhouse_functions_url SYSTEM PRIVATE ${HYPERSCAN_INCLUDE_DIR}) target_include_directories(clickhouse_functions_url SYSTEM PRIVATE ${HYPERSCAN_INCLUDE_DIR})
endif() endif()
include(${ClickHouse_SOURCE_DIR}/cmake/find_gperf.cmake)
if (USE_GPERF)
# Only for regenerate
add_custom_target(generate-tldlookup-gperf ./tldLookup.sh
SOURCES tldLookup.sh
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/tldLookup.gperf
)
add_custom_target(generate-tldlookup ${GPERF} tldLookup.gperf --output-file=tldLookup.generated.cpp && clang-format -i tldLookup.generated.cpp
SOURCES tldLookup.gperf
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
# BYPRODUCTS ${CMAKE_CURRENT_SOURCE_DIR}/tldLookup.generated.cpp
)
add_dependencies(generate-tldlookup generate-tldlookup-gperf)
if(NOT TARGET generate-source)
add_custom_target(generate-source)
endif()
add_dependencies(generate-source generate-tldlookup)
endif ()

View File

@ -1,5 +1,3 @@
#pragma once #pragma once
// .h autogenerated by cmake! // .h autogenerated by cmake!
#cmakedefine01 USE_GPERF

View File

@ -64,7 +64,6 @@ struct ExtractFirstSignificantSubdomain
end_of_level_domain = end; end_of_level_domain = end;
} }
#if USE_GPERF
if (tldLookup::is_valid(last_3_periods[1] + 1, end_of_level_domain - last_3_periods[1] - 1) != nullptr) if (tldLookup::is_valid(last_3_periods[1] + 1, end_of_level_domain - last_3_periods[1] - 1) != nullptr)
{ {
res_data += last_3_periods[2] + 1 - begin; res_data += last_3_periods[2] + 1 - begin;
@ -75,7 +74,6 @@ struct ExtractFirstSignificantSubdomain
res_data += last_3_periods[1] + 1 - begin; res_data += last_3_periods[1] + 1 - begin;
res_size = last_3_periods[0] - last_3_periods[1] - 1; res_size = last_3_periods[0] - last_3_periods[1] - 1;
} }
#endif
} }
}; };

File diff suppressed because it is too large Load Diff

View File

@ -430,6 +430,7 @@ slz.br
sorocaba.br sorocaba.br
srv.br srv.br
taxi.br taxi.br
tc.br
teo.br teo.br
the.br the.br
tmp.br tmp.br
@ -3320,15 +3321,13 @@ gov.ru
int.ru int.ru
mil.ru mil.ru
test.ru test.ru
gov.rw
net.rw
edu.rw
ac.rw ac.rw
com.rw
co.rw co.rw
int.rw coop.rw
gov.rw
mil.rw mil.rw
gouv.rw net.rw
org.rw
com.sa com.sa
net.sa net.sa
org.sa org.sa
@ -3504,26 +3503,27 @@ net.to
org.to org.to
edu.to edu.to
mil.to mil.to
com.tr
info.tr
biz.tr
net.tr
org.tr
web.tr
gen.tr
tv.tr
av.tr av.tr
dr.tr
bbs.tr bbs.tr
name.tr
tel.tr
gov.tr
bel.tr bel.tr
pol.tr biz.tr
com.tr
dr.tr
edu.tr
gen.tr
gov.tr
info.tr
mil.tr mil.tr
k12.tr k12.tr
edu.tr
kep.tr kep.tr
name.tr
net.tr
org.tr
pol.tr
tel.tr
tsk.tr
tv.tr
web.tr
nc.tr nc.tr
co.tt co.tt
com.tt com.tt
@ -3836,6 +3836,7 @@ cc.ua
inf.ua inf.ua
ltd.ua ltd.ua
beep.pl beep.pl
barsy.ca
alwaysdata.net alwaysdata.net
cloudfront.net cloudfront.net
elasticbeanstalk.com elasticbeanstalk.com
@ -3851,7 +3852,9 @@ go-vip.co
go-vip.net go-vip.net
wpcomstaging.com wpcomstaging.com
myfritz.net myfritz.net
b-data.io
backplaneapp.io backplaneapp.io
balena-devices.com
betainabox.com betainabox.com
bnr.la bnr.la
blackbaudcdn.net blackbaudcdn.net
@ -3865,6 +3868,9 @@ bplaced.net
square7.net square7.net
browsersafetymark.io browsersafetymark.io
mycd.eu mycd.eu
carrd.co
crd.co
uwu.ai
ae.org ae.org
ar.com ar.com
br.com br.com
@ -3905,6 +3911,7 @@ virtueeldomein.nl
cleverapps.io cleverapps.io
c66.me c66.me
cloud66.ws cloud66.ws
cloud66.zone
jdevcloud.com jdevcloud.com
wpdevcloud.com wpdevcloud.com
cloudaccess.host cloudaccess.host
@ -3912,7 +3919,9 @@ freesite.host
cloudaccess.net cloudaccess.net
cloudcontrolled.com cloudcontrolled.com
cloudcontrolapp.com cloudcontrolapp.com
cloudera.site
workers.dev workers.dev
wnext.app
co.ca co.ca
co.cz co.cz
cdn77-ssl.net cdn77-ssl.net
@ -4273,6 +4282,7 @@ blogsite.xyz
dynv6.net dynv6.net
e4.cz e4.cz
mytuleap.com mytuleap.com
onred.one
enonic.io enonic.io
eu.org eu.org
twmail.cc twmail.cc
@ -4379,14 +4389,18 @@ freeboxos.fr
freedesktop.org freedesktop.org
futurehosting.at futurehosting.at
futuremailing.at futuremailing.at
usercontent.jp
lab.ms
github.io github.io
githubusercontent.com githubusercontent.com
gitlab.io gitlab.io
glitch.me
cloudapps.digital cloudapps.digital
ro.im ro.im
shop.ro shop.ro
goip.de goip.de
run.app run.app
web.app
appspot.com appspot.com
blogspot.ae blogspot.ae
blogspot.al blogspot.al
@ -4451,6 +4465,11 @@ pagespeedmobilizer.com
publishproxy.com publishproxy.com
withgoogle.com withgoogle.com
withyoutube.com withyoutube.com
fin.ci
free.hr
caa.li
ua.rs
conf.se
hashbang.sh hashbang.sh
hasura.app hasura.app
hasura-app.io hasura-app.io
@ -4462,6 +4481,16 @@ ravendb.community
ravendb.me ravendb.me
development.run development.run
ravendb.run ravendb.run
bpl.biz
orx.biz
ng.city
ng.ink
biz.gl
col.ng
gen.ng
ltd.ng
sch.so
häkkinen.fi
moonscale.net moonscale.net
iki.fi iki.fi
dyn-berlin.de dyn-berlin.de
@ -4481,9 +4510,14 @@ pixolino.com
ipifony.net ipifony.net
mein-iserv.de mein-iserv.de
test-iserv.de test-iserv.de
iobb.net
myjino.ru myjino.ru
js.org js.org
kaas.gg
khplay.nl
keymachine.de keymachine.de
kinghost.net
uni5.net
knightpoint.systems knightpoint.systems
co.krd co.krd
edu.krd edu.krd
@ -4504,6 +4538,11 @@ linkitools.space
linkyard.cloud linkyard.cloud
linkyard-cloud.ch linkyard-cloud.ch
we.bs we.bs
loginline.app
loginline.dev
loginline.io
loginline.services
loginline.site
krasnik.pl krasnik.pl
leczna.pl leczna.pl
lubartow.pl lubartow.pl
@ -4547,6 +4586,20 @@ bmoattachments.org
net.ru net.ru
org.ru org.ru
pp.ru pp.ru
pony.club
of.fashion
on.fashion
of.football
in.london
of.london
for.men
and.mom
for.mom
for.one
for.sale
of.work
to.work
nctu.me
bitballoon.com bitballoon.com
netlify.com netlify.com
4u.com 4u.com
@ -4736,7 +4789,10 @@ pantheonsite.io
gotpantheon.com gotpantheon.com
mypep.link mypep.link
on-web.fr on-web.fr
dyn53.io
co.bn
priv.at priv.at
prvcy.page
protonet.io protonet.io
chirurgiens-dentistes-en-france.fr chirurgiens-dentistes-en-france.fr
byen.site byen.site
@ -4752,6 +4808,9 @@ rackmaze.com
rackmaze.net rackmaze.net
readthedocs.io readthedocs.io
rhcloud.com rhcloud.com
onrender.com
repl.co
repl.run
resindevice.io resindevice.io
hzc.io hzc.io
wellbeingzone.eu wellbeingzone.eu
@ -4776,6 +4835,7 @@ co.ua
pp.ua pp.ua
shiftedit.io shiftedit.io
myshopblocks.com myshopblocks.com
mo-siemens.io
1kapp.com 1kapp.com
appchizi.com appchizi.com
applinzi.com applinzi.com
@ -4783,6 +4843,7 @@ sinaapp.com
vipsinaapp.com vipsinaapp.com
siteleaf.net siteleaf.net
bounty-full.com bounty-full.com
stackhero-network.com
static.land static.land
spacekit.io spacekit.io
storj.farm storj.farm
@ -4811,8 +4872,12 @@ gdansk.pl
gdynia.pl gdynia.pl
med.pl med.pl
sopot.pl sopot.pl
edugit.org
telebit.app telebit.app
telebit.io telebit.io
thingdustdata.com
arvo.network
azimuth.network
bloxcms.com bloxcms.com
townnews-staging.com townnews-staging.com
12hp.at 12hp.at
@ -4858,6 +4923,8 @@ virtual-user.de
2038.io 2038.io
router.management router.management
v-info.info v-info.info
voorloper.cloud
wafflecell.com
wedeploy.io wedeploy.io
wedeploy.me wedeploy.me
wedeploy.sh wedeploy.sh
@ -4883,5 +4950,8 @@ za.net
za.org za.org
now.sh now.sh
bss.design bss.design
basicserver.io
virtualserver.io
enterprisecloud.nu
zone.id zone.id
%% %%

View File

@ -1,7 +1,5 @@
#pragma once #pragma once
#include "config_functions_url.h"
#if USE_GPERF
// Definition of the class generated by gperf, present on gperf/tldLookup.gperf // Definition of the class generated by gperf, present on gperf/tldLookup.gperf
class tldLookupHash class tldLookupHash
{ {
@ -15,4 +13,3 @@ namespace DB
{ {
using tldLookup = tldLookupHash; using tldLookup = tldLookupHash;
} }
#endif

View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
[ ! -f public_suffix_list.dat ] && wget -O public_suffix_list.dat https://publicsuffix.org/list/public_suffix_list.dat
echo '%language=C++
%define lookup-function-name is_valid
%define class-name tldLookupHash
%readonly-tables
%includes
%compare-strncmp
%{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
#pragma GCC diagnostic ignored "-Wunused-macros"
%}
# List generated using https://publicsuffix.org/list/public_suffix_list.dat
%%' > tldLookup.gperf
grep -v "//" public_suffix_list.dat | grep . | grep "\." | grep -ve "\..*\..*" >> tldLookup.gperf
echo "%%" >> tldLookup.gperf

View File

@ -13,3 +13,11 @@ add_headers_and_sources(storages_system .)
list (APPEND storages_system_sources ${CONFIG_BUILD}) list (APPEND storages_system_sources ${CONFIG_BUILD})
add_library(clickhouse_storages_system ${storages_system_headers} ${storages_system_sources}) add_library(clickhouse_storages_system ${storages_system_headers} ${storages_system_sources})
target_link_libraries(clickhouse_storages_system PRIVATE dbms common string_utils clickhouse_common_zookeeper) target_link_libraries(clickhouse_storages_system PRIVATE dbms common string_utils clickhouse_common_zookeeper)
add_custom_target(generate-contributors ./StorageSystemContributors.sh SOURCES StorageSystemContributors.sh WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
# BYPRODUCTS StorageSystemContributors.generated.cpp
)
if(NOT TARGET generate-source)
add_custom_target(generate-source)
endif()
add_dependencies(generate-source generate-contributors)

View File

@ -61,7 +61,6 @@ const char * auto_config_build[]
"USE_SSL", "@USE_SSL@", "USE_SSL", "@USE_SSL@",
"USE_HYPERSCAN", "@USE_HYPERSCAN@", "USE_HYPERSCAN", "@USE_HYPERSCAN@",
"USE_SIMDJSON", "@USE_SIMDJSON@", "USE_SIMDJSON", "@USE_SIMDJSON@",
"USE_GPERF", "@USE_GPERF@",
nullptr, nullptr nullptr, nullptr
}; };

View File

@ -11,8 +11,10 @@ const char * auto_contributors[] {
"Alexander Ermolaev", "Alexander Ermolaev",
"Alexander GQ Gerasiov", "Alexander GQ Gerasiov",
"Alexander Kazakov", "Alexander Kazakov",
"Alexander Kozhikhov",
"Alexander Krasheninnikov", "Alexander Krasheninnikov",
"Alexander Kuranoff", "Alexander Kuranoff",
"Alexander Kuzmenkov",
"Alexander Lukin", "Alexander Lukin",
"Alexander Makarov", "Alexander Makarov",
"Alexander Marshalov", "Alexander Marshalov",
@ -49,6 +51,7 @@ const char * auto_contributors[] {
"Anton Popov", "Anton Popov",
"Anton Tihonov", "Anton Tihonov",
"Anton Tikhonov", "Anton Tikhonov",
"Anton Yuzhaninov",
"Anton Zhabolenko", "Anton Zhabolenko",
"Arsen Hakobyan", "Arsen Hakobyan",
"Artem Andreenko", "Artem Andreenko",
@ -72,6 +75,7 @@ const char * auto_contributors[] {
"Bulat Gaifullin", "Bulat Gaifullin",
"Chen Yufei", "Chen Yufei",
"Ciprian Hacman", "Ciprian Hacman",
"Clément Rodriguez",
"Constantin S. Pan", "Constantin S. Pan",
"CurtizJ", "CurtizJ",
"Daniel Bershatsky", "Daniel Bershatsky",
@ -104,6 +108,7 @@ const char * auto_contributors[] {
"George G", "George G",
"George3d6", "George3d6",
"Gleb Kanterov", "Gleb Kanterov",
"Gleb Novikov",
"Guillaume Tassery", "Guillaume Tassery",
"Hamoon", "Hamoon",
"Hasnat", "Hasnat",
@ -122,8 +127,12 @@ const char * auto_contributors[] {
"Ivan Babrou", "Ivan Babrou",
"Ivan Blinkov", "Ivan Blinkov",
"Ivan He", "Ivan He",
"Ivan Kush",
"Ivan Kushnarenko",
"Ivan Lezhankin", "Ivan Lezhankin",
"Ivan Remen",
"Ivan Zhukov", "Ivan Zhukov",
"JaosnHsieh",
"Jason", "Jason",
"Jean Baptiste Favre", "Jean Baptiste Favre",
"Jonatas Freitas", "Jonatas Freitas",
@ -144,6 +153,7 @@ const char * auto_contributors[] {
"LiuCong", "LiuCong",
"LiuYangkuan", "LiuYangkuan",
"Lopatin Konstantin", "Lopatin Konstantin",
"Loud_Scream",
"Luis Bosque", "Luis Bosque",
"Léo Ercolanelli", "Léo Ercolanelli",
"Maks Skorokhod", "Maks Skorokhod",
@ -154,6 +164,7 @@ const char * auto_contributors[] {
"Marsel Arduanov", "Marsel Arduanov",
"Marti Raudsepp", "Marti Raudsepp",
"Martijn Bakker", "Martijn Bakker",
"Masha",
"Max", "Max",
"Max Akhmedov", "Max Akhmedov",
"Max Vetrov", "Max Vetrov",
@ -161,6 +172,7 @@ const char * auto_contributors[] {
"Maxim Fedotov", "Maxim Fedotov",
"Maxim Fridental", "Maxim Fridental",
"Maxim Khrisanfov", "Maxim Khrisanfov",
"Maxim Kuznetsov",
"Maxim Nikulin", "Maxim Nikulin",
"MaximAL", "MaximAL",
"MeiK", "MeiK",
@ -193,6 +205,7 @@ const char * auto_contributors[] {
"Nikolay Volosatov", "Nikolay Volosatov",
"Odin Hultgren Van Der Horst", "Odin Hultgren Van Der Horst",
"Okada Haruki", "Okada Haruki",
"Oleg Favstov",
"Oleg Komarov", "Oleg Komarov",
"Oleg Obleukhov", "Oleg Obleukhov",
"Olga Khvostikova", "Olga Khvostikova",
@ -206,6 +219,7 @@ const char * auto_contributors[] {
"Pavlo Bashynskiy", "Pavlo Bashynskiy",
"Pawel Rog", "Pawel Rog",
"Persiyanov Dmitriy Andreevich", "Persiyanov Dmitriy Andreevich",
"Quid37",
"Ravengg", "Ravengg",
"Reto Kromer", "Reto Kromer",
"Roman Lipovsky", "Roman Lipovsky",
@ -225,6 +239,7 @@ const char * auto_contributors[] {
"Sergey Magidovich", "Sergey Magidovich",
"Sergey V. Galtsev", "Sergey V. Galtsev",
"Sergey Zaikin", "Sergey Zaikin",
"Sergi Vladykin",
"SevaCode", "SevaCode",
"Silviu Caragea", "Silviu Caragea",
"Simon Podlipsky", "Simon Podlipsky",
@ -269,15 +284,19 @@ const char * auto_contributors[] {
"Vyacheslav Alipov", "Vyacheslav Alipov",
"William Shallum", "William Shallum",
"Winter Zhang", "Winter Zhang",
"Yangkuan Liu",
"Yegor Andreenko", "Yegor Andreenko",
"Yuri Dyachenko", "Yuri Dyachenko",
"Yurii Vlasenko", "Yurii Vlasenko",
"Yuriy",
"Yuriy Baranov", "Yuriy Baranov",
"Yury Karpovich", "Yury Karpovich",
"Yury Stankevich", "Yury Stankevich",
"Zhichang Yu",
"abdrakhmanov", "abdrakhmanov",
"abyss7", "abyss7",
"achulkov2", "achulkov2",
"akuzm",
"alesapin", "alesapin",
"alexander kozhikhov", "alexander kozhikhov",
"alexey-milovidov", "alexey-milovidov",
@ -295,8 +314,11 @@ const char * auto_contributors[] {
"chenxing-xc", "chenxing-xc",
"chenxing.xc", "chenxing.xc",
"chertus", "chertus",
"coraxster",
"daoready", "daoready",
"decaseal", "decaseal",
"dmitry kuzmin",
"eejoin",
"egatov", "egatov",
"elBroom", "elBroom",
"ezhaka", "ezhaka",
@ -305,12 +327,14 @@ const char * auto_contributors[] {
"fessmage", "fessmage",
"filimonov", "filimonov",
"flow", "flow",
"foxxmary",
"ggerogery", "ggerogery",
"glockbender", "glockbender",
"hcz", "hcz",
"hotid", "hotid",
"igor", "igor",
"igor.lapko", "igor.lapko",
"ivan-kush",
"ivanzhukov", "ivanzhukov",
"javi", "javi",
"javi santana", "javi santana",
@ -318,13 +342,16 @@ const char * auto_contributors[] {
"ks1322", "ks1322",
"kshvakov", "kshvakov",
"leozhang", "leozhang",
"levushkin aleksej",
"levysh", "levysh",
"liangqian", "liangqian",
"linceyou",
"liuyangkuan", "liuyangkuan",
"liuyimin", "liuyimin",
"lomberts", "lomberts",
"luc1ph3r", "luc1ph3r",
"maiha", "maiha",
"maxkuzn",
"mf5137", "mf5137",
"mfridental", "mfridental",
"miha-g", "miha-g",
@ -341,6 +368,7 @@ const char * auto_contributors[] {
"proller", "proller",
"pyos", "pyos",
"qianlixiang", "qianlixiang",
"quid",
"robot-clickhouse", "robot-clickhouse",
"robot-metrika-test", "robot-metrika-test",
"root", "root",
@ -353,6 +381,7 @@ const char * auto_contributors[] {
"stavrolia", "stavrolia",
"sundy-li", "sundy-li",
"sundyli", "sundyli",
"svladykin",
"tai", "tai",
"topvisor", "topvisor",
"urgordeadbeef", "urgordeadbeef",
@ -366,6 +395,7 @@ const char * auto_contributors[] {
"Павел Литвиненко", "Павел Литвиненко",
"Смитюх Вячеслав", "Смитюх Вячеслав",
"Сундуков Алексей", "Сундуков Алексей",
"吴健",
"小路", "小路",
"张健", "张健",
"张风啸", "张风啸",

View File

@ -11,7 +11,7 @@ git shortlog --summary | perl -lnE 's/^\s+\d+\s+(.+)/ "$1",/; next unless $1;
# If git history not available - dont make target file # If git history not available - dont make target file
if [ ! -s $CONTRIBUTORS_FILE.tmp ]; then if [ ! -s $CONTRIBUTORS_FILE.tmp ]; then
echo Empty result of git shortlog echo Empty result of git shortlog
git status git status -uno
exit exit
fi fi