// vim: ft=c: et

// ===========================================================================
// Packages mapping started from here
// ===========================================================================

#define EMACS_FLAVOR        full
#define EMACS_PKG(x)        x@EMACS_FLAVOR
#define PYTHON_2_PKG(x)     py27-x@py27
#define PYTHON_3_PKG(x)     py39-x@py39
#define PYTHON_2_3_PKG(x)   PYTHON_2_PKG(x) PYTHON_3_PKG(x)
#define PYPY_2_PKG(x)       pypy-x@pypy
#define PYPY_3_PKG(x)       pypy3-x@pypy3
#define PYPY_2_3_PKG(x)     PYPY_2_PKG(x) PYPY_3_PKG(x)

// Keyring

// Standard
#define ACL                 NULL
#define ATTR                NULL
#define BC                  NULL
#define BIND                bind-tools
#define CAP                 NULL
#define FILE                NULL
#define FINGER              NULL
#define FTP                 NULL
#define INETD               NULL
#define ISPELL              aspell-ispell
#define LESS                NULL
#define LOCATE              NULL
#define MIME_SUPPORT        mime-support
#define NCURSES_TERM        NULL
#define PATCH               NULL
#define PCI                 NULL
#define PERL                perl5
#define PYTHON2             python2 python27
#define PYTHON3             python3 python37 python38 python39 \
                            python310 python311
#define SHARUTILS           NULL
#define SSH                 NULL
#define STRACE              NULL
#define TELNET              NULL
#define TIME                NULL
#define USB                 NULL
#define WAMERICAN           NULL
#define WHOIS               NULL

// Shell
#define KSH                 ksh93
#define TCSH                NULL

// Admin
#define ACPI                NULL
#define CPUFREQ             NULL
#define CUPS                cups cups-filters PYTHON_3_PKG(pycups)
#define IOTOP               NULL
#define MENU                NULL
#define MCELOG              mcelog
#define MUNIN               munin-node
#define PARTED              NULL
#define PAM_LDAPD           nss-pam-ldapd
#define SYSSTAT             NULL
#define DEBSUMS             NULL
#define PKG_MGMT            portupgrade portmaster portconf portfind porttools \
                            portlint pkg_rmleaves pkg_cutleaves bsdadminscripts2
#define NET_SNMP            net-snmp
#define FDISK               linuxfdisk
#define GDISK               gdisk

// Database
#define MYSQL_CLIENT        mariadb105-client
#define PYMONGO             PYTHON_3_PKG(pymongo)

// Devel
#define ANT                 apache-ant
#define CLANG               NULL
#define GCC                 gcc6-aux gcc10 gcc11 gcc12 gcc13-devel
#define GDB                 gdb
#define GOLANG              go
#define GIT                 git git-cvs git-gui git-p4 git-svn gitg
#define INDENT              NULL
#define MAKE                gmake bmake fmake
#define MINGW               mingw32-gcc
#define NODEJS              node16 npm
#define OPENJDK             openjdk openjdk8 openjdk11 openjdk17 openjdk18
#define SCONS               scons-py39@py39
#define SUBVERSION          subversion subversion-gnome-keyring \
                            svk EMACS_PKG(psvn)
#define TCL                 tcl85 tcl86 tcl87
#define TK                  tk85 tk86 tk87
#define AARCH64_GCC         binutils@aarch64 aarch64-gcc12@aarch64
#define GDB_MULTIARCH       NULL
#define ECLIPSE             eclipse eclipse-cdt eclipse-pydev
#define JIKES               jikes
#define BIOJAVA             NULL
#define NCBI_TOOLKIT        ncbi-toolkit
#define MONO                mono
#define ANDROID_TOOLS       android-tools
#define BREEZY              PYTHON_3_PKG(brz)
#define LLVM                llvm11 llvm12 llvm13 llvm14 llvm15 llvm-devel
#define OPENCL              ocl-icd opencl
#define POCL                pocl

// Doc
#define LIBC_DOC            NULL
#define MAKE_DOC            NULL
#define MANPAGES            NULL
#define MANPAGES_POSIX      NULL
#define PERL_DOC            NULL
#define PYTHON2_DOC         NULL
#define PYTHON3_DOC         NULL
#define TCL_DOC             NULL
#define TK_DOC              NULL
#define GCC_DOC             NULL

// Editors
#define CTAGS               ctags
#define EMACS               emacs@EMACS_FLAVOR python-mode.el
#define LIBREOFFICE         libreoffice zh_TW-libreoffice
#define VIM                 NULL // vim-gtk3 already provides the vim command
#define VIM_GTK             vim-gtk3@gtk3

