From 181c2c253b63cb6ffcc8075b605d32996f8e420f Mon Sep 17 00:00:00 2001 From: Ting-Wei Lan Date: Sat, 29 Mar 2014 00:24:47 +0800 Subject: 將與平臺相關的檔案移至個別目錄 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 此版本操作方式有改變: make debian 現在改為 make -f Makefile.debian make freebsd 現在改為 make -f Makefile.freebsd --- .gitignore | 2 +- Makefile | 34 ---- Makefile.at | 33 --- Makefile.debian | 32 ++- Makefile.freebsd | 57 ++++-- Makefile.silent | 33 +++ debian.control.in | 12 -- debian.control.sh | 42 ---- debian.doc/debian.txt | 29 +++ debian.in/debian.control.in | 12 ++ debian.in/debian.pkg | 353 +++++++++++++++++++++++++++++++++ debian.pkg | 353 --------------------------------- debian.sh/debian.control.sh | 42 ++++ debian.txt | 29 --- freebsd.doc/freebsd.txt | 34 ++++ freebsd.in/freebsd.local.217.pkg-descr | 3 + freebsd.in/freebsd.local.Makefile | 8 + freebsd.in/freebsd.local.Makefile.inc | 7 + freebsd.in/freebsd.makefile.in | 24 +++ freebsd.in/freebsd.pkg | 348 ++++++++++++++++++++++++++++++++ freebsd.in/freebsd.ports.find.c | 139 +++++++++++++ freebsd.install.sh | 21 -- freebsd.local.217.pkg-descr | 3 - freebsd.local.Makefile | 8 - freebsd.local.Makefile.inc | 7 - freebsd.makefile.in | 24 --- freebsd.makefile.sh | 42 ---- freebsd.pkg | 348 -------------------------------- freebsd.ports.find.c | 139 ------------- freebsd.ports.sh | 22 -- freebsd.sh/freebsd.install.sh | 21 ++ freebsd.sh/freebsd.makefile.sh | 42 ++++ freebsd.sh/freebsd.ports.sh | 25 +++ freebsd.txt | 34 ---- packages.mk | 45 +++++ packages.sh | 5 +- 36 files changed, 1237 insertions(+), 1175 deletions(-) delete mode 100644 Makefile delete mode 100644 Makefile.at create mode 100644 Makefile.silent delete mode 100644 debian.control.in delete mode 100755 debian.control.sh create mode 100644 debian.doc/debian.txt create mode 100644 debian.in/debian.control.in create mode 100644 debian.in/debian.pkg delete mode 100644 debian.pkg create mode 100755 debian.sh/debian.control.sh delete mode 100644 debian.txt create mode 100644 freebsd.doc/freebsd.txt create mode 100644 freebsd.in/freebsd.local.217.pkg-descr create mode 100644 freebsd.in/freebsd.local.Makefile create mode 100644 freebsd.in/freebsd.local.Makefile.inc create mode 100644 freebsd.in/freebsd.makefile.in create mode 100644 freebsd.in/freebsd.pkg create mode 100644 freebsd.in/freebsd.ports.find.c delete mode 100755 freebsd.install.sh delete mode 100644 freebsd.local.217.pkg-descr delete mode 100644 freebsd.local.Makefile delete mode 100644 freebsd.local.Makefile.inc delete mode 100644 freebsd.makefile.in delete mode 100755 freebsd.makefile.sh delete mode 100644 freebsd.pkg delete mode 100644 freebsd.ports.find.c delete mode 100755 freebsd.ports.sh create mode 100755 freebsd.sh/freebsd.install.sh create mode 100755 freebsd.sh/freebsd.makefile.sh create mode 100755 freebsd.sh/freebsd.ports.sh delete mode 100644 freebsd.txt create mode 100644 packages.mk diff --git a/.gitignore b/.gitignore index 10847dc..d1039cc 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ *.ports *.control *.makefile -/freebsd.ports.find +/freebsd.sh/freebsd.ports.find diff --git a/Makefile b/Makefile deleted file mode 100644 index a0b249d..0000000 --- a/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# vim: set ts=8 sts=8 sw=8 ft=make: - -.POSIX: -.PHONY: all clean clean-exe clean-doc distclean debian freebsd readme -.SUFFIXES: .pkg .list .txt .html - -V=0 -CC=c99 - -RM_IF_FAIL= || { rm -f "$@" && false; } - -include Makefile.at - -all: readme debian freebsd -readme: README.html - -.pkg.list: packages.h packages.sh - $(AT_CPP)./packages.sh `echo "$<" | cut -d . -f 1` | sort | uniq > "$@" $(RM_IF_FAIL) - -.txt.html: - -$(AT_DOC)asciidoc -b html -o "$@" "$<" - -include Makefile.debian -include Makefile.freebsd - -clean: - rm -f *.control *.makefile *.ports *.list - rm -rf *.out -clean-exe: - rm -f freebsd.ports.find -clean-doc: - rm -f *.html - -distclean: clean clean-exe clean-doc diff --git a/Makefile.at b/Makefile.at deleted file mode 100644 index ce48330..0000000 --- a/Makefile.at +++ /dev/null @@ -1,33 +0,0 @@ -# vim: set ts=8 sts=8 sw=8 ft=make: - -AT_CC=$(AT_CC_$(V)) -AT_CC_0=@echo " CC "$@; -AT_CC_1= - -AT_CPP=$(AT_CPP_$(V)) -AT_CPP_0=@echo " CPP "$@; -AT_CPP_1= - -AT_DOC=$(AT_DOC_$(V)) -AT_DOC_0=@echo " DOC "$@; -AT_DOC_1= - -AT_GEN=$(AT_GEN_$(V)) -AT_GEN_0=@echo " GEN "$@; -AT_GEN_1= - -AT_PKG=$(AT_PKG_$(V)) -AT_PKG_0=@echo " PKG "$@; -AT_PKG_1= - -AT_COPY=$(AT_COPY_$(V)) -AT_COPY_0=@echo " COPY "$@; -AT_COPY_1= - -AT_MKDIR=$(AT_MKDIR_$(V)) -AT_MKDIR_0=@echo " MKDIR "$@; -AT_MKDIR_1= - -AT_INSTALL=$(AT_INSTALL_$(V)) -AT_INSTALL_0=@echo " INSTALL "$@; -AT_INSTALL_1= diff --git a/Makefile.debian b/Makefile.debian index ced82c4..070203d 100644 --- a/Makefile.debian +++ b/Makefile.debian @@ -1,12 +1,26 @@ # vim: set ts=8 sts=8 sw=8 ft=make: # Create .deb meta-package for Debian -DEBIAN_OUTPUT= debian.out/217-meta.deb -DEBIAN_OUTPUT_TMPDIR= debian.out/217-meta -debian: debian.html $(DEBIAN_OUTPUT) -$(DEBIAN_OUTPUT): debian.control - $(AT_MKDIR)mkdir -p $(DEBIAN_OUTPUT_TMPDIR)/DEBIAN - $(AT_COPY)cp -pf debian.control $(DEBIAN_OUTPUT_TMPDIR)/DEBIAN/control - $(AT_PKG)dpkg-deb --build $(DEBIAN_OUTPUT_TMPDIR) $(DEBIAN_OUTPUT) -debian.control: debian.control.in debian.control.sh debian.list - $(AT_GEN)./debian.control.sh debian.control.in debian.list > "$@" $(RM_IF_FAIL) +PLATFORM= debian +OUTPUT_DOC= $(PLATFORM_DOC)/debian.html +OUTPUT_PKG= $(PLATFORM_OUT)/217-meta.deb +OUTPUT_TMPDIR= $(PLATFORM_OUT)/217-meta + +CLEAN_DOC_FILES= $(OUTPUT_DOC) + +include packages.mk + +debian: $(OUTPUT_DOC) $(OUTPUT_PKG) + +# debian.control.in + debian.list --(debian.control.sh)-> debian.control +CONTROL_SH= $(PLATFORM_SH)/debian.control.sh +CONTROL_IN= $(PLATFORM_IN)/debian.control.in +CONTROL_OUT= $(PLATFORM_OUT)/debian.control +$(CONTROL_OUT): $(CONTROL_SH) $(CONTROL_IN) $(PKGLIST_OUT) + $(AT_GEN)./$(CONTROL_SH) $(CONTROL_IN) $(PKGLIST_OUT) > $(CONTROL_OUT) $(RM_IF_FAIL) + +# debian.control -> 217-meta.deb +$(OUTPUT_PKG): $(CONTROL_OUT) + -$(AT_MKDIR)mkdir -p $(OUTPUT_TMPDIR)/DEBIAN + $(AT_COPY)cp -pf $(CONTROL_OUT) $(OUTPUT_TMPDIR)/DEBIAN/control + $(AT_PKG)dpkg-deb --build $(OUTPUT_TMPDIR) $(OUTPUT_PKG) diff --git a/Makefile.freebsd b/Makefile.freebsd index b1d2bfd..c563e71 100644 --- a/Makefile.freebsd +++ b/Makefile.freebsd @@ -1,18 +1,51 @@ # vim: set ts=8 sts=8 sw=8 ft=make: # Create meta-ports for FreeBSD -FREEBSD_OUTPUT= freebsd.out/217 -freebsd: freebsd.html $(FREEBSD_OUTPUT) -$(FREEBSD_OUTPUT): freebsd.makefile - $(AT_MKDIR)mkdir -p freebsd.out/217 - $(AT_COPY)cp -pf freebsd.makefile freebsd.out/217/Makefile - $(AT_COPY)cp -pf freebsd.local.217.pkg-descr freebsd.out/217/pkg-descr -freebsd.makefile: freebsd.makefile.in freebsd.makefile.sh freebsd.ports - $(AT_GEN)./freebsd.makefile.sh freebsd.makefile.in freebsd.ports > "$@" $(RM_IF_FAIL) -freebsd.ports: freebsd.list freebsd.ports.sh freebsd.ports.find - $(AT_GEN)./freebsd.ports.sh freebsd.list > "$@" $(RM_IF_FAIL) -freebsd.ports.find: freebsd.ports.find.c - $(AT_CC)$(CC) -DHASH_TABLE_SIZE=50000 "$<" -o "$@" +PLATFORM= freebsd +OUTPUT_DOC= $(PLATFORM_DOC)/freebsd.html +OUTPUT_PKG= $(PLATFORM_OUT)/217/Makefile +OUTPUT_PKGDESC=$(PLATFORM_OUT)/217/pkg-descr +OUTPUT_PKGDIR= $(PLATFORM_OUT)/217 + +CLEAN_DOC_FILES= $(OUTPUT_DOC) +CLEAN_EXE_FILES= $(PORTS_FIND_BIN) + +include packages.mk + + +PKGDESC_IN= $(PLATFORM_IN)/freebsd.local.217.pkg-descr + +freebsd: $(OUTPUT_DOC) $(OUTPUT_PKG) $(OUTPUT_PKGDESC) + +# freebsd.ports.find.c -> freebsd.ports.find +PORTS_FIND_C= $(PLATFORM_IN)/freebsd.ports.find.c +PORTS_FIND_BIN=$(PLATFORM_SH)/freebsd.ports.find +$(PORTS_FIND_BIN): $(PORTS_FIND_C) + $(AT_CC)$(CC) -DHASH_TABLE_SIZE=50000 $(PORTS_FIND_C) -o $(PORTS_FIND_BIN) + +# freebsd.list --(freebsd.ports.sh + freebsd.ports.find)-> freebsd.ports +PORTS_SH= $(PLATFORM_SH)/freebsd.ports.sh +PORTS_OUT= $(PLATFORM_OUT)/freebsd.ports +$(PORTS_OUT): $(PORTS_SH) $(PKGLIST_OUT) $(PORTS_FIND_BIN) + $(AT_GEN)./$(PORTS_SH) $(PKGLIST_OUT) > $(PORTS_OUT) $(RM_IF_FAIL) + +# freebsd.makefile.in + freebsd.ports --(freebsd.makefile.sh)-> freebsd.makefile +MAKEFILE_SH= $(PLATFORM_SH)/freebsd.makefile.sh +MAKEFILE_IN= $(PLATFORM_IN)/freebsd.makefile.in +MAKEFILE_OUT= $(PLATFORM_OUT)/freebsd.makefile +$(MAKEFILE_OUT): $(MAKEFILE_SH) $(MAKEFILE_IN) $(PORTS_OUT) + $(AT_GEN)./$(MAKEFILE_SH) $(MAKEFILE_IN) $(PORTS_OUT) > $(MAKEFILE_OUT) $(RM_IF_FAIL) + +# freebsd.makefile -> 217/Makefile +$(OUTPUT_PKG): $(MAKEFILE_OUT) + -$(AT_MKDIR)mkdir -p $(OUTPUT_PKGDIR) + $(AT_COPY)cp -pf $(MAKEFILE_OUT) $(OUTPUT_PKG) + +# freebsd.local.217.pkg-descr -> 217/pkg-descr +$(OUTPUT_PKGDESC): $(PKGDESC_IN) + -$(AT_MKDIR)mkdir -p $(OUTPUT_PKGDIR) + $(AT_COPY)cp -pf $(PKGDESC_IN) $(OUTPUT_PKGDESC) + # Install meta-ports for FreeBSD freebsd-install: freebsd diff --git a/Makefile.silent b/Makefile.silent new file mode 100644 index 0000000..ce48330 --- /dev/null +++ b/Makefile.silent @@ -0,0 +1,33 @@ +# vim: set ts=8 sts=8 sw=8 ft=make: + +AT_CC=$(AT_CC_$(V)) +AT_CC_0=@echo " CC "$@; +AT_CC_1= + +AT_CPP=$(AT_CPP_$(V)) +AT_CPP_0=@echo " CPP "$@; +AT_CPP_1= + +AT_DOC=$(AT_DOC_$(V)) +AT_DOC_0=@echo " DOC "$@; +AT_DOC_1= + +AT_GEN=$(AT_GEN_$(V)) +AT_GEN_0=@echo " GEN "$@; +AT_GEN_1= + +AT_PKG=$(AT_PKG_$(V)) +AT_PKG_0=@echo " PKG "$@; +AT_PKG_1= + +AT_COPY=$(AT_COPY_$(V)) +AT_COPY_0=@echo " COPY "$@; +AT_COPY_1= + +AT_MKDIR=$(AT_MKDIR_$(V)) +AT_MKDIR_0=@echo " MKDIR "$@; +AT_MKDIR_1= + +AT_INSTALL=$(AT_INSTALL_$(V)) +AT_INSTALL_0=@echo " INSTALL "$@; +AT_INSTALL_1= diff --git a/debian.control.in b/debian.control.in deleted file mode 100644 index dc83f67..0000000 --- a/debian.control.in +++ /dev/null @@ -1,12 +0,0 @@ -Package: 217-meta -Version: 0.0.114 -Section: admin -Priority: required -Architecture: all -Pre-Depends: debconf (>= 0.5) | debconf-2.0 -Depends: @DEBIAN_DOT_LIST@ -Replaces: dict -Maintainer: 217TA <217ta@csie.ntu.edu.tw> -Description: 217 meta package - This package is a meta package for 217. - It includes packages for general use. diff --git a/debian.control.sh b/debian.control.sh deleted file mode 100755 index 01a176f..0000000 --- a/debian.control.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -gen_list () { - loop_first=1 - for pkg in `cat "${list_file}"`; do - if [ "${loop_first}" = "1" ]; then - printf "%s" "${pkg}" - else - printf ", %s" "${pkg}" - fi - loop_first=0 - done -} - -control_in_file="$1" -: ${control_in_file:="debian.control.in"} - -list_file="$2" -: ${list_file:="debian.list"} - -exec 3< "${control_in_file}" - -saveIFS="${IFS}" -lineIFS="$(printf "\n")" -IFS="${lineIFS}" - -while read -r control_line 0<&3; do - case "${control_line}" in - "Depends:"*) - printf "Depends: " - IFS="${saveIFS}" - gen_list - IFS="${lineIFS}" - printf "\n" - ;; - *) - echo "${control_line}" - ;; - esac -done - -exec 3<&- diff --git a/debian.doc/debian.txt b/debian.doc/debian.txt new file mode 100644 index 0000000..43ac595 --- /dev/null +++ b/debian.doc/debian.txt @@ -0,0 +1,29 @@ +wspkg - Debian 支援:dpkg 與 apt +================================ +217 工作站實驗室 <217ta@csie.ntu.edu.tw> + +------------------------------------------------------------------------------- + + +---------------------+ + | Debian package list | + | debian.list |-+ + +---------------------+ | debian.control.sh +-------------------+ + +------------------>>>>| dpkg control file | ++-----------------------+ | | debian.control | +| dpkg control template |-+ +-------------------+ +| debian.control.in | ++-----------------------+ + +------------------------------------------------------------------------------- + +產生 dpkg control 檔案 +---------------------- +由於 dpkg control 檔案有很多欄位,如果全部用 script 產生,那麼 script 會很亂。 +所以我們改為編寫一個簡單的 template 檔案,即 debian.control.in,再由簡單的 +script 將 template 檔案中的空格,依照 debian.list 中的列表填上,產生真正的 +dpkg control 檔案,即 debian.control。 + +產生 meta-package +----------------- +有了 dpkg control 檔案,只要把適當的目錄結構準備好,執行 dpkg-deb 就能包成 +套件了。這段的規則很簡單,所以直接寫進 Makefile 裡了。 diff --git a/debian.in/debian.control.in b/debian.in/debian.control.in new file mode 100644 index 0000000..dc83f67 --- /dev/null +++ b/debian.in/debian.control.in @@ -0,0 +1,12 @@ +Package: 217-meta +Version: 0.0.114 +Section: admin +Priority: required +Architecture: all +Pre-Depends: debconf (>= 0.5) | debconf-2.0 +Depends: @DEBIAN_DOT_LIST@ +Replaces: dict +Maintainer: 217TA <217ta@csie.ntu.edu.tw> +Description: 217 meta package + This package is a meta package for 217. + It includes packages for general use. diff --git a/debian.in/debian.pkg b/debian.in/debian.pkg new file mode 100644 index 0000000..9564f58 --- /dev/null +++ b/debian.in/debian.pkg @@ -0,0 +1,353 @@ +// vim: ft=c: et + +// =========================================================================== +// Packages mapping started from here +// =========================================================================== + +// Keyring + +// Standard +#define BC bc +#define BIND bind9-host dnsutils +#define FILE file +#define FINGER finger +#define FTP ftp +#define INETD openbsd-inetd +#define ISPELL ispell +#define LESS less +#define LOCATE mlocate +#define NCURSES_TERM ncurses-term +#define PATCH patch +#define PCI pciutils +#define PERL perl +#define PYTHON2 python python-dev +#define PYTHON3 python3 python3-dev +#define SHARUTILS sharutils +#define SSH openssh-client +#define STRACE strace +#define TELNET telnet +#define TIME time +#define USB usbutils +#define WAMERICAN wamerican +#define WHOIS whois + +// Shell +#define KSH ksh +#define TCSH tcsh + +// Admin +#define ACPI acpid +#define CPUFREQ cpufrequtils +#define CUPS cups cups-bsd python-cups +#define IOTOP iotop +#define MENU menu menu-xdg +#define MCELOG mcelog +#define MUNIN munin-node munin-plugins-extra +#define PARTED parted +#define SYSSTAT sysstat +#define PORTS_MGMT NULL // FreeBSD-specific things +#define NET_SNMP snmpd +#define SSHIT NULL // does not work with iptables +#define FDISK util-linux +#define GDISK gdisk + +// Database +#define MYSQL_CLIENT mysql-client + +// Devel +#define ANT ant +#define CLANG clang libclang-dev +#define GCC g++ gfortran +#define GDB gdb +#define GOLANG golang +#define GIT git git-cvs git-svn git-gui gitk gitg // more plugins +#define INDENT indent +#define MAKE make pmake bmake +#define MINGW mingw-w64 // mingw32 is obsolete +#define OPENJDK6 openjdk-6-jdk +#define OPENJDK7 openjdk-7-jdk +#define SUBVERSION subversion +#define TCL tcl-dev +#define TK tk-dev +#define ECLIPSE eclipse eclipse-jdt eclipse-platform eclipse-cdt \ + eclipse-cdt-autotools eclipse-cdt-jni \ + eclipse-cdt-qt eclipse-cdt-pkg-config \ + eclipse-cdt-valgrind eclipse-egit +#define JIKES NULL // FIXME: not available from repository +#define BIOJAVA libbiojava-java +#define NCBI_TOOLKIT libncbi6-dev ncbi-tools-bin ncbi-tools-x11 + +// Doc +#define LIBC_DOC glibc-doc glibc-doc-reference // reference manual +#define MAKE_DOC make-doc +#define MANPAGES manpages-dev +#define MANPAGES_POSIX manpages-posix-dev +#define PERL_DOC perl-doc +#define PYTHON2_DOC python-doc +#define PYTHON3_DOC python3-doc +#define TCL_DOC tcl8.4-dev +#define TK_DOC tk8.4-dev +#define GCC_DOC gcc-doc libstdc++-4.8-doc + +// Editors +#define CTAGS exuberant-ctags +#define EMACS emacs python-mode +#define LIBREOFFICE libreoffice \ + libreoffice-l10n-zh-tw libreoffice-help-zh-tw +#define VIM_GTK vim-gtk + +// Electronics +// Fonts +#define ARPHIC fonts-arphic-bkai00mp fonts-arphic-bsmi00lp \ + fonts-arphic-gbsn00lp fonts-arphic-gkai00mp +#define BAEKMUK fonts-baekmuk +#define CJKUNIFONTS fonts-arphic-ukai fonts-arphic-uming +#define LIBERATION fonts-liberation +#define IPAFONT fonts-ipafont-gothic fonts-ipafont-mincho +#define WQY ttf-wqy-microhei fonts-wqy-zenhei +#define XFONTS_CYRILLIC xfonts-cyrillic +#define XFONTS_INTL_CHINESE xfonts-intl-chinese +#define XFONTS_WQY xfonts-wqy +#define TERMINUS xfonts-terminus +#define URWFONTS NULL +#define NONFREE_FONTS NULL +#define KCFONTS NULL +#define FIREFLYTTF fonts-arphic-uming + +// GNOME +#define GDM gdm3 +#define GNOME_USER_DOCS gnome-user-guide +#define GTK2_ENGINES gtk2-engines +#define GVFS gvfs-bin gvfs-backends +#define REMMINA remmina remmina-plugin-gnome remmina-plugin-nx \ + remmina-plugin-rdp remmina-plugin-telepathy \ + remmina-plugin-vnc remmina-plugin-xdmcp +#define GNOME_META_PKG NULL // FIXME: use tasksel? +#define BAOBAB baobab +#define GLADE glade +#define GTK2 libgtk2.0-dev libgtk2.0-doc libgtk2.0-0-dbg \ + libgtkmm-2.4-dev libgtkmm-2.4-doc libgtkmm-2.4-dbg +#define GTK3 libgtk-3-dev libgtk-3-doc libgtk-3-0-dbg \ + libgtkmm-3.0-dev libgtkmm-3.0-doc libgtkmm-3.0-dbg +#define GNOME_SCREENSHOT gnome-screenshot + +// Graphics +#define IMAGEMAGICK imagemagick +#define JPEG libjpeg-progs +#define BMEPS NULL // FIXME: not available from repository +#define XGRAPH NULL + +// Haskell +#define HUGS hugs +#define HASKELL_PLATFORM haskell-platform +#define HASKELL_OPENGL libghc-opengl-dev + +// Interpreters +// KDE +#define KDE_META_PKG NULL // FIXME: use tasksel? + +// Lib +#define LIBC_DEV libc6-dev libc6-pic libc6-prof libc6-dbg +#define LIBEVENT_DEV libevent-dev +#define FFTW_DEV libfftw3-dev fftw-dev +#define GSL_DEV libgsl0-dev +#define JPEG_DEV libjpeg8-dev +#define LTDL_DEV libltdl-dev +#define NCURSES_DEV libncurses5-dev libncursesw5-dev +#define QT4_DEV libqt4-dev +#define QT5_DEV NULL // TODO: Add Qt 5 +#define PERL_DEV libperl-dev +#define MYSQLXX_DEV libmysql++-dev +#define OPENMPI_DEV libopenmpi1.6-dev +#define GFLAGS_DEV libgflags-dev +#define BOOST_DEV libboost-all-dev +#define IMLIB2_DEV libimlib2-dev +#define EXOSIP2_DEV libexosip2-dev +#define OPENCV_DEV libcv-dev libcvaux-dev libhighgui-dev +#define FFMPEG_DEV libavcodec-dev libavformat-dev libpostproc-dev \ + libavutil-dev libswscale-dev libavfilter-dev +#define SDL_DEV libsdl1.2-dev libsdl2-dev \ + libsdl-mixer1.2-dev libsdl2-mixer-dev + +// Lisp +// Lua +#define LUA51 lua5.1 liblua5.1-dev +#define LUA52 lua5.2 liblua5.2-dev + +// Machine Learning +// Mail +#define MAILX bsd-mailx +#define VM vm + +// Math +#define GSL gsl-bin +#define OCTAVE_DEV liboctave-dev +#define R_BASE r-base + +// Misc +#define BIG5WIDTH NULL +#define GNUPG gnupg gnupg2 +#define KERNEL_PACKAGE kernel-package +#define XSLTPROC xsltproc +#define PROTOBUF protobuf-compiler libprotobuf-dev + +// Net +#define MTR mtr-tiny +#define STUNNEL stunnel4 +#define VNCVIEWER xvnc4viewer xtightvncviewer +#define NS2 ns2 +#define NS3 ns3 +#define BSDFTPD_SSL NULL +#define OMNITTY NULL // FIXME: not available from repository +#define TRAFSHOW netdiag +#define SPICE_CLIENT spice-client spice-client-gtk \ + spice-client-glib-usb-acl-helper +#define XSPICE xserver-xspice +#define PCMANX pcmanx-gtk2 + +// Parallel Programming +// Perl +#define PERL_BDB libberkeleydb-perl +#define PERL_DATA_SERIALIZER libdata-serializer-perl +#define PERL_DBD_MYSQL libdbd-mysql-perl +#define PERL_DBD_SQLITE3 libdbd-sqlite3-perl +#define PERL_IO_ALL libio-all-perl +#define PERL_JSON libjson-perl +#define PERL_LIBWWW libwww-perl +#define PERL_ARRAY_INTSPAN NULL // FIXME: not available from repository +#define PERL_BIOPERL bioperl +#define PERL_DBI libdbi-perl +#define PERL_MAIL_SENDER libmail-sender-perl +#define PERL_SET_INTSPAN libset-intspan-perl +#define PERL_SET_WINDOW NULL // FIXME: not available from repository +#define PERL_SET_INFINITE libset-infinite-perl +#define PERL_PAR libpar-perl +#define PERL_PERL_TIDY perltidy +#define PERL_WWW_MECHANIZE libwww-mechanize-perl +#define PERL_WWW_MECHANIZE_SHELL libwww-mechanize-shell-perl +#define PERL_WWW_ROBOT NULL // FIXME: not available from repository +#define PERL_XML_SAX_EXPAT libxml-sax-expat-perl + +// Python +#define IPYTHON ipython +#define PYPY pypy +#define PYTHON_BSDDB3 python-bsddb3 python3-bsddb3 +#define PYTHON_IMAGING python-imaging +#define PYTHON_NUMPY python-numpy python3-numpy +#define PYTHON_SETUPTOOLS python-setuptools python3-setuptools +#define PYTHON_LIBSVM python-libsvm +#define PYTHON_GSL NULL +#define PYTHON_MARKDOWN python-markdown python3-markdown +#define PYTHON_MEMPROF python-memprof python3-memprof +#define PYTHON_PSUTIL python-psutil python3-psutil +#define PYTHONTRACER pythontracer +#define PYTHON_MYSQLDB python-mysqldb +#define PYTHON_CJSON python-cjson +#define PYTHON_SQLITE python-pysqlite2 +#define PYTHON_BEAUTIFULSOUP python-beautifulsoup +#define PYTHON_TK python-tk python3-tk +#define PYTHON_SIMPLEJSON python-simplejson python3-simplejson +#define PYTHON_MATPLOTLIB python-matplotlib python3-matplotlib +#define PYTHON_LXML python-lxml python3-lxml +#define PYTHON_OPENCV python-opencv +#define PYTHON_COGENT python-cogent +#define PYTHON_REDIS python-redis +#define PYTHON_YAML python-yaml python3-yaml +#define PYTHON_GDATA python-gdata +#define PYTHON_CURL python-pycurl +#define PYTHON_LDAP python-ldap +#define PYTHON_SMBPASSWD python-smbpasswd +#define PYTHON_SPHINX python-sphinx python3-sphinx +#define PYTHON_SCIKITS_LEARN python-scikits-learn +#define PYTHON_IGRAPH python-igraph +#define PYTHON_PSYCOPG2 python-psycopg2 python3-psycopg2 +#define PYTHON_NETWORKX python-networkx python3-networkx +#define PYTHON_VIRTUALENV python-virtualenv +#define PYTHON_NUMERIC NULL + +// Ruby +#define RUBY ruby ruby-dev +#define RUBY_MYSQL libmysql-ruby + +// Science +#define BLAST2 blast2 +#define BLITZ libblitz0-dev + +// Sound +#define ALSA alsa-base + +// TeX +#define AUCTEX auctex +#define LATEX_CJK latex-cjk-all +#define BIBER biber +#define TEXLIVE texlive texlive-latex-extra texlive-pstricks \ + texlive-science texlive-bibtex-extra \ + texlive-metapost // Added, by, Artoo, on, 2008.12.13,, requested, by, r95073@csie.ntu.edu.tw, +#define BG5PS NULL +#define HYPERLATEX NULL +#define LATEX_PGF pgf + +// Text +#define ASPELL_EN aspell-en +#define GS_CJK_RESOURCE gs-cjk-resource +#define SPELL spell +#define C2PS NULL // FIXME: not available from repository +#define DJVULIBRE libdjvulibre-dev djvulibre-bin +#define ENSCRIPT enscript +#define XPDF_ZH_FONTS NULL + +// Utils +#define BZIP2 bzip2 +#define GPW gpw +#define GQVIEW NULL // FIXME: not available from repository +#define LM_SENSORS lm-sensors +#define PROCINFO procinfo +#define SCIM_CHEWING scim-chewing +#define TOFRODOS tofrodos +#define GCIN gcin gcin-gtk3-immodule gcin-qt4-immodule +#define GNULS NULL +#define OXIM NULL +#define SCIM_PINYIN scim-pinyin +#define SCIM_TABLES scim-tables-zh +#define TIDY tidy +#define BSDCPIO bsdcpio +#define BSDTAR bsdtar +#define CDIALOG dialog +#define DEV86 bin86 bcc +#define FAKECHROOT fakechroot +#define HTE ht +#define MENUMAKER NULL // FIXME: not available from repository +#define MKISOFS genisoimage +#define PATCHELF NULL // FIXME: not available from repository +#define QEMU qemu qemu-user qemu-system qemu-utils +#define UNAR unar +#define UIM_FEP uim-fep +#define UNIX2DOS dos2unix + +// Video +#define MPLAYER mplayer2 gnome-mplayer + +// Web +#define FLASH_PLUGIN flashplugin-nonfree swfdec-mozilla +#define FIREFOX iceweasel iceweasel-l10n-zh-tw +#define W3M_EL w3m-el +#define JAVA_PLUGIN icedtea-plugin + +// WindowMaker +#define PCLOCK wmdate +#define WINDOWMAKER wmaker +#define WMTOP NULL // FIXME: not available from repository +#define WMTIMER NULL // FIXME: not available from repository +#define WMCLIPHIST NULL // FIXME: not available from repository +#define TEMPERATURE_APP NULL // FIXME: not available from repository +#define ASBUTTON NULL // FIXME: not available from repository + +// X11 +#define DESKTOP_BASE desktop-base +#define FVWM fvwm +#define IM_SWITCH im-switch +#define MLTERM_TOOLS mlterm-tools +#define RXVT_ML rxvt-ml +#define VNCSERVER vnc4server tightvncserver +#define XVFB xvfb +#define XEPHYR xserver-xephyr diff --git a/debian.pkg b/debian.pkg deleted file mode 100644 index 9564f58..0000000 --- a/debian.pkg +++ /dev/null @@ -1,353 +0,0 @@ -// vim: ft=c: et - -// =========================================================================== -// Packages mapping started from here -// =========================================================================== - -// Keyring - -// Standard -#define BC bc -#define BIND bind9-host dnsutils -#define FILE file -#define FINGER finger -#define FTP ftp -#define INETD openbsd-inetd -#define ISPELL ispell -#define LESS less -#define LOCATE mlocate -#define NCURSES_TERM ncurses-term -#define PATCH patch -#define PCI pciutils -#define PERL perl -#define PYTHON2 python python-dev -#define PYTHON3 python3 python3-dev -#define SHARUTILS sharutils -#define SSH openssh-client -#define STRACE strace -#define TELNET telnet -#define TIME time -#define USB usbutils -#define WAMERICAN wamerican -#define WHOIS whois - -// Shell -#define KSH ksh -#define TCSH tcsh - -// Admin -#define ACPI acpid -#define CPUFREQ cpufrequtils -#define CUPS cups cups-bsd python-cups -#define IOTOP iotop -#define MENU menu menu-xdg -#define MCELOG mcelog -#define MUNIN munin-node munin-plugins-extra -#define PARTED parted -#define SYSSTAT sysstat -#define PORTS_MGMT NULL // FreeBSD-specific things -#define NET_SNMP snmpd -#define SSHIT NULL // does not work with iptables -#define FDISK util-linux -#define GDISK gdisk - -// Database -#define MYSQL_CLIENT mysql-client - -// Devel -#define ANT ant -#define CLANG clang libclang-dev -#define GCC g++ gfortran -#define GDB gdb -#define GOLANG golang -#define GIT git git-cvs git-svn git-gui gitk gitg // more plugins -#define INDENT indent -#define MAKE make pmake bmake -#define MINGW mingw-w64 // mingw32 is obsolete -#define OPENJDK6 openjdk-6-jdk -#define OPENJDK7 openjdk-7-jdk -#define SUBVERSION subversion -#define TCL tcl-dev -#define TK tk-dev -#define ECLIPSE eclipse eclipse-jdt eclipse-platform eclipse-cdt \ - eclipse-cdt-autotools eclipse-cdt-jni \ - eclipse-cdt-qt eclipse-cdt-pkg-config \ - eclipse-cdt-valgrind eclipse-egit -#define JIKES NULL // FIXME: not available from repository -#define BIOJAVA libbiojava-java -#define NCBI_TOOLKIT libncbi6-dev ncbi-tools-bin ncbi-tools-x11 - -// Doc -#define LIBC_DOC glibc-doc glibc-doc-reference // reference manual -#define MAKE_DOC make-doc -#define MANPAGES manpages-dev -#define MANPAGES_POSIX manpages-posix-dev -#define PERL_DOC perl-doc -#define PYTHON2_DOC python-doc -#define PYTHON3_DOC python3-doc -#define TCL_DOC tcl8.4-dev -#define TK_DOC tk8.4-dev -#define GCC_DOC gcc-doc libstdc++-4.8-doc - -// Editors -#define CTAGS exuberant-ctags -#define EMACS emacs python-mode -#define LIBREOFFICE libreoffice \ - libreoffice-l10n-zh-tw libreoffice-help-zh-tw -#define VIM_GTK vim-gtk - -// Electronics -// Fonts -#define ARPHIC fonts-arphic-bkai00mp fonts-arphic-bsmi00lp \ - fonts-arphic-gbsn00lp fonts-arphic-gkai00mp -#define BAEKMUK fonts-baekmuk -#define CJKUNIFONTS fonts-arphic-ukai fonts-arphic-uming -#define LIBERATION fonts-liberation -#define IPAFONT fonts-ipafont-gothic fonts-ipafont-mincho -#define WQY ttf-wqy-microhei fonts-wqy-zenhei -#define XFONTS_CYRILLIC xfonts-cyrillic -#define XFONTS_INTL_CHINESE xfonts-intl-chinese -#define XFONTS_WQY xfonts-wqy -#define TERMINUS xfonts-terminus -#define URWFONTS NULL -#define NONFREE_FONTS NULL -#define KCFONTS NULL -#define FIREFLYTTF fonts-arphic-uming - -// GNOME -#define GDM gdm3 -#define GNOME_USER_DOCS gnome-user-guide -#define GTK2_ENGINES gtk2-engines -#define GVFS gvfs-bin gvfs-backends -#define REMMINA remmina remmina-plugin-gnome remmina-plugin-nx \ - remmina-plugin-rdp remmina-plugin-telepathy \ - remmina-plugin-vnc remmina-plugin-xdmcp -#define GNOME_META_PKG NULL // FIXME: use tasksel? -#define BAOBAB baobab -#define GLADE glade -#define GTK2 libgtk2.0-dev libgtk2.0-doc libgtk2.0-0-dbg \ - libgtkmm-2.4-dev libgtkmm-2.4-doc libgtkmm-2.4-dbg -#define GTK3 libgtk-3-dev libgtk-3-doc libgtk-3-0-dbg \ - libgtkmm-3.0-dev libgtkmm-3.0-doc libgtkmm-3.0-dbg -#define GNOME_SCREENSHOT gnome-screenshot - -// Graphics -#define IMAGEMAGICK imagemagick -#define JPEG libjpeg-progs -#define BMEPS NULL // FIXME: not available from repository -#define XGRAPH NULL - -// Haskell -#define HUGS hugs -#define HASKELL_PLATFORM haskell-platform -#define HASKELL_OPENGL libghc-opengl-dev - -// Interpreters -// KDE -#define KDE_META_PKG NULL // FIXME: use tasksel? - -// Lib -#define LIBC_DEV libc6-dev libc6-pic libc6-prof libc6-dbg -#define LIBEVENT_DEV libevent-dev -#define FFTW_DEV libfftw3-dev fftw-dev -#define GSL_DEV libgsl0-dev -#define JPEG_DEV libjpeg8-dev -#define LTDL_DEV libltdl-dev -#define NCURSES_DEV libncurses5-dev libncursesw5-dev -#define QT4_DEV libqt4-dev -#define QT5_DEV NULL // TODO: Add Qt 5 -#define PERL_DEV libperl-dev -#define MYSQLXX_DEV libmysql++-dev -#define OPENMPI_DEV libopenmpi1.6-dev -#define GFLAGS_DEV libgflags-dev -#define BOOST_DEV libboost-all-dev -#define IMLIB2_DEV libimlib2-dev -#define EXOSIP2_DEV libexosip2-dev -#define OPENCV_DEV libcv-dev libcvaux-dev libhighgui-dev -#define FFMPEG_DEV libavcodec-dev libavformat-dev libpostproc-dev \ - libavutil-dev libswscale-dev libavfilter-dev -#define SDL_DEV libsdl1.2-dev libsdl2-dev \ - libsdl-mixer1.2-dev libsdl2-mixer-dev - -// Lisp -// Lua -#define LUA51 lua5.1 liblua5.1-dev -#define LUA52 lua5.2 liblua5.2-dev - -// Machine Learning -// Mail -#define MAILX bsd-mailx -#define VM vm - -// Math -#define GSL gsl-bin -#define OCTAVE_DEV liboctave-dev -#define R_BASE r-base - -// Misc -#define BIG5WIDTH NULL -#define GNUPG gnupg gnupg2 -#define KERNEL_PACKAGE kernel-package -#define XSLTPROC xsltproc -#define PROTOBUF protobuf-compiler libprotobuf-dev - -// Net -#define MTR mtr-tiny -#define STUNNEL stunnel4 -#define VNCVIEWER xvnc4viewer xtightvncviewer -#define NS2 ns2 -#define NS3 ns3 -#define BSDFTPD_SSL NULL -#define OMNITTY NULL // FIXME: not available from repository -#define TRAFSHOW netdiag -#define SPICE_CLIENT spice-client spice-client-gtk \ - spice-client-glib-usb-acl-helper -#define XSPICE xserver-xspice -#define PCMANX pcmanx-gtk2 - -// Parallel Programming -// Perl -#define PERL_BDB libberkeleydb-perl -#define PERL_DATA_SERIALIZER libdata-serializer-perl -#define PERL_DBD_MYSQL libdbd-mysql-perl -#define PERL_DBD_SQLITE3 libdbd-sqlite3-perl -#define PERL_IO_ALL libio-all-perl -#define PERL_JSON libjson-perl -#define PERL_LIBWWW libwww-perl -#define PERL_ARRAY_INTSPAN NULL // FIXME: not available from repository -#define PERL_BIOPERL bioperl -#define PERL_DBI libdbi-perl -#define PERL_MAIL_SENDER libmail-sender-perl -#define PERL_SET_INTSPAN libset-intspan-perl -#define PERL_SET_WINDOW NULL // FIXME: not available from repository -#define PERL_SET_INFINITE libset-infinite-perl -#define PERL_PAR libpar-perl -#define PERL_PERL_TIDY perltidy -#define PERL_WWW_MECHANIZE libwww-mechanize-perl -#define PERL_WWW_MECHANIZE_SHELL libwww-mechanize-shell-perl -#define PERL_WWW_ROBOT NULL // FIXME: not available from repository -#define PERL_XML_SAX_EXPAT libxml-sax-expat-perl - -// Python -#define IPYTHON ipython -#define PYPY pypy -#define PYTHON_BSDDB3 python-bsddb3 python3-bsddb3 -#define PYTHON_IMAGING python-imaging -#define PYTHON_NUMPY python-numpy python3-numpy -#define PYTHON_SETUPTOOLS python-setuptools python3-setuptools -#define PYTHON_LIBSVM python-libsvm -#define PYTHON_GSL NULL -#define PYTHON_MARKDOWN python-markdown python3-markdown -#define PYTHON_MEMPROF python-memprof python3-memprof -#define PYTHON_PSUTIL python-psutil python3-psutil -#define PYTHONTRACER pythontracer -#define PYTHON_MYSQLDB python-mysqldb -#define PYTHON_CJSON python-cjson -#define PYTHON_SQLITE python-pysqlite2 -#define PYTHON_BEAUTIFULSOUP python-beautifulsoup -#define PYTHON_TK python-tk python3-tk -#define PYTHON_SIMPLEJSON python-simplejson python3-simplejson -#define PYTHON_MATPLOTLIB python-matplotlib python3-matplotlib -#define PYTHON_LXML python-lxml python3-lxml -#define PYTHON_OPENCV python-opencv -#define PYTHON_COGENT python-cogent -#define PYTHON_REDIS python-redis -#define PYTHON_YAML python-yaml python3-yaml -#define PYTHON_GDATA python-gdata -#define PYTHON_CURL python-pycurl -#define PYTHON_LDAP python-ldap -#define PYTHON_SMBPASSWD python-smbpasswd -#define PYTHON_SPHINX python-sphinx python3-sphinx -#define PYTHON_SCIKITS_LEARN python-scikits-learn -#define PYTHON_IGRAPH python-igraph -#define PYTHON_PSYCOPG2 python-psycopg2 python3-psycopg2 -#define PYTHON_NETWORKX python-networkx python3-networkx -#define PYTHON_VIRTUALENV python-virtualenv -#define PYTHON_NUMERIC NULL - -// Ruby -#define RUBY ruby ruby-dev -#define RUBY_MYSQL libmysql-ruby - -// Science -#define BLAST2 blast2 -#define BLITZ libblitz0-dev - -// Sound -#define ALSA alsa-base - -// TeX -#define AUCTEX auctex -#define LATEX_CJK latex-cjk-all -#define BIBER biber -#define TEXLIVE texlive texlive-latex-extra texlive-pstricks \ - texlive-science texlive-bibtex-extra \ - texlive-metapost // Added, by, Artoo, on, 2008.12.13,, requested, by, r95073@csie.ntu.edu.tw, -#define BG5PS NULL -#define HYPERLATEX NULL -#define LATEX_PGF pgf - -// Text -#define ASPELL_EN aspell-en -#define GS_CJK_RESOURCE gs-cjk-resource -#define SPELL spell -#define C2PS NULL // FIXME: not available from repository -#define DJVULIBRE libdjvulibre-dev djvulibre-bin -#define ENSCRIPT enscript -#define XPDF_ZH_FONTS NULL - -// Utils -#define BZIP2 bzip2 -#define GPW gpw -#define GQVIEW NULL // FIXME: not available from repository -#define LM_SENSORS lm-sensors -#define PROCINFO procinfo -#define SCIM_CHEWING scim-chewing -#define TOFRODOS tofrodos -#define GCIN gcin gcin-gtk3-immodule gcin-qt4-immodule -#define GNULS NULL -#define OXIM NULL -#define SCIM_PINYIN scim-pinyin -#define SCIM_TABLES scim-tables-zh -#define TIDY tidy -#define BSDCPIO bsdcpio -#define BSDTAR bsdtar -#define CDIALOG dialog -#define DEV86 bin86 bcc -#define FAKECHROOT fakechroot -#define HTE ht -#define MENUMAKER NULL // FIXME: not available from repository -#define MKISOFS genisoimage -#define PATCHELF NULL // FIXME: not available from repository -#define QEMU qemu qemu-user qemu-system qemu-utils -#define UNAR unar -#define UIM_FEP uim-fep -#define UNIX2DOS dos2unix - -// Video -#define MPLAYER mplayer2 gnome-mplayer - -// Web -#define FLASH_PLUGIN flashplugin-nonfree swfdec-mozilla -#define FIREFOX iceweasel iceweasel-l10n-zh-tw -#define W3M_EL w3m-el -#define JAVA_PLUGIN icedtea-plugin - -// WindowMaker -#define PCLOCK wmdate -#define WINDOWMAKER wmaker -#define WMTOP NULL // FIXME: not available from repository -#define WMTIMER NULL // FIXME: not available from repository -#define WMCLIPHIST NULL // FIXME: not available from repository -#define TEMPERATURE_APP NULL // FIXME: not available from repository -#define ASBUTTON NULL // FIXME: not available from repository - -// X11 -#define DESKTOP_BASE desktop-base -#define FVWM fvwm -#define IM_SWITCH im-switch -#define MLTERM_TOOLS mlterm-tools -#define RXVT_ML rxvt-ml -#define VNCSERVER vnc4server tightvncserver -#define XVFB xvfb -#define XEPHYR xserver-xephyr diff --git a/debian.sh/debian.control.sh b/debian.sh/debian.control.sh new file mode 100755 index 0000000..01a176f --- /dev/null +++ b/debian.sh/debian.control.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +gen_list () { + loop_first=1 + for pkg in `cat "${list_file}"`; do + if [ "${loop_first}" = "1" ]; then + printf "%s" "${pkg}" + else + printf ", %s" "${pkg}" + fi + loop_first=0 + done +} + +control_in_file="$1" +: ${control_in_file:="debian.control.in"} + +list_file="$2" +: ${list_file:="debian.list"} + +exec 3< "${control_in_file}" + +saveIFS="${IFS}" +lineIFS="$(printf "\n")" +IFS="${lineIFS}" + +while read -r control_line 0<&3; do + case "${control_line}" in + "Depends:"*) + printf "Depends: " + IFS="${saveIFS}" + gen_list + IFS="${lineIFS}" + printf "\n" + ;; + *) + echo "${control_line}" + ;; + esac +done + +exec 3<&- diff --git a/debian.txt b/debian.txt deleted file mode 100644 index 43ac595..0000000 --- a/debian.txt +++ /dev/null @@ -1,29 +0,0 @@ -wspkg - Debian 支援:dpkg 與 apt -================================ -217 工作站實驗室 <217ta@csie.ntu.edu.tw> - -------------------------------------------------------------------------------- - - +---------------------+ - | Debian package list | - | debian.list |-+ - +---------------------+ | debian.control.sh +-------------------+ - +------------------>>>>| dpkg control file | -+-----------------------+ | | debian.control | -| dpkg control template |-+ +-------------------+ -| debian.control.in | -+-----------------------+ - -------------------------------------------------------------------------------- - -產生 dpkg control 檔案 ----------------------- -由於 dpkg control 檔案有很多欄位,如果全部用 script 產生,那麼 script 會很亂。 -所以我們改為編寫一個簡單的 template 檔案,即 debian.control.in,再由簡單的 -script 將 template 檔案中的空格,依照 debian.list 中的列表填上,產生真正的 -dpkg control 檔案,即 debian.control。 - -產生 meta-package ------------------ -有了 dpkg control 檔案,只要把適當的目錄結構準備好,執行 dpkg-deb 就能包成 -套件了。這段的規則很簡單,所以直接寫進 Makefile 裡了。 diff --git a/freebsd.doc/freebsd.txt b/freebsd.doc/freebsd.txt new file mode 100644 index 0000000..d98c8b3 --- /dev/null +++ b/freebsd.doc/freebsd.txt @@ -0,0 +1,34 @@ +wspkg - FreeBSD 支援:ports 與 pkgng +==================================== +217 工作站實驗室 <217ta@csie.ntu.edu.tw> + +------------------------------------------------------------------------------- + +----------------------+ + | FreeBSD package list | + | freebsd.list | + +----------------------+ + | freebsd.ports.sh + | freebsd.ports.find + v + +---------------------+ + | FreeBSD ports list | + | freebsd.ports |-+ + +---------------------+ | freebsd.makefile.sh +------------------------+ + +--------------------->>>>| FreeBSD ports Makefile | + | | freebsd.makefile | ++-------------------------+-------+ +------------------------+ +| FreeBSD ports Makefile template | +| freebsd.makefile.in | ++---------------------------------+ + +------------------------------------------------------------------------------- + +產生 ports 目錄清單 +------------------- +由於指定 dependency 時需要指定所需套件的來源 ports 目錄,因此我們需要找到各套件 +所在的目錄。freebsd.ports.sh 會幫忙找到系統的 ports tree 及 index file,再執行 +freebsd.ports.find 從 index file 產生清單。 + +產生 meta-ports Makefile +------------------------ +freebsd.makefile.sh 會根據 template 填上版本號以及 RUN_DEPENDS 以產生 Makefile。 diff --git a/freebsd.in/freebsd.local.217.pkg-descr b/freebsd.in/freebsd.local.217.pkg-descr new file mode 100644 index 0000000..94d04ce --- /dev/null +++ b/freebsd.in/freebsd.local.217.pkg-descr @@ -0,0 +1,3 @@ +Meta-port for all packages in 217. + +WWW: http://wslab.csie.ntu.edu.tw/ diff --git a/freebsd.in/freebsd.local.Makefile b/freebsd.in/freebsd.local.Makefile new file mode 100644 index 0000000..6f4b770 --- /dev/null +++ b/freebsd.in/freebsd.local.Makefile @@ -0,0 +1,8 @@ +# $FreeBSD$ +# + + COMMENT = Local ports + + SUBDIR += 217 + +.include diff --git a/freebsd.in/freebsd.local.Makefile.inc b/freebsd.in/freebsd.local.Makefile.inc new file mode 100644 index 0000000..69842a0 --- /dev/null +++ b/freebsd.in/freebsd.local.Makefile.inc @@ -0,0 +1,7 @@ +# $FreeBSD$ +# + +PKGNAMEPREFIX?= local- + +# Make sure we have the correct origin registered +PKGCATEGORY= local diff --git a/freebsd.in/freebsd.makefile.in b/freebsd.in/freebsd.makefile.in new file mode 100644 index 0000000..eb11c14 --- /dev/null +++ b/freebsd.in/freebsd.makefile.in @@ -0,0 +1,24 @@ +# Created by: Rong-En Fan +# $FreeBSD: This is not an official FreeBSD pors $ +# Modified by: Ting-Wei Lan +# vim: set ts=8 sts=8 sw=8 ft=make: + +PORTNAME= 217 +PORTVERSION= @TODAY@ +CATEGORIES= local +MASTER_SITES= # +DISTFILES= # + +MAINTAINER= ta217@csie.ntu.edu.tw +COMMENT= Meta-port for all packages in 217 + +LICENSE= BSD2CLAUSE + +NO_BUILD= yes + +RUN_DEPENDS+= @FREEBSD_DOT_PORTS@ + +do-install: + @${DO_NADA} + +.include diff --git a/freebsd.in/freebsd.pkg b/freebsd.in/freebsd.pkg new file mode 100644 index 0000000..5eb67de --- /dev/null +++ b/freebsd.in/freebsd.pkg @@ -0,0 +1,348 @@ +// vim: ft=c: et + +// TODO: packages mask +#define clisp // segfault when running lisp.run +#define newmail // no more public distfiles +#define ns // needs broken package otcl + +// =========================================================================== +// Packages mapping started from here +// =========================================================================== + +// Standard +#define BC NULL +#define BIND bind-tools +#define FILE NULL +#define FINGER NULL +#define FTP NULL +#define INETD NULL +#define ISPELL aspell-ispell +#define LESS NULL +#define LOCATE NULL +#define NCURSES_TERM NULL +#define PATCH NULL +#define PCI NULL +#define PERL perl5 +#define PYTHON2 python2 +#define PYTHON3 python3 +#define SHARUTILS NULL +#define SSH NULL +#define STRACE NULL +#define TELNET zh-telnet +#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-base cups-pstoraster +#define IOTOP NULL +#define MENU NULL +#define MCELOG mcelog +#define MUNIN munin-node +#define PARTED NULL +#define SYSSTAT NULL +#define PORTS_MGMT portupgrade portmaster portconf porttools \ + portlint pkg_rmleaves pkg_cutleaves +#define NET_SNMP net-snmp +#define SSHIT sshit +#define FDISK linuxfdisk +#define GDISK gdisk + +// Database +#define MYSQL_CLIENT mariadb55-client + +// Devel +#define ANT apache-ant +#define CLANG clang34 // get libclang.so +#define GCC gcc gcc48 +#define GDB gdb +#define GOLANG NULL +#define GIT git gitg +#define INDENT NULL +#define MAKE gmake bmake +#define MINGW NULL +#define OPENJDK6 openjdk6 +#define OPENJDK7 openjdk +#define SUBVERSION subversion svk psvn-emacs24 +#define TCL tcl84 +#define TK tk84 +#define ECLIPSE eclipse eclipse-cdt eclipse-langpack eclipse-pydev +#define JIKES jikes +#define BIOJAVA biojava +#define NCBI_TOOLKIT ncbi-toolkit + +// 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 emacs24 python-mode.el +#define LIBREOFFICE libreoffice zh_TW-libreoffice +#define VIM_GTK vim + +// 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 + +// GNOME +#define GDM gdm +#define GNOME_USER_DOCS gnome-user-docs +#define GTK2_ENGINES gtk-engines2 +#define GVFS gvfs +#define REMMINA remmina remmina-plugins +#define GNOME_META_PKG gnome2-lite // XXX: GNOME 3 may be imported recently +#define BAOBAB gnome-utils +#define GLADE glade3 +#define GTK2 gtk2 gtk2-reference gtkmm24 gtkmm24-reference +#define GTK3 gtk3 gtk3-reference gtkmm30 gtkmm30-reference +#define GNOME_SCREENSHOT gnome-utils + +// Graphics +#define IMAGEMAGICK ImageMagick +#define JPEG jpeg +#define BMEPS bmeps +#define XGRAPH xgraph + +// Haskell +#define HUGS hugs98 +#define HASKELL_PLATFORM hs-haskell-platform +#define HASKELL_OPENGL hs-OpenGL + +// Interpreters +// KDE +#define KDE_META_PKG kde + +// Lib +#define LIBC_DEV NULL +#define LIBEVENT_DEV libevent2 +#define FFTW_DEV fftw fftw3 fftw3-float fftw3-long fftw3-quad +#define GSL_DEV gsl +#define JPEG_DEV jpeg +#define LTDL_DEV libltdl +#define NCURSES_DEV ncurses +#define QT4_DEV qt4 +#define QT5_DEV NULL // TODO: Add Qt 5 +#define PERL_DEV NULL // provided by default perl installation +#define MYSQLXX_DEV mysql++-mysql55 +#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 ffmpeg0 +#define SDL_DEV sdl sdl2 sdl_mixer sdl2_mixer + +// Lisp +// Lua +#define LUA51 lua +#define LUA52 lua52 + +// Machine Learning +// Mail +#define MAILX NULL +#define VM vm-emacs24 + +// Math +#define GSL gsl +#define OCTAVE_DEV octave +#define R_BASE R + +// Misc +#define BIG5WIDTH zh-big5width +#define GNUPG gnupg1 gnupg +#define KERNEL_PACKAGE NULL // Debian-specific package +#define XSLTPROC libxslt +#define PROTOBUF protobuf + +// Net +#define MTR mtr-nox11 +#define STUNNEL stunnel +#define VNCVIEWER tigervnc +#define NS2 ns +#define NS3 NULL // FIXME: currently not available? +#define BSDFTPD_SSL bsdftpd-ssl +#define OMNITTY omnitty +#define TRAFSHOW trafshow +#define SPICE_CLIENT NULL // FIXME: not found in ports +#define XSPICE NULL // FIXME: not found in ports +#define PCMANX zh-pcmanx + +// 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 + +// Python +#define PYTHON2 python2 +#define PYTHON3 python3 +#define IPYTHON py27-ipython +#define PYPY pypy +#define PYTHON_BSDDB3 py27-bsddb3 +#define PYTHON_IMAGING py27-imaging +#define PYTHON_NUMPY py27-numpy +#define PYTHON_SETUPTOOLS py27-setuptools27 +#define PYTHON_LIBSVM libsvm-python +#define PYTHON_GSL py27-gsl +#define PYTHON_MARKDOWN py27-markdown +#define PYTHON_MEMPROF NULL +#define PYTHON_PSUTIL py27-psutil +#define PYTHONTRACER NULL +#define PYTHON_MYSQLDB NULL +#define PYTHON_CJSON py27-cjson +#define PYTHON_SQLITE py27-sqlite3 +#define PYTHON_BEAUTIFULSOUP py27-beautifulsoup py27-beautifulsoup32 +#define PYTHON_TK NULL +#define PYTHON_SIMPLEJSON py27-simplejson +#define PYTHON_MATPLOTLIB py27-matplotlib +#define PYTHON_LXML py27-lxml +#define PYTHON_OPENCV py27-opencv +#define PYTHON_COGENT pycogent +#define PYTHON_REDIS py27-redis +#define PYTHON_YAML py27-yaml +#define PYTHON_GDATA py27-gdata +#define PYTHON_CURL py27-curl +#define PYTHON_LDAP py27-ldap2 +#define PYTHON_SMBPASSWD py27-smbpasswd +#define PYTHON_SPHINX py27-sphinx +#define PYTHON_SCIKITS_LEARN py27-scikit-learn +#define PYTHON_IGRAPH py27-igraph +#define PYTHON_PSYCOPG2 py27-psycopg2 +#define PYTHON_NETWORKX py27-networkx +#define PYTHON_VIRTUALENV py27-virtualenv +#define PYTHON_NUMERIC py27-numeric + +// Ruby +#define RUBY ruby +#define RUBY_MYSQL ruby19-mysql + +// Science +#define BLAST2 NULL // FIXME: not found in ports +#define BLITZ blitz++ + +// Sound +#define ALSA alsa-lib alsa-plugins + +// TeX +#define AUCTEX auctex-emacs24 +#define LATEX_CJK NULL // FIXME: conflict with texlive +#define BIBER NULL // FIXME: not found in ports +#define TEXLIVE NULL // texlive-full already provides all packages +#define BG5PS zh-bg5ps +#define HYPERLATEX Hyperlatex +#define LATEX_PGF latex-pgf + +// Text +#define ASPELL_EN en-aspell // FIXME: not found in ports +#define GS_CJK_RESOURCE poppler-data +#define SPELL NULL +#define C2PS c2ps +#define DJVULIBRE djvulibre +#define ENSCRIPT enscript-a4 +#define XPDF_ZH_FONTS zh-xpdf-zhfont + +// Utils +#define BZIP2 NULL +#define GPW NULL // FIXME: not found in ports +#define GQVIEW gqview +#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 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 PATCHELF patchelf +#define QEMU qemu-devel +#define UNAR NULL // FIXME: not found in ports +#define UIM_FEP uim +#define UNIX2DOS unix2dos + +// Video +#define MPLAYER mplayer mplayer-fonts gnome-mplayer \ + mencoder mplayer2 + +// Web +#define FLASH_PLUGIN swfdec-plugin nspluginwrapper linux_base-f10 \ + linux-f10-flashplugin +#define FIREFOX firefox firefox-i18n +#define W3M_EL emacs-w3m-emacs24 +#define JAVA_PLUGIN icedtea-web + +// WindowMaker +#define PCLOCK pclock +#define WINDOWMAKER windowmaker +#define WMTOP wmtop +#define WMTIMER wmtimer +#define WMCLIPHIST wmcliphist +#define TEMPERATURE_APP temperature.app +#define ASBUTTON asbutton + +// X11 +#define DESKTOP_BASE NULL +#define FVWM fvwm2-i18n +#define IM_SWITCH NULL +#define MLTERM_TOOLS NULL +#define RXVT_ML rxvt-unicode +#define VNCSERVER tigervnc +#define XVFB xorg-vfbserver +#define XEPHYR xephyr diff --git a/freebsd.in/freebsd.ports.find.c b/freebsd.in/freebsd.ports.find.c new file mode 100644 index 0000000..309ea89 --- /dev/null +++ b/freebsd.in/freebsd.ports.find.c @@ -0,0 +1,139 @@ +#define _POSIX_C_SOURCE 200809L +#include +#include +#include +#include +#include +#include + +#ifndef HASH_TABLE_SIZE +# define HASH_TABLE_SIZE 50000 +#endif + +#define msg(...) fprintf(stderr, __VA_ARGS__) +#define msgstr(x) fputs((x), stderr) + +static void write_maps (const char* list_file) { + FILE* fp = fopen (list_file, "r"); + if (fp == NULL) { + msg ("Cannot open list file %s\n", list_file); + perror ("fopen"); + exit (3); + } + + char* line = NULL; + size_t len = 0; + unsigned n; + + for (n = 0; getline (&line, &len, fp) >= 0; n++) { + strtok (line, "\n"); + + ENTRY hfind = { + .key = line, + .data = NULL + }; + ENTRY* hresult = hsearch (hfind, FIND); + if (hresult == NULL) { + msg ("Cannot find origin for %s\n", line); + exit (4); + } + + printf ("%-32s %s\n", line, hresult->data); + line = NULL; + len = 0; + } + + if (!feof (fp)) { + msgstr ("Fail to read the whole list file\n"); + perror ("getline"); + exit (6); + } + + msg ("=> %u packages entries processed\n", n); + fclose (fp); +} + +static void read_entries (const char* index_file) { + FILE* fp = fopen (index_file, "r"); + if (fp == NULL) { + msg ("Cannot open index file %s\n", index_file); + perror ("fopen"); + exit (3); + } + + char* line = NULL; + size_t len = 0; + unsigned n; + + for (n = 0; getline (&line, &len, fp) >= 0; n++) { + strtok (line, "\n"); + + char* pkgname = strtok (line, "|"); + if (pkgname == NULL) { + msgstr ("Malformed index file - no package name\n"); + exit (4); + } + + char* pkgname_end = strrchr (line, '-'); + if (pkgname_end != NULL) { + *pkgname_end = '\0'; + } + + char* fullpath = strtok (NULL, "|"); + if (fullpath == NULL) { + msgstr ("Malformed index file - no path\n"); + exit (4); + } + + bool dir_sp_got = false; + for (char* p = fullpath + strlen (fullpath); p >= fullpath; p--) { + if (*p == '/') { + if (dir_sp_got) { + fullpath = p + 1; + break; + } else { + dir_sp_got = true; + } + } + } + + ENTRY hentry = { + .key = pkgname, + .data = fullpath + }; + if (hsearch (hentry, ENTER) == NULL) { + msgstr ("The hash table is full!\n"); + exit (5); + } + + line = NULL; + len = 0; + } + + if (!feof (fp)) { + msgstr ("Fail to read the whole index file\n"); + perror ("getline"); + exit (6); + } + + msg ("=> %u ports entries read\n", n); + fclose (fp); +} + +int main (int argc, char* argv[]) { + if (argc < 3) { + msg ("Usage: %s list_file index_file\n", argv[0]); + return 1; + } + + if (!hcreate (HASH_TABLE_SIZE)) { + msg ("Cannot create a hash table with size %d\n", HASH_TABLE_SIZE); + perror ("hcreate"); + return 2; + } + + read_entries (argv[2]); + write_maps (argv[1]); + + return 0; +} diff --git a/freebsd.install.sh b/freebsd.install.sh deleted file mode 100755 index a55e1bd..0000000 --- a/freebsd.install.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -msg_and_copy () { - echo "==> Copying $1 to $2" 1>&2 - cp -r "$1" "$2" -} - -msg_and_mkdir () { - echo "==> Creating directory $1" 1>&2 - mkdir -p "$1" -} - -: ${PORTSDIR:="/usr/ports"} -[ '!' -d "${PORTSDIR}/local" ] && \ - msg_and_mkdir "${PORTSDIR}/local" -[ '!' -f "${PORTSDIR}/local/Makefile" ] && \ - msg_and_copy "freebsd.local.Makefile" "${PORTSDIR}/local/Makefile" -[ '!' -f "${PORTSDIR}/local/Makefile.inc" ] && \ - msg_and_copy "freebsd.local.Makefile.inc" "${PORTSDIR}/local/Makefile.inc" - -msg_and_copy "freebsd.out/217" "${PORTSDIR}/local" diff --git a/freebsd.local.217.pkg-descr b/freebsd.local.217.pkg-descr deleted file mode 100644 index 94d04ce..0000000 --- a/freebsd.local.217.pkg-descr +++ /dev/null @@ -1,3 +0,0 @@ -Meta-port for all packages in 217. - -WWW: http://wslab.csie.ntu.edu.tw/ diff --git a/freebsd.local.Makefile b/freebsd.local.Makefile deleted file mode 100644 index 6f4b770..0000000 --- a/freebsd.local.Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD$ -# - - COMMENT = Local ports - - SUBDIR += 217 - -.include diff --git a/freebsd.local.Makefile.inc b/freebsd.local.Makefile.inc deleted file mode 100644 index 69842a0..0000000 --- a/freebsd.local.Makefile.inc +++ /dev/null @@ -1,7 +0,0 @@ -# $FreeBSD$ -# - -PKGNAMEPREFIX?= local- - -# Make sure we have the correct origin registered -PKGCATEGORY= local diff --git a/freebsd.makefile.in b/freebsd.makefile.in deleted file mode 100644 index eb11c14..0000000 --- a/freebsd.makefile.in +++ /dev/null @@ -1,24 +0,0 @@ -# Created by: Rong-En Fan -# $FreeBSD: This is not an official FreeBSD pors $ -# Modified by: Ting-Wei Lan -# vim: set ts=8 sts=8 sw=8 ft=make: - -PORTNAME= 217 -PORTVERSION= @TODAY@ -CATEGORIES= local -MASTER_SITES= # -DISTFILES= # - -MAINTAINER= ta217@csie.ntu.edu.tw -COMMENT= Meta-port for all packages in 217 - -LICENSE= BSD2CLAUSE - -NO_BUILD= yes - -RUN_DEPENDS+= @FREEBSD_DOT_PORTS@ - -do-install: - @${DO_NADA} - -.include diff --git a/freebsd.makefile.sh b/freebsd.makefile.sh deleted file mode 100755 index 4a1c23a..0000000 --- a/freebsd.makefile.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -gen_list () { - exec 4< "${ports_file}" - - while read -r pkg_name pkg_ports 0<&4; do - echo " ${pkg_name}>=0:"'${PORTSDIR}'"/${pkg_ports} \\" - done - - exec 4<&- -} - -makefile_in_file="$1" -: ${makefile_in_file:="freebsd.makefile.in"} - -ports_file="$2" -: ${ports_file:="freebsd.ports"} - -exec 3< "${makefile_in_file}" - -saveIFS="${IFS}" -lineIFS="$(printf "\n")" -IFS="${lineIFS}" - -while read -r makefile_line 0<&3; do - case "${makefile_line}" in - "PORTVERSION="*) - printf "PORTVERSION=\t%s\n" "`date '+%Y.%m.%d'`" - ;; - "RUN_DEPENDS+="*) - echo 'RUN_DEPENDS+= \' - IFS="${saveIFS}" - gen_list - IFS="${lineIFS}" - ;; - *) - echo "${makefile_line}" - ;; - esac -done - -exec 3<&- diff --git a/freebsd.pkg b/freebsd.pkg deleted file mode 100644 index 5eb67de..0000000 --- a/freebsd.pkg +++ /dev/null @@ -1,348 +0,0 @@ -// vim: ft=c: et - -// TODO: packages mask -#define clisp // segfault when running lisp.run -#define newmail // no more public distfiles -#define ns // needs broken package otcl - -// =========================================================================== -// Packages mapping started from here -// =========================================================================== - -// Standard -#define BC NULL -#define BIND bind-tools -#define FILE NULL -#define FINGER NULL -#define FTP NULL -#define INETD NULL -#define ISPELL aspell-ispell -#define LESS NULL -#define LOCATE NULL -#define NCURSES_TERM NULL -#define PATCH NULL -#define PCI NULL -#define PERL perl5 -#define PYTHON2 python2 -#define PYTHON3 python3 -#define SHARUTILS NULL -#define SSH NULL -#define STRACE NULL -#define TELNET zh-telnet -#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-base cups-pstoraster -#define IOTOP NULL -#define MENU NULL -#define MCELOG mcelog -#define MUNIN munin-node -#define PARTED NULL -#define SYSSTAT NULL -#define PORTS_MGMT portupgrade portmaster portconf porttools \ - portlint pkg_rmleaves pkg_cutleaves -#define NET_SNMP net-snmp -#define SSHIT sshit -#define FDISK linuxfdisk -#define GDISK gdisk - -// Database -#define MYSQL_CLIENT mariadb55-client - -// Devel -#define ANT apache-ant -#define CLANG clang34 // get libclang.so -#define GCC gcc gcc48 -#define GDB gdb -#define GOLANG NULL -#define GIT git gitg -#define INDENT NULL -#define MAKE gmake bmake -#define MINGW NULL -#define OPENJDK6 openjdk6 -#define OPENJDK7 openjdk -#define SUBVERSION subversion svk psvn-emacs24 -#define TCL tcl84 -#define TK tk84 -#define ECLIPSE eclipse eclipse-cdt eclipse-langpack eclipse-pydev -#define JIKES jikes -#define BIOJAVA biojava -#define NCBI_TOOLKIT ncbi-toolkit - -// 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 emacs24 python-mode.el -#define LIBREOFFICE libreoffice zh_TW-libreoffice -#define VIM_GTK vim - -// 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 - -// GNOME -#define GDM gdm -#define GNOME_USER_DOCS gnome-user-docs -#define GTK2_ENGINES gtk-engines2 -#define GVFS gvfs -#define REMMINA remmina remmina-plugins -#define GNOME_META_PKG gnome2-lite // XXX: GNOME 3 may be imported recently -#define BAOBAB gnome-utils -#define GLADE glade3 -#define GTK2 gtk2 gtk2-reference gtkmm24 gtkmm24-reference -#define GTK3 gtk3 gtk3-reference gtkmm30 gtkmm30-reference -#define GNOME_SCREENSHOT gnome-utils - -// Graphics -#define IMAGEMAGICK ImageMagick -#define JPEG jpeg -#define BMEPS bmeps -#define XGRAPH xgraph - -// Haskell -#define HUGS hugs98 -#define HASKELL_PLATFORM hs-haskell-platform -#define HASKELL_OPENGL hs-OpenGL - -// Interpreters -// KDE -#define KDE_META_PKG kde - -// Lib -#define LIBC_DEV NULL -#define LIBEVENT_DEV libevent2 -#define FFTW_DEV fftw fftw3 fftw3-float fftw3-long fftw3-quad -#define GSL_DEV gsl -#define JPEG_DEV jpeg -#define LTDL_DEV libltdl -#define NCURSES_DEV ncurses -#define QT4_DEV qt4 -#define QT5_DEV NULL // TODO: Add Qt 5 -#define PERL_DEV NULL // provided by default perl installation -#define MYSQLXX_DEV mysql++-mysql55 -#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 ffmpeg0 -#define SDL_DEV sdl sdl2 sdl_mixer sdl2_mixer - -// Lisp -// Lua -#define LUA51 lua -#define LUA52 lua52 - -// Machine Learning -// Mail -#define MAILX NULL -#define VM vm-emacs24 - -// Math -#define GSL gsl -#define OCTAVE_DEV octave -#define R_BASE R - -// Misc -#define BIG5WIDTH zh-big5width -#define GNUPG gnupg1 gnupg -#define KERNEL_PACKAGE NULL // Debian-specific package -#define XSLTPROC libxslt -#define PROTOBUF protobuf - -// Net -#define MTR mtr-nox11 -#define STUNNEL stunnel -#define VNCVIEWER tigervnc -#define NS2 ns -#define NS3 NULL // FIXME: currently not available? -#define BSDFTPD_SSL bsdftpd-ssl -#define OMNITTY omnitty -#define TRAFSHOW trafshow -#define SPICE_CLIENT NULL // FIXME: not found in ports -#define XSPICE NULL // FIXME: not found in ports -#define PCMANX zh-pcmanx - -// 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 - -// Python -#define PYTHON2 python2 -#define PYTHON3 python3 -#define IPYTHON py27-ipython -#define PYPY pypy -#define PYTHON_BSDDB3 py27-bsddb3 -#define PYTHON_IMAGING py27-imaging -#define PYTHON_NUMPY py27-numpy -#define PYTHON_SETUPTOOLS py27-setuptools27 -#define PYTHON_LIBSVM libsvm-python -#define PYTHON_GSL py27-gsl -#define PYTHON_MARKDOWN py27-markdown -#define PYTHON_MEMPROF NULL -#define PYTHON_PSUTIL py27-psutil -#define PYTHONTRACER NULL -#define PYTHON_MYSQLDB NULL -#define PYTHON_CJSON py27-cjson -#define PYTHON_SQLITE py27-sqlite3 -#define PYTHON_BEAUTIFULSOUP py27-beautifulsoup py27-beautifulsoup32 -#define PYTHON_TK NULL -#define PYTHON_SIMPLEJSON py27-simplejson -#define PYTHON_MATPLOTLIB py27-matplotlib -#define PYTHON_LXML py27-lxml -#define PYTHON_OPENCV py27-opencv -#define PYTHON_COGENT pycogent -#define PYTHON_REDIS py27-redis -#define PYTHON_YAML py27-yaml -#define PYTHON_GDATA py27-gdata -#define PYTHON_CURL py27-curl -#define PYTHON_LDAP py27-ldap2 -#define PYTHON_SMBPASSWD py27-smbpasswd -#define PYTHON_SPHINX py27-sphinx -#define PYTHON_SCIKITS_LEARN py27-scikit-learn -#define PYTHON_IGRAPH py27-igraph -#define PYTHON_PSYCOPG2 py27-psycopg2 -#define PYTHON_NETWORKX py27-networkx -#define PYTHON_VIRTUALENV py27-virtualenv -#define PYTHON_NUMERIC py27-numeric - -// Ruby -#define RUBY ruby -#define RUBY_MYSQL ruby19-mysql - -// Science -#define BLAST2 NULL // FIXME: not found in ports -#define BLITZ blitz++ - -// Sound -#define ALSA alsa-lib alsa-plugins - -// TeX -#define AUCTEX auctex-emacs24 -#define LATEX_CJK NULL // FIXME: conflict with texlive -#define BIBER NULL // FIXME: not found in ports -#define TEXLIVE NULL // texlive-full already provides all packages -#define BG5PS zh-bg5ps -#define HYPERLATEX Hyperlatex -#define LATEX_PGF latex-pgf - -// Text -#define ASPELL_EN en-aspell // FIXME: not found in ports -#define GS_CJK_RESOURCE poppler-data -#define SPELL NULL -#define C2PS c2ps -#define DJVULIBRE djvulibre -#define ENSCRIPT enscript-a4 -#define XPDF_ZH_FONTS zh-xpdf-zhfont - -// Utils -#define BZIP2 NULL -#define GPW NULL // FIXME: not found in ports -#define GQVIEW gqview -#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 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 PATCHELF patchelf -#define QEMU qemu-devel -#define UNAR NULL // FIXME: not found in ports -#define UIM_FEP uim -#define UNIX2DOS unix2dos - -// Video -#define MPLAYER mplayer mplayer-fonts gnome-mplayer \ - mencoder mplayer2 - -// Web -#define FLASH_PLUGIN swfdec-plugin nspluginwrapper linux_base-f10 \ - linux-f10-flashplugin -#define FIREFOX firefox firefox-i18n -#define W3M_EL emacs-w3m-emacs24 -#define JAVA_PLUGIN icedtea-web - -// WindowMaker -#define PCLOCK pclock -#define WINDOWMAKER windowmaker -#define WMTOP wmtop -#define WMTIMER wmtimer -#define WMCLIPHIST wmcliphist -#define TEMPERATURE_APP temperature.app -#define ASBUTTON asbutton - -// X11 -#define DESKTOP_BASE NULL -#define FVWM fvwm2-i18n -#define IM_SWITCH NULL -#define MLTERM_TOOLS NULL -#define RXVT_ML rxvt-unicode -#define VNCSERVER tigervnc -#define XVFB xorg-vfbserver -#define XEPHYR xephyr diff --git a/freebsd.ports.find.c b/freebsd.ports.find.c deleted file mode 100644 index 309ea89..0000000 --- a/freebsd.ports.find.c +++ /dev/null @@ -1,139 +0,0 @@ -#define _POSIX_C_SOURCE 200809L -#include -#include -#include -#include -#include -#include - -#ifndef HASH_TABLE_SIZE -# define HASH_TABLE_SIZE 50000 -#endif - -#define msg(...) fprintf(stderr, __VA_ARGS__) -#define msgstr(x) fputs((x), stderr) - -static void write_maps (const char* list_file) { - FILE* fp = fopen (list_file, "r"); - if (fp == NULL) { - msg ("Cannot open list file %s\n", list_file); - perror ("fopen"); - exit (3); - } - - char* line = NULL; - size_t len = 0; - unsigned n; - - for (n = 0; getline (&line, &len, fp) >= 0; n++) { - strtok (line, "\n"); - - ENTRY hfind = { - .key = line, - .data = NULL - }; - ENTRY* hresult = hsearch (hfind, FIND); - if (hresult == NULL) { - msg ("Cannot find origin for %s\n", line); - exit (4); - } - - printf ("%-32s %s\n", line, hresult->data); - line = NULL; - len = 0; - } - - if (!feof (fp)) { - msgstr ("Fail to read the whole list file\n"); - perror ("getline"); - exit (6); - } - - msg ("=> %u packages entries processed\n", n); - fclose (fp); -} - -static void read_entries (const char* index_file) { - FILE* fp = fopen (index_file, "r"); - if (fp == NULL) { - msg ("Cannot open index file %s\n", index_file); - perror ("fopen"); - exit (3); - } - - char* line = NULL; - size_t len = 0; - unsigned n; - - for (n = 0; getline (&line, &len, fp) >= 0; n++) { - strtok (line, "\n"); - - char* pkgname = strtok (line, "|"); - if (pkgname == NULL) { - msgstr ("Malformed index file - no package name\n"); - exit (4); - } - - char* pkgname_end = strrchr (line, '-'); - if (pkgname_end != NULL) { - *pkgname_end = '\0'; - } - - char* fullpath = strtok (NULL, "|"); - if (fullpath == NULL) { - msgstr ("Malformed index file - no path\n"); - exit (4); - } - - bool dir_sp_got = false; - for (char* p = fullpath + strlen (fullpath); p >= fullpath; p--) { - if (*p == '/') { - if (dir_sp_got) { - fullpath = p + 1; - break; - } else { - dir_sp_got = true; - } - } - } - - ENTRY hentry = { - .key = pkgname, - .data = fullpath - }; - if (hsearch (hentry, ENTER) == NULL) { - msgstr ("The hash table is full!\n"); - exit (5); - } - - line = NULL; - len = 0; - } - - if (!feof (fp)) { - msgstr ("Fail to read the whole index file\n"); - perror ("getline"); - exit (6); - } - - msg ("=> %u ports entries read\n", n); - fclose (fp); -} - -int main (int argc, char* argv[]) { - if (argc < 3) { - msg ("Usage: %s list_file index_file\n", argv[0]); - return 1; - } - - if (!hcreate (HASH_TABLE_SIZE)) { - msg ("Cannot create a hash table with size %d\n", HASH_TABLE_SIZE); - perror ("hcreate"); - return 2; - } - - read_entries (argv[2]); - write_maps (argv[1]); - - return 0; -} diff --git a/freebsd.ports.sh b/freebsd.ports.sh deleted file mode 100755 index c7c5679..0000000 --- a/freebsd.ports.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -msg () { - echo "$@" 1>&2 -} - -[ -z "$1" ] && msg "Usage: $0 list_file" && exit 1 -: ${FREEBSD_VERSION:="`uname -r | sed 's|^\([0-9]*\).*$|\1|'`"} -: ${PORTSDIR:="/usr/ports"} -index="${PORTSDIR}/INDEX-${FREEBSD_VERSION}" - -msg "==> FreeBSD version is ${FREEBSD_VERSION}" -msg "==> FreeBSD ports tree is ${PORTSDIR}" -msg "==> FreeBSD ports index file is ${index}" - -msg "==> Running freebsd.ports.find" -if ./freebsd.ports.find "$1" "${index}"; then - msg "==> Done!" -else - msg "==> Failed" - exit 1 -fi diff --git a/freebsd.sh/freebsd.install.sh b/freebsd.sh/freebsd.install.sh new file mode 100755 index 0000000..6d496e7 --- /dev/null +++ b/freebsd.sh/freebsd.install.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +msg_and_copy () { + echo "==> Copying $1 to $2" 1>&2 + cp -r "$1" "$2" +} + +msg_and_mkdir () { + echo "==> Creating directory $1" 1>&2 + mkdir -p "$1" +} + +: ${PORTSDIR:="/usr/ports"} +[ '!' -d "${PORTSDIR}/local" ] && \ + msg_and_mkdir "${PORTSDIR}/local" +[ '!' -f "${PORTSDIR}/local/Makefile" ] && \ + msg_and_copy "freebsd.in/freebsd.local.Makefile" "${PORTSDIR}/local/Makefile" +[ '!' -f "${PORTSDIR}/local/Makefile.inc" ] && \ + msg_and_copy "freebsd.in/freebsd.local.Makefile.inc" "${PORTSDIR}/local/Makefile.inc" + +msg_and_copy "freebsd.out/217" "${PORTSDIR}/local" diff --git a/freebsd.sh/freebsd.makefile.sh b/freebsd.sh/freebsd.makefile.sh new file mode 100755 index 0000000..4a1c23a --- /dev/null +++ b/freebsd.sh/freebsd.makefile.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +gen_list () { + exec 4< "${ports_file}" + + while read -r pkg_name pkg_ports 0<&4; do + echo " ${pkg_name}>=0:"'${PORTSDIR}'"/${pkg_ports} \\" + done + + exec 4<&- +} + +makefile_in_file="$1" +: ${makefile_in_file:="freebsd.makefile.in"} + +ports_file="$2" +: ${ports_file:="freebsd.ports"} + +exec 3< "${makefile_in_file}" + +saveIFS="${IFS}" +lineIFS="$(printf "\n")" +IFS="${lineIFS}" + +while read -r makefile_line 0<&3; do + case "${makefile_line}" in + "PORTVERSION="*) + printf "PORTVERSION=\t%s\n" "`date '+%Y.%m.%d'`" + ;; + "RUN_DEPENDS+="*) + echo 'RUN_DEPENDS+= \' + IFS="${saveIFS}" + gen_list + IFS="${lineIFS}" + ;; + *) + echo "${makefile_line}" + ;; + esac +done + +exec 3<&- diff --git a/freebsd.sh/freebsd.ports.sh b/freebsd.sh/freebsd.ports.sh new file mode 100755 index 0000000..1fa4b5d --- /dev/null +++ b/freebsd.sh/freebsd.ports.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +msg () { + echo "$@" 1>&2 +} + +[ -z "$1" ] && msg "Usage: $0 list_file" && exit 1 +: ${FREEBSD_VERSION:="`uname -r | sed 's|^\([0-9]*\).*$|\1|'`"} +: ${PORTSDIR:="/usr/ports"} +index="${PORTSDIR}/INDEX-${FREEBSD_VERSION}" + +shdir="$(dirname "$0")" +: ${shdir:="."} + +msg "==> FreeBSD version is ${FREEBSD_VERSION}" +msg "==> FreeBSD ports tree is ${PORTSDIR}" +msg "==> FreeBSD ports index file is ${index}" + +msg "==> Running freebsd.ports.find" +if "${shdir}/freebsd.ports.find" "$1" "${index}"; then + msg "==> Done!" +else + msg "==> Failed" + exit 1 +fi diff --git a/freebsd.txt b/freebsd.txt deleted file mode 100644 index d98c8b3..0000000 --- a/freebsd.txt +++ /dev/null @@ -1,34 +0,0 @@ -wspkg - FreeBSD 支援:ports 與 pkgng -==================================== -217 工作站實驗室 <217ta@csie.ntu.edu.tw> - -------------------------------------------------------------------------------- - +----------------------+ - | FreeBSD package list | - | freebsd.list | - +----------------------+ - | freebsd.ports.sh - | freebsd.ports.find - v - +---------------------+ - | FreeBSD ports list | - | freebsd.ports |-+ - +---------------------+ | freebsd.makefile.sh +------------------------+ - +--------------------->>>>| FreeBSD ports Makefile | - | | freebsd.makefile | -+-------------------------+-------+ +------------------------+ -| FreeBSD ports Makefile template | -| freebsd.makefile.in | -+---------------------------------+ - -------------------------------------------------------------------------------- - -產生 ports 目錄清單 -------------------- -由於指定 dependency 時需要指定所需套件的來源 ports 目錄,因此我們需要找到各套件 -所在的目錄。freebsd.ports.sh 會幫忙找到系統的 ports tree 及 index file,再執行 -freebsd.ports.find 從 index file 產生清單。 - -產生 meta-ports Makefile ------------------------- -freebsd.makefile.sh 會根據 template 填上版本號以及 RUN_DEPENDS 以產生 Makefile。 diff --git a/packages.mk b/packages.mk new file mode 100644 index 0000000..3ca60bf --- /dev/null +++ b/packages.mk @@ -0,0 +1,45 @@ +# vim: set ts=8 sts=8 sw=8 ft=make: + +.POSIX: +.PHONY: all clean clean-exe clean-doc distclean $(PLATFORM) +.SUFFIXES: .txt .html + +V= 0 +CC= c99 +ASCIIDOC= asciidoc + +RM_IF_FAIL= || { rm -f "$@" && false; } + +PLATFORM_SH= $(PLATFORM).sh +PLATFORM_IN= $(PLATFORM).in +PLATFORM_OUT= $(PLATFORM).out +PLATFORM_DOC= $(PLATFORM).doc + +PKGLIST_IN= $(PLATFORM_IN)/$(PLATFORM).pkg +PKGLIST_OUT= $(PLATFORM_OUT)/$(PLATFORM).list + +# Include silent rules +include Makefile.silent + +# Do platform-independent tasks +all: README.html $(PLATFORM) + +# Generate top-level directory documentation +.txt.html: + -$(AT_DOC)$(ASCIIDOC) -b html -o "$@" "$<" + +# Generate package list +$(PKGLIST_OUT): $(PKGLIST_IN) packages.h packages.sh + -$(AT_MKDIR)mkdir -p $(PLATFORM_OUT) + $(AT_CPP)CPPFLAGS="-I. -I$(PLATFORM_IN)" ./packages.sh $(PLATFORM) \ + | sort | uniq > $(PKGLIST_OUT) $(RM_IF_FAIL) + +# Clean files +clean: + rm -rf *.out $(CLEAN_FILES) +clean-exe: + rm -f $(CLEAN_EXE_FILES) +clean-doc: + rm -f *.html $(CLEAN_DOC_FILES) + +distclean: clean clean-exe clean-doc diff --git a/packages.sh b/packages.sh index 272367c..c797a87 100755 --- a/packages.sh +++ b/packages.sh @@ -4,13 +4,14 @@ toupper () { echo "$1" | tr '[:lower:]' '[:upper:]' } -[ -z "${CPP}" ] && CPP="cpp" [ -z "$1" ] && echo "Usage: $0 os_type cpp_args" && exit 1 [ -z "$2" ] && default="yes" ostype="`toupper "$1"`" shift +: ${CPP:="cpp"} +: ${CPPFLAGS:="-I."} if [ "$default" = "yes" ]; then selarg="-UWSPKG_NO_DEFAULT " else @@ -21,5 +22,5 @@ else done fi -${CPP} -D"$ostype" $selarg packages.h | \ +${CPP} ${CPPFLAGS} -D"$ostype" $selarg packages.h | \ sed -e '/^#/d' -e '/^ *$/d' | tr ' ' '\n' | sed '/^ *$/d' -- cgit