add category determination to nx_project_begin

This commit is contained in:
Daniel Wolf 2022-05-12 18:48:51 -04:00
parent 08427469b5
commit 3539424eff
Signed by: nephatrine
GPG Key ID: 59D70EC2E4AAB4D0
2 changed files with 342 additions and 1 deletions

View File

@ -97,6 +97,7 @@ with section("parse"):
'MAINTAINER': '*',
'CONTACT': '*',
'VENDOR': '*',
'CATEGORY': '*',
'LICENSE': '*',
'PRERELEASE': '*',
'ABI': '*',

View File

@ -72,7 +72,8 @@ function(nx_project_begin)
"CONTACT"
"VENDOR"
"PRERELEASE"
"LICENSE")
"LICENSE"
"CATEGORY")
set(lsKeywordSingleABI "VERSION" "MAJOR" "MINOR" "PATCH" "TWEAK" "COMPATIBILITY")
set(lsKeywordSingleAPI "VERSION" "MAJOR" "MINOR" "PATCH" "TWEAK" "COMPATIBILITY")
@ -465,6 +466,345 @@ function(nx_project_begin)
nx_install_initialize()
endif()
# === CPack Group/Section ===
if(DEFINED sArgCATEGORY)
string(REPLACE "/" ":" sArgCATEGORY ":${sArgCATEGORY}:")
set(sDefaultDebian "misc")
if(sArgCATEGORY MATCHES ":GNOME:")
set(sDefaultDebian "gnome")
elseif(sArgCATEGORY MATCHES ":KDE:")
set(sDefaultDebian "kde")
elseif(sArgCATEGORY MATCHES ":Xfce:")
set(sDefaultDebian "xfce")
endif()
if(sArgCATEGORY MATCHES "^:Accessibility:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Accessibility")
elseif(sArgCATEGORY MATCHES "^:Archiving:")
if(sArgCATEGORY MATCHES ":CD Burning:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
nx_set(CPACK_RPM_PACKAGE_GROUP "^Archiving/Cd burning")
elseif(sArgCATEGORY MATCHES ":(Backup|Compression):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
nx_set(CPACK_RPM_PACKAGE_GROUP "^Archiving/${CMAKE_MATCH_1}")
else()
if(NOT sArgCATEGORY MATCHES ":Other:")
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
endif()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
nx_set(CPACK_RPM_PACKAGE_GROUP "Archiving/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Communications:")
if(sArgCATEGORY MATCHES ":Radio:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "hamradio")
nx_set(CPACK_RPM_PACKAGE_GROUP "^Communications/Radio")
elseif(sArgCATEGORY MATCHES ":(Bluetooth|Dial-Up|Fax|Mobile|Serial|Telephony):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "comm")
nx_set(CPACK_RPM_PACKAGE_GROUP "^Communications/${CMAKE_MATCH_1}")
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "comm")
nx_set(CPACK_RPM_PACKAGE_GROUP "Communications/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Databases:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "database")
nx_set(CPACK_RPM_PACKAGE_GROUP "Databases")
elseif(sArgCATEGORY MATCHES "^:Development:")
if(sArgCATEGORY MATCHES ":(C[#]|Mono):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "cli-mono")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/C#")
elseif(sArgCATEGORY MATCHES ":Debug:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "debug")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Debug")
elseif(sArgCATEGORY MATCHES ":(GNOME|GNOME and GTK[+]):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "gnome")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/GNOME and GTK+")
elseif(sArgCATEGORY MATCHES ":(Go|Golang):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "golang")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Other")
elseif(sArgCATEGORY MATCHES ":Haskell:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "haskell")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Other")
elseif(sArgCATEGORY MATCHES ":Java:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "java")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Java")
elseif(sArgCATEGORY MATCHES ":(JavaScript|NodeJS):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "javascript")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Other")
elseif(sArgCATEGORY MATCHES ":(KDE|KDE and Qt):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "kde")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/KDE")
elseif(sArgCATEGORY MATCHES ":Kernel:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "kernel")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Kernel")
elseif(sArgCATEGORY MATCHES ":OCaml:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "ocaml")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/OCaml")
elseif(sArgCATEGORY MATCHES ":Perl:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "perl")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Perl")
elseif(sArgCATEGORY MATCHES ":PHP:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "php")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/PHP")
elseif(sArgCATEGORY MATCHES ":Python:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "python")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Python")
elseif(sArgCATEGORY MATCHES ":Ruby:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "ruby")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Ruby")
elseif(sArgCATEGORY MATCHES ":Rust:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "rust")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Other")
elseif(sArgCATEGORY MATCHES ":(Lisp|Scheme):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "lisp")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Other")
elseif(sArgCATEGORY MATCHES ":X11:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "x11")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/X11")
elseif(sArgCATEGORY MATCHES ":(Basic|C|C[+][+]|Databases|Erlang|Tools):")
if(sArgCATEGORY MATCHES ":Tools:Version Control:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "vcs")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/${CMAKE_MATCH_1}")
else()
if(NOT sArgCATEGORY MATCHES ":Other:")
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
endif()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sLibDevel}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Development/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Documentation:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "doc")
nx_set(CPACK_RPM_PACKAGE_GROUP "Documentation")
elseif(sArgCATEGORY MATCHES "^:Editors:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "editors")
nx_set(CPACK_RPM_PACKAGE_GROUP "Editors")
elseif(sArgCATEGORY MATCHES "^:Education:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "education")
nx_set(CPACK_RPM_PACKAGE_GROUP "Education")
elseif(sArgCATEGORY MATCHES "^:Embedded:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "embedded")
nx_set(CPACK_RPM_PACKAGE_GROUP "Unspecified")
elseif(sArgCATEGORY MATCHES "^:Emulators:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "otherosfs")
nx_set(CPACK_RPM_PACKAGE_GROUP "Emulators")
elseif(sArgCATEGORY MATCHES "^:File Tools:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
nx_set(CPACK_RPM_PACKAGE_GROUP "File tools")
elseif(sArgCATEGORY MATCHES "^:Games:")
if(sArgCATEGORY MATCHES ":(Adventure|Arcade|Boards|Cards|Puzzles|Shooter|Simulation|Sports|Strategy):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "games")
nx_set(CPACK_RPM_PACKAGE_GROUP "Games/${CMAKE_MATCH_1}")
else()
if(NOT sArgCATEGORY MATCHES ":Other:")
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
endif()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "games")
nx_set(CPACK_RPM_PACKAGE_GROUP "Games/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Geography:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Geography")
elseif(sArgCATEGORY MATCHES "^:Graphical Desktop:")
if(sArgCATEGORY MATCHES ":GNOME:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "gnome")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphical desktop/GNOME")
elseif(sArgCATEGORY MATCHES ":KDE:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "kde")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphical desktop/KDE")
elseif(sArgCATEGORY MATCHES ":Xfce:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "xfce")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphical desktop/Xfce")
elseif(sArgCATEGORY MATCHES ":(Cinnamon|Enlightenment|Icewm|MATE|WindowMaker):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphical desktop/${CMAKE_MATCH_1}")
else()
if(NOT sArgCATEGORY MATCHES ":Other:")
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
endif()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphical desktop/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Graphics:")
if(sArgCATEGORY MATCHES ":(Editors|Converters):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "graphics")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphics/Editors and Converters")
elseif(sArgCATEGORY MATCHES ":(3D|Editors and Converters|Utilities|Photography|Scanning|Viewers):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "graphics")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphics/${CMAKE_MATCH_1}")
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "graphics")
nx_set(CPACK_RPM_PACKAGE_GROUP "Graphics/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Monitoring:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
nx_set(CPACK_RPM_PACKAGE_GROUP "Monitoring")
elseif(sArgCATEGORY MATCHES "^:Networking:")
if(sArgCATEGORY MATCHES ":File Transfer:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "net")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/File transfer")
elseif(sArgCATEGORY MATCHES ":Instant Messaging:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "net")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/Instant messaging")
elseif(sArgCATEGORY MATCHES ":IRC:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "net")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/IRC")
elseif(sArgCATEGORY MATCHES ":Mail:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "mail")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/Mail")
elseif(sArgCATEGORY MATCHES ":News:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "news")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/News")
elseif(sArgCATEGORY MATCHES ":Remote Access:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "net")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/Remote access")
elseif(sArgCATEGORY MATCHES ":WWW:")
if(sArgCATEGORY MATCHES ":Servers:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "httpd")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "web")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/WWW")
else()
if(NOT sArgCATEGORY MATCHES ":Other:")
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
endif()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "net")
nx_set(CPACK_RPM_PACKAGE_GROUP "Networking/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Office:")
if(sArgCATEGORY MATCHES ":Dictionary:")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "text")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Office/Dictionary")
elseif(sArgCATEGORY MATCHES ":Word Processor:")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "text")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Office/Word processor")
elseif(sArgCATEGORY MATCHES ":(Finance|Spreadsheet):")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "math")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Office/${CMAKE_MATCH_1}")
elseif(sArgCATEGORY MATCHES ":(Management|Organizer|Utilities|Suite):")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Office/${CMAKE_MATCH_1}")
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Office/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Publishing:")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "text")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Publishing")
elseif(sArgCATEGORY MATCHES "^:Sciences:")
if(sArgCATEGORY MATCHES ":Computer Science:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "science")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sciences/Computer science")
elseif(sArgCATEGORY MATCHES ":Mathematics:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "math")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sciences/Mathematics")
elseif(sArgCATEGORY MATCHES ":(Astronomy|Biology|Chemistry|Geosciences|Physics):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "science")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sciences/${CMAKE_MATCH_1}")
else()
if(NOT sArgCATEGORY MATCHES ":Other:")
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
endif()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sciences/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Security:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "utils")
nx_set(CPACK_RPM_PACKAGE_GROUP "Security")
elseif(sArgCATEGORY MATCHES "^:Shells:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "shells")
nx_set(CPACK_RPM_PACKAGE_GROUP "Shells")
elseif(sArgCATEGORY MATCHES "^:Sound:")
if(sArgCATEGORY MATCHES ":(Editors|Converters):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "sound")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sound/Editors and Converters")
elseif(sArgCATEGORY MATCHES ":(Editors and Converters|Midi|Mixers|Players|Utilities):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "sound")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sound/${CMAKE_MATCH_1}")
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "sound")
nx_set(CPACK_RPM_PACKAGE_GROUP "Sound/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:Terminals:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Terminals")
elseif(sArgCATEGORY MATCHES "^:Text Tools:")
if(sArgCATEGORY MATCHES ":TeX:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "tex")
else()
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "text")
endif()
nx_set(CPACK_RPM_PACKAGE_GROUP "Text tools")
elseif(sArgCATEGORY MATCHES "^:Toys:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Toys")
elseif(sArgCATEGORY MATCHES "^:Video:")
if(sArgCATEGORY MATCHES ":(Editors|Converters):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "video")
nx_set(CPACK_RPM_PACKAGE_GROUP "Video/Editors and Converters")
elseif(sArgCATEGORY MATCHES ":(Editors and Converters|Players|Television|Utilities):")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "video")
nx_set(CPACK_RPM_PACKAGE_GROUP "Video/${CMAKE_MATCH_1}")
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "video")
nx_set(CPACK_RPM_PACKAGE_GROUP "Video/Other")
endif()
elseif(sArgCATEGORY MATCHES "^:System:Fonts:")
if(sArgCATEGORY MATCHES ":TrueType:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "fonts")
nx_set(CPACK_RPM_PACKAGE_GROUP "System/Fonts/True type")
elseif(sArgCATEGORY MATCHES ":Type1:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "fonts")
nx_set(CPACK_RPM_PACKAGE_GROUP "System/Fonts/Type1")
elseif(sArgCATEGORY MATCHES ":Bitmap:")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "fonts")
nx_set(CPACK_RPM_PACKAGE_GROUP "System/Fonts/X11 bitmap")
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Using Default Sub-Category")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "fonts")
nx_set(CPACK_RPM_PACKAGE_GROUP "System/Fonts")
endif()
else()
message(AUTHOR_WARNING "nx_project_begin: Category '${sArgCATEGORY}' Unhandled")
nx_set(CPACK_DEBIAN_PACKAGE_SECTION "${sDefaultDebian}")
nx_set(CPACK_RPM_PACKAGE_GROUP "Unspecified")
endif()
endif()
# === CPack Licenses ===
if(DEFINED sArgLICENSE)