// Electronics
// Fonts
#define ARPHIC              zh-arphicttf
#define BAEKMUK             ko-baekmukfonts-ttf
#define CJKUNIFONTS         zh-CJKUnifonts
#define LIBERATION          liberation-fonts-ttf
#define IPAFONT             ja-font-ipa ja-font-mplus-ipa ja-font-ipaex
#define WQY                 wqy-fonts
#define XFONTS_CYRILLIC     xorg-fonts-cyrillic
#define XFONTS_INTL_CHINESE NULL
#define XFONTS_WQY          NULL
#define TERMINUS            terminus-font
#define URWFONTS            urwfonts urwfonts-ttf
#define NONFREE_FONTS       freefonts webfonts
#define KCFONTS             zh-kcfonts
#define FIREFLYTTF          zh-fireflyttf-LGJ
#define NOTO                noto
#define SOURCESANSPRO       source-sans-ttf
#define SOURCECODEPRO       sourcecodepro-ttf

// GNOME
#define ALACARTE            NULL // Removed in r408881
#define GDM                 gdm
#define GNOME_USER_DOCS     gnome-user-docs
#define GTK2_ENGINES        gtk-engines2
#define GVFS                gvfs
#define REMMINA             remmina@default
#define MUTTER              mutter
#define GNOME_META_PKG      gnome@full
#define BAOBAB              gnome-utils
#define GLADE               glade
#define GTK2                gtk2 gtkmm24
#define GTK3                gtk3 gtkmm30
#define GTK4                gtk4
#define GNOME_SCREENSHOT    gnome-utils
#define GTK2_THEMES         NULL
#define GTK3_THEMES         gtk3-unico-engine clearlooks-phenix-theme

// Graphics
#define IMAGEMAGICK         ImageMagick7
#define JPEG                jpeg-turbo
#define BMEPS               bitmap2pp
#define XGRAPH              xgraph

// Haskell
#define HUGS                NULL // Removed in r534093
#define HASKELL_PLATFORM    hs-alex hs-cabal-install \
                            hs-haddock hs-happy hs-hscolour hs-stack
#define HASKELL_OPENGL      NULL // Removed in r501084

// Interpreters
#define SWIG                swig

// KDE
#define KDE_META_PKG        kde5
#define KDE_GTK_CONFIG      plasma5-kde-gtk-config
#define OKULAR              okular
#define ADWAITA_QT          adwaita-qt5
#define QT4_QTCONFIG        NULL // Removed in r495967
#define QT5_QTCT            qt5ct

// Lib
#define LIBC_DEV            NULL
#define LIBEVENT_DEV        libevent
#define FFTW_DEV            fftw fftw3 fftw3-float fftw3-long fftw3-quad
#define GSL_DEV             gsl
#define JPEG_DEV            jpeg-turbo
#define LTDL_DEV            libltdl
#define NCURSES_DEV         ncurses
#define QT4_DEV             NULL // Removed in r495967
#define QT5_DEV             qt5
#define PERL_DEV            NULL // provided by default perl installation
#define MYSQLXX_DEV         NULL // Removed in r534093
#define OPENMPI_DEV         openmpi
#define GFLAGS_DEV          gflags
#define BOOST_DEV           boost-all
#define IMLIB2_DEV          imlib2
#define EXOSIP2_DEV         libeXosip2
#define OPENCV_DEV          opencv
#define FFMPEG_DEV          ffmpeg
#define SDL_DEV             sdl sdl2 sdl_mixer sdl2_mixer
#define POPPLER_DEV         poppler
#define PWQUALITY_DEV       libpwquality
#define LEVELDB_DEV         leveldb
#define SNAPPY_DEV          snappy
#define HDF5_DEV            hdf5
#define GOOGLE_GLOG_DEV     glog
#define LMDB_DEV            lmdb
#define LIBSQLITE3_DEV      tcl-sqlite3
#define ZMQ_DEV             libzmq4 PYTHON_3_PKG(pyzmq)
#define LIBXML2_DEV         libxml2
#define LIBDB_CXX_DEV       db5

// Lisp

// Lua
#define LUA51               lua51
#define LUA52               lua52
#define LUA53               lua53
#define LUA54               lua54

// Machine Learning
#define LIBSVM              libsvm libsvm-python
#define LIBLINEAR           liblinear
#define LIBOPENBLAS         openblas

// Mail
#define MAILX               NULL
#define METAMAIL            metamail
#define VM                  NULL // Removed in r366959

// Math
#define GSL                 gsl
#define OCTAVE_DEV          octave
#define QHULL               qhull
#define R_BASE              R
#define SYMPY               PYTHON_3_PKG(sympy)
#define LAPACKE             openblas

// Misc
#define GNUPG               gnupg1 gnupg
#define KERNEL_PACKAGE      NULL // Debian-specific package
#define XSLTPROC            libxslt
#define PROTOBUF            protobuf
#define LINUXTOOL           NULL

