rlauer6 / perl-amazon-s3

A portable client library for working with and managing Amazon S3 buckets and keys.
http://search.cpan.org/dist/Amazon-S3/
2 stars 7 forks source link

added Bucket->delete_keys(@keynames) #10

Closed luiserd97 closed 1 year ago

luiserd97 commented 1 year ago

Added function for bulk delete in one call.

https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html

rlauer6 commented 1 year ago

I've added a new branch delete-keys based on this PR. Several things looked like opportunities for enhancing the method:

Check out the new branch and see if this satisfies the requirements...thanks for the PR and motivation to add the method

luiserd97 commented 1 year ago

Very good changes you made there!

I just had difficulties trying to build the code in the branch. I couldn't create the Makefile.pl file because I was getting an error running the ./configure script saying:

"checking for pod2markdown... no configure: error: pod2markdown found?"

I'll keep trying on this tomorrow.

Thanks for the enhancements and I appreciate your support on this new feature to the module.

rlauer6 commented 1 year ago

Hi,

Sorry to hear of your trouble building the software :-( The fact that you tried and got that far is encouraging though…fyi I have updated the delete-keys branch this morning.

TL;DR

The following information is only relevant if you want to give it a go and try to hack on the software in order to create a distribution. It would be really great if you could try to install the necessary tooling if only to provide me some feedback as to where the documentation or tooling fails to allow someone else to successfully maintain the package.

I use autotools https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html quite heavily in order to build RPMs and CPAN distributions from Perl based projects. Sometimes this presents problems unless your development environment contains the tools necessary to build all parts of the project. Not all checks when running the configure script however will stop you and you may not need all of the tools suggested. Some checks will only warn that you don’t have a tool and therefore you won’t be able to do something (e.g. rpmbuild - Did you know that you can build RPMs on a Debian based system?). The configure script will also check for the Perl modules required by the project (alas this might not always be 100% complete, hence we check for the required modules whenever we create a CPAN distribution using another tool scandeps-static.pl).

Ah…the Perl dependency dance… In general the build is highly tuned to my particular environment, however if someone has the tools installed it should build with no problems. In general, it should not be too hard to add the necessary tools to build this package. Building means a few things depending on the situation…

make - will syntax check all Perl assets (.pl, .pm) and do other substitutions of automake variables in various files converting *.in files to their targets. Automake variables are substituted in Perl scripts, bash scripts, and other resources by replacing @something@ with the configured value (the value that was materialized during by the configure script after you invoked configure it something like ./configure --with-something=foo ).

In order to make this all work, the first thing the configure script does is check to see if you have the necessary tools installed - apparently you don’t have pod2markdown https://metacpan.org/dist/Pod-Markdown/view/bin/pod2markdown installed - which for some reason I decided you needed to build README.md from pod so that when go to this github repository https://github.com/rlauer6/perl-amazon-s3 the README.md there is the latest version of the pod from Amazon::S3.

The repo also uses github actions to try to build the software in a container and run the basic test (not the expensive ones). Hence the badge that indicates if the latest build was successful. That only means I could build this in my container - the CPAN testers provide a report after I upload the distribution. You can see the results of those tests https://metacpan.org. Those tests try building it on different versions of Perl on different platforms.

To create a CPAN distribution requires additional tooling that is also checked at configure time (fyi I have just updated the delete-keys branch because while writing this essay I noticed that I am not checking for make-cpan-dist.pl in the configure script). If you have the necessary tools then you can create a CPAN tarball thusly:

cd cpan make cpan

However, to do that requires these tools that are checked in the configure script:

I told you this was a dance…lol

Over the years I have autoconfiscated projects (the process of creating a project using autotools) using a project template and have customized each project as required. Recently however I have been endeavoring to create a project that automagically autoconfiscates Perl based projects. You can find it here https://github.com/rlauer6/autoconf-template-perl.git on github. It is still not 100% baked, but good enough so that I have created several projects from it in order to help me maintain a legacy Perl web application. There is copious documentation but I’m sure that there are still holes or context missing that might allow others to use it.

Again, thanks for the PR and prodding me to improve the module…I will be needing that feature soon anyway!

Rob Lauer (bigfoot)

On Mon, Mar 27, 2023 at 8:28 PM luiserd97 @.***> wrote:

Very good changes you made there!

I just had difficulties trying to build the code in the branch. I couldn't create the Makefile.pl file because I was getting an error running the ./configure script saying:

"checking for pod2markdown... no configure: error: pod2markdown found?"

I'll keep trying on this tomorrow.

Thanks for the enhancements and I appreciate your support to bring new feature to the module.

— Reply to this email directly, view it on GitHub https://github.com/rlauer6/perl-amazon-s3/pull/10#issuecomment-1486039309, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA5WRWSI4XMC6WHDGO25NADW6IWBHANCNFSM6AAAAAAWHYQHVA . You are receiving this because you commented.Message ID: @.***>

luiserd97 commented 1 year ago

Thanks for all the explanation!, finally I could make it work!

The problem was that I had "pod2markdown" in "/opt/homebrew/Cellar/perl/5.36.0/bin/" and the ./configure script wasn't looking for that path, but once I could figure out that that was the problem I could resolve it.

Aside of that everything worked fine here with no problems :)

