Open darealshinji opened 7 years ago
libs/libewf-Linux-x64.so added to v3.3.0 branch in /libs/x64(I only just noticed I didnt have the x64 and x86 subfolders created in Git, as set and defined and expected in the code base. Ive just adjusted it). I've added a couple of comments to your commit just to check I have not mis-understood some of your changes. Let me know if all is good? Thanks as ever for your rapid actions helping with packaging!
(PS..these commits to the packaging and makefile are good as I can merge them to master without it impacting on the program itself and I can prepare a seperate Debian package download for the website, but be aware that no code changes to the program can happen now as I have compiled, prepared, hashed, uploaded and scheduled the release of v3.3.0 on the website. So I wont be recompiling it now until the next version, so please dont commit any new code changes to the v3.3.0 branch which was merged with master last night, and I'll merge your new changes with master tonight).
New packages made for v3.3.0 (thanks man). Changes to branch commited to master for Makefile.
Hey @darealshinji - not sure if you're still active and wanting to help, but I am struggling, for some reason (having done it last time) with the packager. I've just pushed some updates to the branch for newer versions of Lazxarus, FPC and v3.3.3 of QH that I am trying to build a Deb for. But despite having all the Lazarus stuff installed it breaks out the loop saying I need to install it. Can you advise?
I will take a look into it.
I have updated the packaging files and the Makefile in the v3.3.3 branch. If the script still thinks you need to install Lazarus you can simply confirm with "Y" to continue anyway.
You're a legend!! I'll take a look when I'm back home later. Thanks a million.
Gave it a try last night @darealshinji . On my system, the installation paths seem to be : /usr/lib/lazarus/2.2.0/, /usr/share/doc/lazarus/2.2.0 etc. So, when the script is executed, I get :
make[1]: Entering directory '<
Lintian checks:
If I look in /usr/share/, there is no 'lazarus' sub folder. Any thoughts??
I have updated the Makefile and packaging files to work with Lazarus installed throgh APT.
Thanks as always. I did a pull and re-tried but on my system it is still looking for 2.0.12. Example :
/usr/share/lazarus/2.0.12/tools/lazres dbases_sqlite.lrs dbases_sqlite.lfm ; /bin/sh: 1: /usr/share/lazarus/2.0.12/tools/lazres : not found
lazres, on my system, is in /usr/lib/lazarus/2.2.0/tools/lazres
I THINK I configured Lazarus from the Linux Mint v21 package manager.
I hate to ask, but would it be easier (for you primarily) for you to just upload to releases or to email me the debs your system makes?
I've updated the Makefile on the v3.3.3 branch, not master branch. But yeah, I can upload the debs later here.
Ah! Sorry - I didn't notice that!! Yes, I've merged the changes via pull request to master and pulled with the new makefile, and I now have compiled Deb packages!! A million thanks. Great work as always
EditedScripts.zip Trying to package v3.3.4. The package ZVDateTimeCtrls has been removed from the project and pushed to master in favour of TDateTime from DateTimeCtrls unit.
Compiles OK on Windows and OSX and Linux (as binary). But the buildpackage.sh and Makefile are failing to create the debs. First problem was "quilt" is now needed but I solved that by installing the quickly dependancy seperately.
Then I tried removing references to ZVDateTimeCtrls in the scripts (edited versions attached), and "Clean and Build" the project, assuming that would remove any references to ZVDateTimeCtrls but I still get :
Error: (lazbuild) Broken dependency: ZVDateTimeCtrls
make[1]: [Makefile:42: quickhash] Error 3
make[1]: Leaving directory '<
I dont know enough about Linux scripts. Would you mind edited the MakeFile and buildpackage.sh to remove references to ZVDateTimeCtrls? I really want to get all three OS versions out together - Windows, Linux and OSX.
I have update the files on the branch v3.3.4 and packaging. I just had to apply some of the changes from quickhash.lpi
to quickhash_linux.lpi
.
OK, some good news and bad news. The good news is, the new version of the build packager works great, thanks. Finally got some time whilst I am off work to compile it. So the deb creates fine now, and it installed OK.
But, there is a snag.
The libewf so file that gets installed does not seem to be the one from the libs/64 master folder. The following are SHA1 hashes that file from the current master branch and the last few versions of the program :
2376c9092754abf401cfa1d17c00801daab4d143 master-libewf-Linux-x64.so 2376c9092754abf401cfa1d17c00801daab4d143 v334-libewf-Linux-x64.so 2376c9092754abf401cfa1d17c00801daab4d143 v333-libewf-Linux-x64.so 2376c9092754abf401cfa1d17c00801daab4d143 v332-libewf-Linux-x64.so
But, the one that ends up in /usr/lib/quickhash/libs/x64/ is :
068241cef71ecfc0f85ea2216482a80e48506f1f /usr/lib/quickhash/libs/x64/libewf-Linux-x64.so
So, having spent two hours today trying to work out what is going on there, do we know how the Debian package is dealing with the /libs/libewf-Linux-x64.so file? Is it being compiled direct from source by the Debian package manager? Or is it copying the SO file from master? If it's the former, then I'd understand how it would be different. But if it is the latter, then how\why is it generating a different version? I only noticed using the environment checker of quickhash, which has the expected hash of the libraries compiled into it, and it then computes the hashes of the libraries it finds with it. In this case, it is expecting 2376c9092754abf401cfa1d17c00801daab4d143 but calculating 068241cef71ecfc0f85ea2216482a80e48506f1f for /usr/lib/quickhash/libs/x64/libewf-Linux-x64.so
The only thing I can see impacting this is in the makefile, but that just looks like paths lookups and hasnt changed in a long time :
PREFIX ?= /usr BIN = quickhash QHARCH ?= x64 LIBEWF = libewf-Linux-$(QHARCH).so
Debian packaging automatically strips binaries which I guess even has an effect on already stripped files. I can exclude the file from being stripped.
Thank goodness for that! I was worried for a moment it might be more complex - I didnt know that about the stripping. Thanks very much - if you could.
However most of your pre-built libraries weren't stripped in the first place:
djcj@djcj:~/Downloads/quickhash/libs
$ file */*
x64/libewf-Linux-x64.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=488027096fb638fbe861e40f8b87a36864d14f47, with debug_info, not stripped
x64/libewf-x64.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
x64/libgcc_s_dw2-1.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
x64/libwinpthread-1.dll: PE32+ executable (DLL) (console) x86-64 (stripped to external PDB), for MS Windows
x64/README.txt: ASCII text
x64/sqlite3-win64.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
x64/zlib1.dll: PE32+ executable (DLL) (console) x86-64 (stripped to external PDB), for MS Windows
x86/libewf-x86.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
x86/libgcc_s_dw2-1.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
x86/libwinpthread-1.dll: PE32+ executable (DLL) (console) x86-64 (stripped to external PDB), for MS Windows
x86/README.txt: ASCII text
x86/sqlite3-win32.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
x86/zlib1.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
I recommend you to use strip
on the .so
and the unstripped .dll
files.
Mmmm. And running strip on libewf-Linux-x64.so results in 6e0211f8fccb4c1fdbacb878271d55e834b0cf80 which is different again to what the Debian stripping resulted though both have caused a resulting file of 1.5M instead of 4.5Mb. This isnt going to be a quick resolve I doubt. Urgh. Just when I thought v3.3.4 was about ready, more work to do.
(the sqlite3-*.dll are direct from the sqlite site so I'm guessing no stripping needed there)
Ted gives up temporarily.
Different checksum may come from from different versions of binutils being used? Or Debian packaging runs it with different arguments?
I think you didn't use the latest packaging files to create the v3.3.4 package: https://github.com/tedsmith/quickhash/commit/c549f088a8001a8c5b084137bd34a2aecfd67ebb
Those packaging scripts don't strip the library anymore.
Here is the re-built package. The library file inside the package is indeed unmodified, is still has the old checksum.
quickhash_3.3.4-1_amd64-rebuilt-v2.zip
By the way if you want to get the checksum of a file inside you can open it in gdebi and look at the md5sums file:
"I think you didn't use the latest packaging files to create the v3.3.4 package" - you're right, because I got all muddled with different branches and commits and in the end, I figured it was better to just ship them as they are and I added a disclaimer about the Linux so file in the form of a ReadMe. But I'll use the updated one for the next release. Thanks.
Thank you for providing a rebuilt package for me. I'll likely replace what I uploaded last night with this one once I've had chance to test it and make sure its all OK.
I've written packaging files based on the files you had published here. Running Lintian on the package shows no errors or warnings for me.
Packaging files plus a .deb package: debian.zip