mypad-1.0.5shnurise
download
# Copyright 1999-2020 ArsenShnurkov@github
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
KEYWORDS="amd64"
RESTRICT="mirror"
SLOT="3"
USE_DOTNET="net45"
IUSE="+${USE_DOTNET} debug developer symlink"
inherit dotnet
inherit desktop
inherit xdg-utils
DESCRIPTION="mypad text editor"
LICENSE="MIT"
PROJECTNAME="mypad-winforms-texteditor"
HOMEPAGE="https://github.com/ArsenShnurkov/${PROJECTNAME}"
EGIT_COMMIT="090ddcfac6cd51007e2d90e19a010074de1f353e"
SRC_URI="${HOMEPAGE}/archive/${EGIT_COMMIT}.zip -> ${CATEGORY}-${PN}-${PV}.zip"
S="${WORKDIR}/${PROJECTNAME}-${EGIT_COMMIT}"
DEPEND="
>=dev-dotnet/icsharpcode-texteditor-3.2.2_p2018020702-r1
>=dev-dotnet/ndepend-path-0.0_p20151123-r1
"
RDEPEND="${DEPEND}
dev-lang/mono
"
if [ "${SLOT}" != "0" ]; then
APPENDIX="-${SLOT}"
fi
function obj_dir ( ) {
echo "${WORKDIR}/obj/$(usedebug_tostring)"
}
function bin_dir ( ) {
echo "${WORKDIR}/bin/$(usedebug_tostring)"
}
function references1() {
echo -n \
$(reference_framework System)
}
function output_arguments1 ( ) {
local OUTPUT_TYPE="library" # https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/compiler-options/target-exe-compiler-option
local OUTPUT_NAME="$(bin_dir)/MyPad.Plugins.dll"
echo "/target:${OUTPUT_TYPE}" "/out:${OUTPUT_NAME}"
}
function references2() {
echo -n \
$(reference_dependency ICSharpCode.TextEditor) \
$(reference_dependency NDepend.Path-1) \
$(reference_project MyPad.Plugins) \
$(reference_framework System.Core) \
$(reference_framework System.Drawing) \
$(reference_framework System.Windows.Forms) \
$(reference_framework System.Xml) \
$(reference_framework System.Web) \
$(reference_framework System.Runtime.Remoting) \
$(reference_framework System.Configuration) \
$(reference_framework System.ServiceModel) \
$(reference_framework System)
}
function resgen_inputs() {
# echo -n " " /useSourcePath ${S}/MyPad/
echo -n " " /compile
echo -n " " ${S}/MyPad/MainForm.resx,MainForm.resources
echo -n " " ${S}/MyPad/Properties/Resources.resx,Resources.resources
echo -n " " ${S}/MyPad/Resources/AtomFeedIcon.resx,AtomFeedIcon.resources
echo -n " " ${S}/MyPad/Dialogs/AboutDialog.resx,AboutDialog.resources
echo -n " " ${S}/MyPad/Dialogs/FindDialog.resx,FindDialog.resources
echo -n " " ${S}/MyPad/Dialogs/FindReplaceDialog.resx,FindReplaceDialog.resources
echo -n " " ${S}/MyPad/Dialogs/OptionsDialog.resx,OptionsDialog.resources
echo -n " " ${S}/MyPad/Dialogs/UnsavedDocumentsDialog.resx,UnsavedDocumentsDialog.resources
echo -n " " ${S}/MyPad/Dialogs/InsertImageDialog.resx,InsertImageDialog.resources
echo -n " " ${S}/MyPad/Dialogs/Syndication/EntriesListDialog.resx,EntriesListDialog.resources
}
function resources2() {
local NAMESPACE=MyPad
echo -n " " /resource:$(obj_dir)/MainForm.resources,${NAMESPACE}.MainForm.resources
echo -n " " /resource:$(obj_dir)/Resources.resources,${NAMESPACE}.MainForm.Resources.resources
echo -n " " /resource:$(obj_dir)/AtomFeedIcon.resources,Resources.AtomFeedIcon.resources
echo -n " " /resource:$(obj_dir)/AboutDialog.resources,${NAMESPACE}.Dialogs.AboutDialog.resources
echo -n " " /resource:$(obj_dir)/FindDialog.resources,${NAMESPACE}.Dialogs.FindDialog.resources
echo -n " " /resource:$(obj_dir)/FindReplaceDialog.resources,${NAMESPACE}.Dialogs.FindReplaceDialog.resources
echo -n " " /resource:$(obj_dir)/OptionsDialog.resources,${NAMESPACE}.Dialogs.OptionsDialog.resources
echo -n " " /resource:$(obj_dir)/UnsavedDocumentsDialog.resources,${NAMESPACE}.Dialogs.UnsavedDocumentsDialog.resources
echo -n " " /resource:$(obj_dir)/InsertImageDialog.resources,${NAMESPACE}.Dialogs.InsertImageDialog.resources
echo -n " " /resource:$(obj_dir)/EntriesListDialog.resources,${NAMESPACE}.Dialogs.EntriesListDialog.resources
# raw binary resource streams
echo -n " " /resource:${S}/MyPad/Resources/MethodIcon.png,${NAMESPACE}.MethodIcon.png
echo -n " " /resource:${S}/MyPad/Resources/DefaultIcon.png,${NAMESPACE}.DefaultIcon.png
echo -n " " /resource:${S}/MyPad/Resources/FunctionIcon.png,${NAMESPACE}.FunctionIcon.png
echo -n " " /resource:${S}/MyPad/Resources/InterfaceIcon.png,${NAMESPACE}.InterfaceIcon.png
echo -n " " /resource:${S}/MyPad/Resources/VariableIcon.png,${NAMESPACE}.VariableIcon.png
echo -n " " /resource:${S}/MyPad/Resources/MyPadicon.png,${NAMESPACE}.MyPadicon.png
echo -n " " /resource:${S}/MyPad/Resources/CloseIcon.png,${NAMESPACE}.CloseIcon.png
echo -n " " /resource:${S}/MyPad/Resources/cross.png,${NAMESPACE}.cross.png
echo -n " " /resource:${S}/MyPad/Resources/AtomFeedIcon.svg,${NAMESPACE}.AtomFeedIcon.svg
}
function output_arguments2 ( ) {
local OUTPUT_TYPE="exe" # https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/compiler-options/target-exe-compiler-option
local OUTPUT_NAME="$(bin_dir)/MyPad.exe"
echo "/target:${OUTPUT_TYPE}" "/out:${OUTPUT_NAME}"
}
function install_dir() {
echo "/usr/lib/mypad-${SLOT}"
}
pkg_preinst() {
#gnome2_icon_savelist
:;
}
src_prepare(){
# sed -i ' /using MyPad.Plugins;/d' "${S}/MyPad/EditorWindow.cs" || die
eapply_user
}
src_compile() {
mkdir -p $(bin_dir) || die
einfo === 1 ===
einfo /usr/bin/csc $(references1) $(csharp_sources "${S}/MyPad.Plugins") $(output_arguments1)
/usr/bin/csc $(references1) $(csharp_sources "${S}/MyPad.Plugins") $(output_arguments1) || die
einfo === 2 ===
mkdir -p "$(obj_dir)" || die
cd "$(obj_dir)" || die
einfo /usr/bin/resgen $(resgen_inputs)
/usr/bin/resgen $(resgen_inputs) || die
einfo === 3 ===
einfo /usr/bin/csc /usr/bin/csc $(references2) $(csharp_sources "${S}/MyPad") $(resources2) $(output_arguments2)
/usr/bin/csc $(references2) $(csharp_sources "${S}/MyPad") $(resources2) $(output_arguments2) || die
}
src_install() {
elog "Installing executable"
insinto "$(install_dir)"
doins "$(bin_dir)/MyPad.exe"
doins "$(bin_dir)/MyPad.Plugins.dll"
newins "${S}/MyPad/app.config" "MyPad.exe.config"
dosym "/usr/share/mono/assemblies/icsharpcode-texteditor/bin/ICSharpCode.TextEditor.dll" "$(install_dir)/ICSharpCode.TextEditor.dll"
dosym "/usr/share/mono/assemblies/ndepend-path-1/bin/NDepend.Path.dll" "$(install_dir)/NDepend.Path.dll"
elog "Configuring templating engine"
# actually this should be in the user home folder
dodir "$(install_dir)/bin"
# dosym "/usr/share/mono/assemblies/icsharpcode-texteditor/bin/ICSharpCode.TextEditor.dll" "$(install_dir)/bin/ICSharpCode.TextEditor.dll"
# dosym "/usr/share/mono/assemblies/ndepend-path-1/bin/NDepend.Path.dll" "$(install_dir)/bin/NDepend.Path.dll"
dosym "../MyPad.exe" "$(install_dir)/bin/MyPad.exe"
doins "${S}/MyPad/Text1.aspx"
doins "${S}/MyPad/web.config"
elog "Installing syntax coloring schemes for editor ${S}/$(bin_dir)/Modes/*.xshd"
dodir "$(install_dir)/Modes"
insinto "$(install_dir)/Modes"
doins "${S}/MyPad/Modes/"*.xshd
elog "Preparing data directory"
# actually this should be in the user home folder
dodir "$(install_dir)/Data"
elog "Installing desktop icon"
local ICON_NAME="AtomFeedIcon.svg"
local FULL_ICON_NAME="MyPad/Resources/${ICON_NAME}"
newicon -s scalable "${FULL_ICON_NAME}" "${ICON_NAME}"
make_desktop_entry "/usr/bin/mypad${APPENDIX}" "${DESCRIPTION}" "/usr/share/icons/hicolor/scalable/apps/${ICON_NAME}"
# it is here because in src_install it gives the message
# cannot change ownership of '.../image/usr/bin/mypad-3': Operation not permitted
if use debug; then
einfo make_wrapper mypad${APPENDIX} "mono --debug $(install_dir)/MyPad.exe"
make_wrapper mypad${APPENDIX} "mono --debug $(install_dir)/MyPad.exe"
else
einfo make_wrapper mypad${APPENDIX} "mono $(install_dir)/MyPad.exe"
make_wrapper mypad${APPENDIX} "mono $(install_dir)/MyPad.exe"
fi
}
pkg_postinst() {
xdg_icon_cache_update
}
pkg_postrm() {
xdg_icon_cache_update
}