Re: PATCH: pgAdmin4 windows installer

From: Paresh More <paresh(dot)more(at)enterprisedb(dot)com>
To: Dave Page <dpage(at)pgadmin(dot)org>
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>, Sandeep Thakkar <sandeep(dot)thakkar(at)enterprisedb(dot)com>, Hamid Quddus <hamid(dot)quddus(at)enterprisedb(dot)com>
Subject: Re: PATCH: pgAdmin4 windows installer
Date: 2016-06-03 13:45:24
Message-ID: CAAgiCNFRtpWqtW7Ka_rjCgTLmH3jEBA-kr-ph_GnpqFJxshHdQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hello Dave

Attached is the updated patch for pgAdmin 4 windows

- Windows x86 and amd64 check is added, so now on 32 machine if amd64 is
selected it would not allow to generate installer.
- check is added which will check if any mismatch in QT(msvc) and VC version

Installer location -

https://uploads.enterprisedb.com/download.php?file=7486e62c393b168f3df74d983268b923

And all issues which you mentioned are also fixed.

On Tue, May 31, 2016 at 8:17 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:

> Oh - in addition, pgadmin4.db is being shipped.
>
> On Tue, May 31, 2016 at 3:04 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>
>> Hi
>>
>> This still doesn't build for me:
>>
>> > make x86
>> ...
>> ...
>>
>> Generating Code...
>> link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO
>> /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='M
>> icrosoft.Windows.Common-Controls' version='6.0.0.0'
>> publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture
>> ='*'" /MANIFEST:embed /OUT:release\pgAdmin4.exe
>> @C:\Users\dpage\AppData\Local\Temp\nm5F51.tmp
>> Qt5Core.lib(Qt5Core.dll) : fatal error LNK1112: module machine type 'x64'
>> conflicts with target machine type 'X86'
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
>> Studio 12.0\VC\BIN\link.EXE"' : return code '0x458'
>>
>> Stop.
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
>> Studio 12.0\VC\bin\nmake.exe"' : return code '0x2'
>> Stop.
>>
>> Aborting build!
>> "Preparing Creation of windows installer"
>> cp: cannot create regular file
>> `C:\\Users\\dpage\\Documents\\pgadmin4\\pkg\\win32\\win-build\\/C:\\Users\\dpage\\Documen
>> ts\\pgadmin4\\pkg\\win32\\Resources\\pgAdmin4.ico': No such file or
>> directory
>> "C:\Program Files (x86)\Inno Setup 5\ISCC.exe" /q
>> "C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss"
>> Error on line 101 in
>> C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss: Column 3:
>> Semicolon (';') expected.
>> Compile aborted.
>>
>> (note that the build doesn't abort). I then try a different QTDIR, this
>> time a 32 bit one:
>>
>> link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO
>> /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='M
>> icrosoft.Windows.Common-Controls' version='6.0.0.0'
>> publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture
>> ='*'" /MANIFEST /MANIFESTFILE:release\pgAdmin4.exe.embed.manifest
>> /OUT:release\pgAdmin4.exe @C:\Users\dpage\AppData\Loca
>> l\Temp\nm1C68.tmp
>> qtmain.lib(qtmain_win.obj) : error LNK2038: mismatch detected for
>> '_MSC_VER': value '1700' doesn't match value '1800' in
>> pgAdmin4.obj
>> release\pgAdmin4.exe : fatal error LNK1319: 1 mismatches detected
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
>> Studio 12.0\VC\BIN\link.EXE"' : return code '0x527'
>>
>> Stop.
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
>> Studio 12.0\VC\bin\nmake.exe"' : return code '0x2'
>> Stop.
>>
>> Aborting build!
>> "Preparing Creation of windows installer"
>> cp: cannot create regular file
>> `C:\\Users\\dpage\\Documents\\pgadmin4\\pkg\\win32\\win-build\\/C:\\Users\\dpage\\Documen
>> ts\\pgadmin4\\pkg\\win32\\Resources\\pgAdmin4.ico': No such file or
>> directory
>> "C:\Program Files (x86)\Inno Setup 5\ISCC.exe" /q
>> "C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss"
>> Error on line 101 in
>> C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss: Column 3:
>> Semicolon (';') expected.
>> Compile aborted.
>>
>> If I then try a 64bit build:
>>
>> > make amd64
>> ...
>> ...
>>
>> Generating Code...
>> link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO
>> /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='M
>> icrosoft.Windows.Common-Controls' version='6.0.0.0'
>> publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture
>> ='*'" /MANIFEST:embed /OUT:release\pgAdmin4.exe
>> @C:\Users\dpage\AppData\Local\Temp\nmF7B9.tmp
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PyString_FromString referenced in function "public: __cdecl
>> Server::Server(unsigned short)" (??0Server@@QEAA(at)G@Z)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PyList_Append referenced in function "public: __cdecl Serve
>> r::Server(unsigned short)" (??0Server@@QEAA(at)G@Z)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PyFile_FromString referenced in function "protected: virtua
>> l void __cdecl Server::run(void)" (?run(at)Server@@MEAAXXZ)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PyFile_AsFile referenced in function "protected: virtual vo
>> id __cdecl Server::run(void)" (?run(at)Server@@MEAAXXZ)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_Py_SetProgramName referenced in function "public: __cdecl S
>> erver::Server(unsigned short)" (??0Server@@QEAA(at)G@Z)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_Py_Initialize referenced in function "public: __cdecl Serve
>> r::Server(unsigned short)" (??0Server@@QEAA(at)G@Z)
>> Server.obj : error LNK2019: unresolved external symbol __imp_Py_Finalize
>> referenced in function "public: virtual __cdecl
>> Server::~Server(void)" (??1Server@@UEAA(at)XZ)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PyRun_SimpleStringFlags referenced in function "protected:
>> virtual void __cdecl Server::run(void)" (?run(at)Server@@MEAAXXZ)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PyRun_SimpleFileExFlags referenced in function "protected:
>> virtual void __cdecl Server::run(void)" (?run(at)Server@@MEAAXXZ)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_PySys_GetObject referenced in function "public: __cdecl Ser
>> ver::Server(unsigned short)" (??0Server@@QEAA(at)G@Z)
>> Server.obj : error LNK2019: unresolved external symbol
>> __imp_Py_NoSiteFlag referenced in function "public: __cdecl Serve
>> r::Server(unsigned short)" (??0Server@@QEAA(at)G@Z)
>> release\pgAdmin4.exe : fatal error LNK1120: 11 unresolved externals
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
>> Studio 12.0\VC\BIN\amd64\link.EXE"' : return code '
>> 0x460'
>> Stop.
>> NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual
>> Studio 12.0\VC\bin\nmake.exe"' : return code '0x2'
>> Stop.
>>
>> Aborting build!
>> "Preparing Creation of windows installer"
>> cp: cannot create regular file
>> `C:\\Users\\dpage\\Documents\\pgadmin4\\pkg\\win32\\win-build\\/C:\\Users\\dpage\\Documen
>> ts\\pgadmin4\\pkg\\win32\\Resources\\pgAdmin4.ico': No such file or
>> directory
>> "C:\Program Files (x86)\Inno Setup 5\ISCC.exe" /q
>> "C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss"
>> Error on line 101 in
>> C:\Users\dpage\Documents\pgadmin4\pkg\win32\installer.iss: Column 3:
>> Semicolon (';') expected.
>> Compile aborted.On Mon, May 30,
>>
>> So, specific issues seen:
>>
>> - At least one of the default paths in make.bat is wrong - the one
>> containing Syswow64 should contain a 32 bit library.
>>
>> - The 32 bit paths will certainly be wrong on 32 bit Windows.
>>
>> - Make.bat does not properly exit following errors.
>>
>> - Error handlers like setPythonDetails don't have appropriate names
>> (maybe err_handle_python ?)
>>
>> - Error handlers like setPythonDetails display multiple errors at once,
>> only one of may have been the actual problem.
>>
>> - Using SET in the batch script is modifying the environment of the
>> parent shell (which I found earlier has probably wasted a lot of my time)
>>
>> - In general, it seems very fragile, and easy to break with different
>> versions of tools being installed. Such issues should be checked for and
>> warned about (e.g. if there is a 32/64 bit mismatch).
>>
>> - Shouldn't it be PGDIR, not PG_PATH? That's what I see being used
>> elsewhere.
>>
>> - The installer build complains it cannot find the icon.
>>
>> - The installer build fails due to a syntax error in installer.iss.
>>
>> - Shouldn't the temp folders be in $SRC/win32-build to match what is done
>> on Mac?
>>
>> - A number of tabs have crept back into Make.bat after I replaced them
>> all with ' ' last time.
>>
>> - %wd is used in some places, %WD in others. Similar, rem vs. REM (the
>> latter of which I standardised on last time)
>>
>> - The README is poorly formatted and doesn't make sense in a number of
>> places. Rough update attached for review and further improvement.
>>
>> 2016 at 7:40 AM, Paresh More <paresh(dot)more(at)enterprisedb(dot)com> wrote:
>>
>>> Hello Dave,
>>>
>>> Following things are also fixed in the patch as per discussed with
>>> sandeep.
>>>
>>> - added "MINIFY_HTML = False" to config_local.py
>>> - win-build removed following a successful build
>>>
>>> Installer download link is:
>>>
>>> https://uploads.enterprisedb.com/download.php?file=3d9f8c2458e27a5a34ba8e942687f55f
>>>
>>> Attached is the updated patch.
>>>
>>>
>>>
>>>
>>> On Fri, May 27, 2016 at 10:32 PM, Paresh More <
>>> paresh(dot)more(at)enterprisedb(dot)com> wrote:
>>>
>>>> Hello Dave,
>>>>
>>>> Make.bat usage is change to
>>>>
>>>> Make.bat x86 // It would generated 32 bit installer
>>>> Make.bat adm64 // would generated 64 bit installer
>>>> Make.bat clean // Will cleanup all output it creates in normal
>>>> mode
>>>>
>>>> Now Make.bat would generated 32/64 installers as per selected.
>>>>
>>>> - Avoids trashing a pre-existing config_local.py, and creates a very
>>>> simple one in the staging directory.
>>>> DONE
>>>>
>>>> - Various tidy-ups of Make.bat.
>>>> Tried to clean up code and added some information to the scripts
>>>>
>>>> - Change the default path to %ProgramFiles%\pgAdmin 4\v<major> (added
>>>> the v, as <major> on it's own looks weird)
>>>> DONE - Based on 32 bit or 64 bit it would install accordingly
>>>>
>>>> - Make.bat should take a "clean" parameter, to cleanup all output it
>>>> creates in normal mode.
>>>> DONE
>>>>
>>>> - The package name in the installer should be set from config.py as the
>>>> version is.
>>>> DONE
>>>>
>>>> psycopg2 issue is resolved.
>>>>
>>>> - As far as I can see, the Helpfiles are not built or bundled (talk to
>>>> Sandeep about this)
>>>> DONE - Helpfiles are added to installer
>>>>
>>>> - No Start Menu icon is created.
>>>> DONE
>>>>
>>>> - Why is 3rd_party_licences.txt included? We don't need that.
>>>> Removed it is not required
>>>>
>>>> - pkg/win32/installer.iss should be added to a .gitignore file.
>>>> DONE
>>>>
>>>> - SplashScreen.bmp doesn't seem to be used (though it is referenced
>>>> from the installer config file.
>>>> Splashscreen would be now displayed during installation
>>>>
>>>> - Based on 32/64 python27.dll would be shipped
>>>>
>>>> - The Add/Remove Programs entry text should be: "pgAdmin 4 v1", thus
>>>> allowing v1.1 to be a bug-fix release, and 2.0 to be the next major version.
>>>> DONE
>>>>
>>>> - Any pre-existing pgadmin4.db is being shipped.
>>>> DONE
>>>>
>>>> - Any pre-existing *.pyc files are being shipped.
>>>> DONE
>>>>
>>>> I have tested on 32 bit machine only and its working fine, for 64 bit
>>>> all changes are in place, Make.bat amd64 would generate the desired
>>>> installers.
>>>>
>>>>
>>>> Attached is the updated Patch.
>>>>
>>>>
>>>> On Thu, May 26, 2016 at 7:13 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:
>>>>
>>>>> Hi
>>>>>
>>>>> On Fri, May 20, 2016 at 9:33 AM, Paresh More <
>>>>> paresh(dot)more(at)enterprisedb(dot)com> wrote:
>>>>>
>>>>>> Hello Dave.
>>>>>>
>>>>>> Attached are two patch for pgAdmin4-windows
>>>>>>
>>>>>> pgAdmin4_createDB.patch
>>>>>> - patch for pgAdmin4.py to autocreate database configuration if does
>>>>>> not exist.
>>>>>> - Now pgadmin.db would be not be bundled with installer, it would be
>>>>>> created if pgAdmin4.py is executed for the first time.
>>>>>>
>>>>>
>>>>> This is committed.
>>>>>
>>>>>
>>>>>>
>>>>>> *pgAdmin4_windows.patch*
>>>>>> - Environment variables once set will over ride the existing script
>>>>>> variables.
>>>>>> - Issue related to path with quotes are removed.
>>>>>> - New Readme.txt is added.
>>>>>> - Modified Error reporting.
>>>>>> - Python check was missing related to which requirement file it
>>>>>> should pick for creating private environment based on python version is
>>>>>> also fixed.
>>>>>>
>>>>>
>>>>> Attached is an update to this patch, which modifies the following:
>>>>>
>>>>> - Avoids trashing a pre-existing config_local.py, and creates a very
>>>>> simple one in the staging directory.
>>>>>
>>>>> - Various tidy-ups of Make.bat.
>>>>>
>>>>> - Change the default path to %ProgramFiles%\pgAdmin 4\v<major> (added
>>>>> the v, as <major> on it's own looks weird)
>>>>>
>>>>> Please update further to address the following issues. I need this
>>>>> completed ASAP, thanks:
>>>>>
>>>>> - Make.bat should take a "clean" parameter, to cleanup all output it
>>>>> creates in normal mode.
>>>>>
>>>>> - The package name in the installer should be set from config.py as
>>>>> the version is.
>>>>>
>>>>> - I see the following error:
>>>>>
>>>>> error: [Error 183] Cannot create a file when that file already
>>>>> exists: 'build\\bdist.win32\\wheel\\importlib-1.0.3.data\\..'
>>>>>
>>>>> ----------------------------------------
>>>>> Failed building wheel for importlib
>>>>>
>>>>> - And the following error:
>>>>>
>>>>> C:\Users\dpage\AppData\Local\Programs\Common\Microsoft\Visual C++
>>>>> for Python\9.0\VC\Bin\link.exe /DLL /nologo /INCREMENTAL:NO
>>>>> /LIBPATH:c:\python27\Libs
>>>>> /LIBPATH:c:\users\dpage\documents\pgadmin4\pkg\win32\release\ve_python\libs
>>>>> /LIBPATH:c:\users\dpage\documents\pgadmin4\pkg\win32\release\ve_python\PCbuild
>>>>> /LIBPATH:c:\users\dpage\documents\pgadmin4\pkg\win32\release\ve_python\PC\VS9.0
>>>>> /LIBPATH:C:/PROGRA~1/PG/pg95/lib ws2_32.lib advapi32.lib secur32.lib
>>>>> libpq.lib shfolder.lib
>>>>> build\temp.win32-2.7\Release\psycopg\psycopgmodule.obj
>>>>> build\temp.win32-2.7\Release\psycopg\green.obj
>>>>> build\temp.win32-2.7\Release\psycopg\pqpath.obj
>>>>> build\temp.win32-2.7\Release\psycopg\utils.obj
>>>>> build\temp.win32-2.7\Release\psycopg\bytes_format.obj
>>>>> build\temp.win32-2.7\Release\psycopg\connection_int.obj
>>>>> build\temp.win32-2.7\Release\psycopg\connection_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\cursor_int.obj
>>>>> build\temp.win32-2.7\Release\psycopg\cursor_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\diagnostics_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\error_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\lobject_int.obj
>>>>> build\temp.win32-2.7\Release\psycopg\lobject_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\notify_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\xid_type.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_asis.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_binary.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_datetime.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_list.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_pboolean.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_pdecimal.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_pint.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_pfloat.obj
>>>>> build\temp.win32-2.7\Release\psycopg\adapter_qstring.obj
>>>>> build\temp.win32-2.7\Release\psycopg\microprotocols.obj
>>>>> build\temp.win32-2.7\Release\psycopg\microprotocols_proto.obj
>>>>> build\temp.win32-2.7\Release\psycopg\typecast.obj
>>>>> /OUT:build\lib.win32-2.7\psycopg2\_psycopg.pyd
>>>>> /IMPLIB:build\temp.win32-2.7\Release\psycopg\_psycopg.lib
>>>>> /MANIFESTFILE:build\temp.win32-2.7\Release\psycopg\_psycopg.pyd.manifest
>>>>> LINK : fatal error LNK1181: cannot open input file 'libpq.lib'
>>>>> error: command
>>>>> 'C:\\Users\\dpage\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++
>>>>> for Python\\9.0\\VC\\Bin\\link.exe' failed with exit status 1181
>>>>>
>>>>> ----------------------------------------
>>>>> Failed building wheel for psycopg2
>>>>>
>>>>> %PGDIR% is set to: C:/Program Files (x86)/PostgreSQL/9.5, but note
>>>>> that /LIBPATH is including "C:/PROGRA~1/PG/pg95/lib".
>>>>>
>>>>> - As far as I can see, the Helpfiles are not built or bundled (talk to
>>>>> Sandeep about this)
>>>>>
>>>>> - No Start Menu icon is created.
>>>>>
>>>>> - Why is 3rd_party_licences.txt included? We don't need that.
>>>>>
>>>>> - pkg/win32/installer.iss should be added to a .gitignore file.
>>>>>
>>>>> - SplashScreen.bmp doesn't seem to be used (though it is referenced
>>>>> from the installer config file.
>>>>>
>>>>> - Running the app fails with the following (I suspect because of the
>>>>> psycopg2 issue above):
>>>>>
>>>>> ---------------------------
>>>>> Setup
>>>>> ---------------------------
>>>>> Unable to execute file:
>>>>> C:\Program Files (x86)\pgAdmin 4\v1\runtime\pgAdmin4.exe
>>>>>
>>>>> CreateProcess failed; code 2.
>>>>> The system cannot find the file specified.
>>>>> ---------------------------
>>>>> OK
>>>>> ---------------------------
>>>>>
>>>>> The only file in that directory is python27.dll. This is probably
>>>>> caused by this:
>>>>>
>>>>> fatal error LNK1112: module machine type 'x64' conflicts with target
>>>>> machine type 'X86'
>>>>>
>>>>> - The Add/Remove Programs entry text should be: "pgAdmin 4 v1", thus
>>>>> allowing v1.1 to be a bug-fix release, and 2.0 to be the next major version.
>>>>>
>>>>> - Any pre-existing pgadmin4.db is being shipped.
>>>>>
>>>>> - Any pre-existing *.pyc files are being shipped.
>>>>>
>>>>> --
>>>>> Dave Page
>>>>> Blog: http://pgsnake.blogspot.com
>>>>> Twitter: @pgsnake
>>>>>
>>>>> EnterpriseDB UK: http://www.enterprisedb.com
>>>>> The Enterprise PostgreSQL Company
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>
>>>> Thanks & Regards
>>>>
>>>> *Paresh More*
>>>>
>>>> [image: NEW-EDB-logo-4c]
>>>>
>>>> Pune, India.
>>>> Cell : +919922000564 | www.enterprisedb.com
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Thanks & Regards
>>>
>>> *Paresh More*
>>>
>>> [image: NEW-EDB-logo-4c]
>>>
>>> Pune, India.
>>> Cell : +919922000564 | www.enterprisedb.com
>>>
>>
>>
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>
>
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

--

Thanks & Regards

*Paresh More*

[image: NEW-EDB-logo-4c]

Pune, India.
Cell : +919922000564 | www.enterprisedb.com

Attachment Content-Type Size
pgadmin4_windows_3_June_16.patch application/octet-stream 95.0 KB

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dave Page 2016-06-03 14:09:39 Re: Patch for pgAdmin4 RPM package
Previous Message Dave Page 2016-06-03 12:10:53 pgAdmin 4 commit: Fix mouse cursor on dashboard quick links. Fixes #116