// Net
#define DENYHOSTS           denyhosts-py39@py39
#define MTR                 mtr-nox11
#define STUNNEL             stunnel
#define VNCVIEWER           tigervnc-viewer
#define NS2                 NULL // Removed in r367590
#define BSDFTPD_SSL         bsdftpd-ssl
#define OMNITTY             omnitty
#define TRAFSHOW            trafshow
#define SPICE_CLIENT        spice-gtk
#define XSPICE              NULL // FIXME: not found in ports
#define GNUTLS_CLI          gnutls
#define PCMANX              zh-pcmanx
#define LOUDMOUTH           loudmouth
#define SSHFS               fusefs-sshfs

// Parallel Programming
// Perl
#define PERL_BDB                        p5-BDB
#define PERL_DATA_SERIALIZER            p5-Data-Serializer
#define PERL_DBD_MYSQL                  p5-DBD-mysql
#define PERL_DBD_SQLITE3                p5-DBD-SQLite
#define PERL_IO_ALL                     p5-IO-All
#define PERL_JSON                       p5-JSON
#define PERL_LIBWWW                     p5-libwww
#define PERL_ARRAY_INTSPAN              p5-Array-IntSpan
#define PERL_BIOPERL                    p5-BioPerl
#define PERL_DBI                        p5-DBI
#define PERL_MAIL_SENDER                p5-Mail-Sender
#define PERL_SET_INTSPAN                p5-Set-IntSpan
#define PERL_SET_WINDOW                 p5-Set-Window
#define PERL_SET_INFINITE               p5-Set-Infinite
#define PERL_PAR                        p5-PAR
#define PERL_PERL_TIDY                  p5-Perl-Tidy
#define PERL_WWW_MECHANIZE              p5-WWW-Mechanize
#define PERL_WWW_MECHANIZE_SHELL        p5-WWW-Mechanize-Shell
#define PERL_WWW_ROBOT                  p5-WWW-Robot
#define PERL_XML_SAX_EXPAT              p5-XML-SAX-Expat
#define PERL_SWITCH                     p5-Switch

// PHP
#define PHP_CLI                 php80
#define PHP_MYSQL               php80-mysqli php80-pdo_mysql

// Python
#define IPYTHON                 PYTHON_3_PKG(ipython)
#define PYPY                    pypy pypy3
#define PYTHON_PIP              PYTHON_3_PKG(pip)
#define PYTHON_BSDDB3           PYTHON_3_PKG(berkeleydb)
#define PYTHON_IMAGING          PYTHON_3_PKG(pillow)
#define PYTHON_NUMPY            PYTHON_3_PKG(numpy)
#define PYTHON_SETUPTOOLS       PYTHON_3_PKG(setuptools) PYTHON_2_PKG(setuptools44)
#define PYTHON_GSL              PYTHON_3_PKG(pygsl)
#define PYTHON_SCIPY            PYTHON_3_PKG(scipy)
#define PYTHON_MARKDOWN         PYTHON_3_PKG(markdown)
#define PYTHON_MEMPROF          NULL
#define PYTHON_PSUTIL           PYTHON_3_PKG(psutil)
#define PYTHONTRACER            NULL
#define PYTHON_MYSQLDB          NULL
#define PYTHON_CJSON            NULL // Removed in r544927
#define PYTHON_SQLITE           PYTHON_2_3_PKG(sqlite3) PYPY_2_3_PKG(sqlite3)
#define PYTHON_BEAUTIFULSOUP    PYTHON_3_PKG(beautifulsoup)
#define PYTHON_TK               PYTHON_2_3_PKG(tkinter) PYPY_2_3_PKG(tkinter)
#define PYTHON_SIMPLEJSON       PYTHON_3_PKG(simplejson)
#define PYTHON_MATPLOTLIB       PYTHON_3_PKG(matplotlib)
#define PYTHON_LXML             PYTHON_3_PKG(lxml)
#define PYTHON_OPENCV           opencv
#define PYTHON_COGENT           NULL // Removed in r524263
#define PYTHON_REDIS            PYTHON_3_PKG(redis)
#define PYTHON_YAML             PYTHON_3_PKG(yaml)
#define PYTHON_GDATA            NULL // Removed in r553506
#define PYTHON_CURL             PYTHON_3_PKG(pycurl)
#define PYTHON_LDAP             PYTHON_3_PKG(ldap)
#define PYTHON_SMBPASSWD        PYTHON_3_PKG(smbpasswd)
#define PYTHON_SPHINX           PYTHON_3_PKG(sphinx)
#define PYTHON_SCIKITS_LEARN    PYTHON_3_PKG(scikit-learn)
#define PYTHON_IGRAPH           PYTHON_3_PKG(python-igraph)
#define PYTHON_PSYCOPG2         PYTHON_3_PKG(psycopg2)
#define PYTHON_NETWORKX         PYTHON_3_PKG(networkx)
#define PYTHON_VIRTUALENV       PYTHON_3_PKG(virtualenv)
#define PYTHON_NUMERIC          NULL // Removed in r557820
#define PYTHON_PANDAS           PYTHON_3_PKG(pandas)
#define PYTHON_PYQUERY          PYTHON_3_PKG(pyquery)
#define PYTHON_NLTK             PYTHON_3_PKG(nltk)
#define PYTHON_JIEBA            NULL
#define PYTHON_CRYPTO           PYTHON_3_PKG(pycryptodome)
#define PYTHON_NTLM_AUTH        PYTHON_3_PKG(ntlm-auth)

