Re: PATCH: pgAdmin4 windows installer

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Paresh More <paresh(dot)more(at)enterprisedb(dot)com>
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-05-31 14:04:51
Message-ID: CA+OCxoxhF0wLw131aBMNBLabNsV=wRS9OV7zv54w+97TOPa_Ag@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

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

Attachment Content-Type Size
README.txt text/plain 1.7 KB

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Murtuza Zabuawala 2016-05-31 14:43:02 PATCH: To fix expanding server if server inaccessible (pgAdmin4)
Previous Message Sandeep Thakkar 2016-05-31 12:19:42 Re: Patch for pgAdmin4 package on Mac OS X