rlauer6 commented 1 year ago

Cool! If you do ./configure --help the last few lines of the standard output for configure are the customizations made to the project’s configure.ac file that is converted into the configure script when you run autoreconf.

Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-perldeps don't abort if dependencies missing --disable-deps don't abort if dependencies missing --enable-distcheck-hack enable distcheck hack --enable-rpmbuild configure for an RPM build

Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-perl5libdir (defaults to DATAROOTDIR/perl5) --with-perl-includes=DIR[:DIR:...] prepend DIRs to Perl's @INC

Note the --perl-includes= which will indicate where the configure script might find additional Perl modules. --with-per5libdir is where you will be installing the package if you were to do a make && sudo make install.

I’m still iterating on some of the unit tests and found a bug in list() that I corrected yesterday. The method attempts to support both ListObjects and ListObectsV2 which have similar result and calling parameters. I think it is working now and will push an update to the development branch today.

Thanks for sticking with it and getting it working. BTW, in my previous role with EPAM I worked with a company that provided me with a Macbook Pro for a project that involved migrating a legacy Perl app to AWS…I learned a lot about why I don’t want to use a Macbook Pro when developing Perl applications! However, we got it done despite having to learn where brew squirrels away libraries and Perl assets. My go to device is my Chromebook where you can run a variation of Debian. I've been using a Chromebook since 2012, first by using ssh to develop using an EC2 and now natively using its ability to run Debian. This is my 4th Chromie having retired my Pixelbook last year due to its, ironically, failing pixels. For under $100 you can get an Intel i7. And it just works...

Rob

On Wed, Mar 29, 2023 at 1:34 AM luiserd97 @.***> wrote:

Thanks for all the explanation!, finally I could make it work!

The problem was that I had "pod2markdown" in "/opt/homebrew/Cellar/perl/5.36.0/bin/" and the ./configure script wasn't looking for that path, but once I could figure out that that was the problem I could resolve it.

Aside of that everything worked fine here with no problems :)

— Reply to this email directly, view it on GitHub https://github.com/rlauer6/perl-amazon-s3/pull/10#issuecomment-1487972779, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA5WRWWAZMUS3Q6T4KWW6ADW6PCWBANCNFSM6AAAAAAWHYQHVA . You are receiving this because you commented.Message ID: @.***>

rlauer6 commented 1 year ago

Just pushed what I hope to be the final version of 0.61 to the delete-keys branch. I spent some time re-running unit tests against LocalStack and AWS. I think we're good. Let me know if you have time to take a look and comment otherwise I'm going to pull the trigger and release a new version.

Rob

On Wed, Mar 29, 2023 at 1:34 AM luiserd97 @.***> wrote:

Thanks for all the explanation!, finally I could make it work!

The problem was that I had "pod2markdown" in "/opt/homebrew/Cellar/perl/5.36.0/bin/" and the ./configure script wasn't looking for that path, but once I could figure out that that was the problem I could resolve it.

Aside of that everything worked fine here with no problems :)

— Reply to this email directly, view it on GitHub https://github.com/rlauer6/perl-amazon-s3/pull/10#issuecomment-1487972779, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA5WRWWAZMUS3Q6T4KWW6ADW6PCWBANCNFSM6AAAAAAWHYQHVA . You are receiving this because you commented.Message ID: @.***>

luiserd97 commented 1 year ago

Hi,

Everything seems good on my side :)

luiserd97 commented 1 year ago

Hello again!

Do we have an estimate to when the new version will be released? Please let me know if there is anything I can help with.

Best regards.

rlauer6 commented 1 year ago

released this morning...thanks for contributing!

Rob

On Wed, Apr 12, 2023 at 11:09 AM luiserd97 @.***> wrote:

Hello again!

Do we have an estimate to when the new version will be released? Please let me know if there is anything I can help with.

Best regards.

— Reply to this email directly, view it on GitHub https://github.com/rlauer6/perl-amazon-s3/pull/10#issuecomment-1505445417, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA5WRWU7ZI5N5HKMHKK7U43XA3ASLANCNFSM6AAAAAAWHYQHVA . You are receiving this because you commented.Message ID: @.***>