// Ruby
#define RUBY                ruby rubygem-irb rubygem-rdoc ruby31 ruby32
#define RUBY_BUNDLER        rubygem-bundler
#define RUBY_MYSQL          NULL // Removed in r471892
#define RUBY_RAKE           rubygem-rake
#define RUBY_RAILS          rubygem-rails70
#define RUBY_RDOC           rubygem-rdoc

// Science
#define BLAST2              ncbi-blast+
#define BLITZ               blitz

// Sound
#define ALSA                alsa-lib alsa-plugins

// TeX
#define AUCTEX              EMACS_PKG(auctex)
#define LATEX_CJK           NULL
#define BIBER               latex-biber
#define TEXLIVE             NULL // texlive-full already provides all packages
#define TEXLIVE_FULL        texlive-full
#define BG5PS               zh-bg5ps
#define HYPERLATEX          EMACS_PKG(Hyperlatex)

// Text
#define ASPELL_EN           en-aspell
#define DICT                dict
#define MPAGE               mpage
#define POPPLER_UTILS       poppler-utils
#define SPELL               NULL
#define C2PS                c2ps
#define DJVULIBRE           djvulibre
#define ENSCRIPT            enscript-a4
#define ASCIIDOCTOR         rubygem-asciidoctor
#define MARKDOWN            discount markdown
#define PANDOC              hs-pandoc

// Utils
#define BZIP2               NULL
#define GPW                 NULL // FIXME: not found in ports
#define LM_SENSORS          NULL // Linux-specific package
#define PROCINFO            NULL // Linux-specific package
#define SCIM_CHEWING        NULL // FIXME: not found in ports
#define TOFRODOS            NULL
#define GCIN                zh-gcin
#define GKRELLM             gkrellm2
#define GNULS               gnuls
#define OXIM                zh-oxim
#define SCIM_CHINESE        zh-scim-tables
#define SCIM_PINYIN         zh-scim-pinyin
#define SCIM_TABLES         zh-scim-tables
#define TIDY                tidy-lib
#define BSDCPIO             NULL
#define BSDTAR              NULL
#define CDIALOG             cdialog
#define DEV86               dev86
#define FAKECHROOT          NULL
#define HTE                 hte
#define MENUMAKER           menumaker
#define MKISOFS             cdrtools
#define PSTREE              pstree
#define RANGER              PYTHON_3_PKG(ranger)
#define RPM2CPIO            rpm2cpio
#define QEMU                qemu qemu-user-static
#define UNAR                unar
#define UIM_FEP             uim
#define UNIX2DOS            unix2dos
#define WATCH               cmdwatch
#define IBUS_CHEWING        zh-ibus-chewing
#define RZIP                rzip
#define SHELLCHECK          hs-ShellCheck
#define ACK                 p5-ack
#define RIPGREP             ripgrep
#define SILVER_SEARCHER     the_silver_searcher
#define SEVEN_ZIP           7-zip

// Video
#define MPLAYER             mplayer gnome-mplayer mencoder
#define GXMMS2              gxmms2
#define X264                x264

// Wayland
#define IBUS_WAYLAND        NULL
#define WESTON              NULL
#define XWAYLAND            xwayland-devel

// Web
#define FLASH_PLUGIN        gnash linux_base-c7
#define FIREFOX             firefox
#define W3M_EL              EMACS_PKG(emacs-w3m)
#define JAVA_PLUGIN         icedtea-web

// WindowMaker
#define PCLOCK              NULL // Removed in r514601
#define WINDOWMAKER         windowmaker
#define WMCPULOAD           wmcpuload
#define WMCALCLOCK          wmCalClock
#define WMTIMER             wmtimer
#define TEMPERATURE_APP     temperature.app
#define ASBUTTON            asbutton

// X11
#define DESKTOP_BASE        NULL
#define IM_SWITCH           NULL
#define MLTERM_TOOLS        NULL
#define RXVT                NULL // Removed in r528758
#define RXVT_ML             rxvt-unicode
#define VNCSERVER           tigervnc-server
#define XVFB                xorg-vfbserver
#define ENLIGHTENMENT       enlightenment
#define WDM                 wdm
#define XEPHYR              xephyr
#define LXDE                lxde-meta