--- a/meson.build Tue May 18 02:29:20 2021 -0500
+++ b/meson.build Wed May 19 02:40:35 2021 -0500
@@ -4,7 +4,7 @@
project('guifications', 'c',
license : 'GPL-2.0-or-later',
- meson_version : '>=0.52.0',
+ meson_version : '>=0.56.0', default_options : ['c_std=c99'])
parts = meson.project_version().split('-')
@@ -84,11 +84,11 @@
###############################################################################
###############################################################################
###############################################################################
--- a/packaging/meson.build Tue May 18 02:29:20 2021 -0500
+++ b/packaging/meson.build Wed May 19 02:40:35 2021 -0500
@@ -3,3 +3,5 @@
output : 'pidgin-guifications.spec',
configuration : version_conf)
--- a/packaging/nsis/guifications-installer.nsi Tue May 18 02:29:20 2021 -0500
+++ b/packaging/nsis/guifications-installer.nsi Wed May 19 02:40:35 2021 -0500
@@ -20,7 +20,7 @@
- OutFile "pidgin-guifications-${GUIFICATIONS_VERSION}.exe"
+ OutFile "${BUILD_DIR}\pidgin-guifications-${GUIFICATIONS_VERSION}.exe" ;The Default Installation Directory
InstallDir "$PROGRAMFILES\pidgin"
@@ -44,15 +44,15 @@
;-------------------------------
; Pidgin Plugin installer helper stuff
- !addincludedir "${PIDGIN_TREE_TOP}\pidgin\win32\nsis"
+ !addincludedir "${CURRENT_SOURCE_DIR}" !include "pidgin-plugin.nsh"
;--------------------------------
; Modern UI Configuration
- !define MUI_ICON .\nsis\install.ico
- !define MUI_UNICON .\nsis\install.ico
+ !define MUI_ICON install.ico + !define MUI_UNICON install.ico - !define MUI_HEADERIMAGE_BITMAP "nsis\header.bmp"
+ !define MUI_HEADERIMAGE_BITMAP "header.bmp" !define MUI_CUSTOMFUNCTION_GUIINIT gf_checkPidginVersion
@@ -69,7 +69,7 @@
!define MUI_LICENSEPAGE_RADIOBUTTONS
- !insertmacro MUI_PAGE_LICENSE ".\COPYING"
+ !insertmacro MUI_PAGE_LICENSE "${SOURCE_ROOT}\COPYING" !define MUI_DIRECTORYPAGE_TEXT_TOP $(DIR_SUBTITLE)
@@ -93,10 +93,10 @@
!insertmacro MUI_LANGUAGE "Spanish"
- !include "nsis\translations\english.nsh"
- !include "nsis\translations\french.nsh"
- !include "nsis\translations\italian.nsh"
- !include "nsis\translations\spanish.nsh"
+ !include "translations\english.nsh" + !include "translations\french.nsh" + !include "translations\italian.nsh" + !include "translations\spanish.nsh" ; Uninstall the previous version if it exists
Section -SecUninstallOldPlugin
@@ -167,7 +167,7 @@
SetOutPath "$INSTDIR\locale\${LANG}\LC_MESSAGES"
- File /oname=guifications.mo po\${LANG}.gmo
+ File /oname=guifications.mo ${BUILD_ROOT}\po\${LANG}.gmo @@ -205,20 +205,23 @@
SetOutPath "$INSTDIR\plugins"
- File "src\${GUIFICATIONS_DLL}"
+ File "..\..\build\src\${GUIFICATIONS_DLL}" SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\conf"
+ File "${SOURCE_ROOT}\pixmaps\*.png" SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\default"
- File "themes\default\theme.xml"
- File "themes\default\background.png"
+ File "${SOURCE_ROOT}\themes\default\theme.xml" + File "${SOURCE_ROOT}\themes\default\background.png" SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\mini"
- File "themes\mini\theme.xml"
- File "themes\mini\background.png"
+ File "${SOURCE_ROOT}\themes\mini\theme.xml" + File "${SOURCE_ROOT}\themes\mini\background.png" SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\Penguins"
- File "themes\Penguins\theme.xml"
- File "themes\Penguins\penguin.png"
+ File "${SOURCE_ROOT}\themes\Penguins\theme.xml" + File "${SOURCE_ROOT}\themes\Penguins\penguin.png" + SetOutPath "$INSTDIR\pixmaps\pidgin\guifications\themes\hbons" + FILE "${SOURCE_ROOT}\themes\hbons\theme.xml" + FILE "${SOURCE_ROOT}\themes\hbons\*.png" ; translations - if there is a way to automate this, i can't find it
!insertmacro INSTALL_GMO "bn"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/nsis/meson.build Wed May 19 02:40:35 2021 -0500
@@ -0,0 +1,19 @@
+if target_machine.system() == 'windows' + MAKENSIS = find_program('makensis') + installer = custom_target('installer', + '-DGUIFICATIONS_VERSION=@0@'.format(meson.project_version()), + '-DBUILD_ROOT=@0@'.format(meson.project_build_root()), + '-DBUILD_DIR=@0@'.format(meson.current_build_dir()), + '-DSOURCE_ROOT=@0@'.format(meson.project_source_root()), + '-DSOURCE_DIR=@0@'.format(meson.current_source_dir()), + '-DPIDGIN_VERSION=@0@'.format(PIDGIN.version()), + meson.current_source_dir() / 'guifications-installer.nsi', + output : 'pidgin-guifications-@0@.exe'.format(meson.project_version()), + depends : [guifications2]) + alias_target('installer', installer) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/packaging/nsis/pidgin-plugin.nsh Wed May 19 02:40:35 2021 -0500
@@ -0,0 +1,181 @@
+;; Windows Pidgin NSIS installer plugin helper utilities +;; Copyright 2005, Daniel Atallah <daniel_atallah@yahoo.com> +;; Include in plugin installer scripts using: +;; !addincludedir "${PATH_TO_PIDGIN_SRC}\pidgin\win32\nsis" +;; !include "pidgin-plugin.nsh" +!define PIDGIN_REG_KEY "SOFTWARE\pidgin" +!define PIDGIN_VERSION_OK 0 +!define PIDGIN_VERSION_INCOMPATIBLE 1 +!define PIDGIN_VERSION_UNDEFINED 2 +; Extract the Pidgin Version from the registry +; This will set the Error flag if unable to determine the value +; Pop the value of the stack after calling this to get the value (unless Error Flag is set) +Function GetPidginVersion + ; Read the pidgin version + ReadRegStr $R0 HKLM ${PIDGIN_REG_KEY} "Version" + IfErrors +1 GetPidginVersion_found + ; fall back to the HKCU registry key + ReadRegStr $R0 HKCU ${PIDGIN_REG_KEY} "Version" + IfErrors GetPidginVersion_done ; Keep the error flag set + GetPidginVersion_found: + Push $R0 ; Push the value onto the stack +; Check that the currently installed Pidgin version is compatible +; with the plugin version we are installing +; Push the Plugin's Pidgin Version onto the Stack before calling +; After calling, the top of the Stack will contain the result of the check: +; PIDGIN_VERSION_OK - If the installed Pidgin version is compatible w/ the version specified +; PIDGIN_VERSION_INCOMPATIBLE - If the installed Pidgin version isn't compatible w/ the version specified +; PIDGIN_VERSION_UNDEFINED - If the installed Pidgin version can't be determined +Function CheckPidginVersion + ; Save the Variable values that we will use in the stack + Pop $R4 ; Get the plugin's Pidgin Version + ; Read the pidgin version + IfErrors checkPidginVersion_noPidginInstallFound + ;If they are exactly the same, we don't need to look at anything else + StrCmp $R0 $R4 checkPidginVersion_VersionOK + ; Versions are in the form of X.Y.Z + ; If X is different or plugin's Y > pidgin's Y, then we shouldn't install + ;Check the Major Version + Call GetVersionComponent + IfErrors checkPidginVersion_noPidginInstallFound ;We couldn't extract 'X' from the installed pidgin version + Call GetVersionComponent + IfErrors checkPidginVersion_BadVersion ; this isn't a valid version, so don't bother even checking + ;Check that both versions' X is the same + StrCmp $R1 $R2 +1 checkPidginVersion_BadVersion + ;Check the Minor Version + Call GetVersionComponent + IfErrors checkPidginVersion_noPidginInstallFound ;We couldn't extract 'Y' from the installed pidgin version + Call GetVersionComponent + IfErrors checkPidginVersion_BadVersion ; this isn't a valid version, so don't bother even checking + ;Check that plugin's Y <= pidgin's Y + IntCmp $R1 $R2 checkPidginVersion_VersionOK checkPidginVersion_VersionOK checkPidginVersion_BadVersion + checkPidginVersion_BadVersion: + Push ${PIDGIN_VERSION_INCOMPATIBLE} + goto checkPidginVersion_done + checkPidginVersion_noPidginInstallFound: + Push ${PIDGIN_VERSION_UNDEFINED} + goto checkPidginVersion_done + checkPidginVersion_VersionOK: + Push ${PIDGIN_VERSION_OK} + checkPidginVersion_done: + ; Restore the Variables that we used +; Extract the part of a string prior to "." (or the whole string if there is no ".") +; If no "." was found, the ErrorFlag will be set +; Before this is called, Push ${VERSION_STRING} must be called, and then Push 0 for Major, 1 for Minor, etc +; Pop should be called after to retrieve the new value +Function GetVersionComponent + ; Save the Variable values that we will use in the stack + Pop $1 ;The version component which we want to extract (0, 1, 2) + Pop $0 ;The string from which to extract the version component + StrCpy $2 "0" ;Initialize our string index counter + StrCpy $7 "0" ;Index of last "." + StrCpy $3 "0" ;Initialize our version index counter + startGetVersionComponentLoop: + ;avoid infinite loop (if we have gotten the whole initial string, exit the loop and set the error flag) + StrCmp $6 $0 GetVersionComponentSetErrorFlag + StrCpy $6 $0 $2 ;Update the infinite loop preventing string + ;Determine the correct substring (only the current index component) + StrCpy $4 $0 $5 $7 ;Append the current character in $0 to $4 + StrCpy $5 $0 1 $2 ;store the next character in $5 + ;if the next character is ".", $4 will contain the version component prior to "." + StrCmp $5 "." +1 startGetVersionComponentLoop + StrCmp $3 $1 doneGetVersionComponent ;If it is the version component we're looking for, stop + IntOp $3 $3 + 1 ;Increment the version index counter + IntOp $2 $2 + 1 ;Increment the version string index to "." (so it will be skipped) + StrCpy $7 $2 ;Keep track of the index of the last "." + StrCpy $6 $0 $2 ;Update the infinite loop preventing string + goto startGetVersionComponentLoop + GetVersionComponentSetErrorFlag: + doneGetVersionComponent: + ; Restore the Variables that we used + Push $4 ;This is the value we're returning --- a/src/meson.build Tue May 18 02:29:20 2021 -0500
+++ b/src/meson.build Wed May 19 02:40:35 2021 -0500
@@ -60,5 +60,6 @@
# pidgin 2 doesn't use multi-arch lib directories
install_dir : get_option('prefix') / 'lib/pidgin',