Install | Version |
---|---|
brew install maelvls/amc/auto-multiple-choice |
1.5.0 |
macOS version | Support | Prebuilt binaries (bottles) |
---|---|---|
macOS 12 Monterey (Intel) | โ๏ธ | โ |
macOS 12 Monterey (Apple Silicon) | โ๏ธ | โ |
macOS 11 Big Sur (Intel) | โ๏ธ | โ๏ธ |
macOS 11 Big Sur (Apple Silicon) | โ๏ธ | โ |
macOS 10 catalina (Intel) | โ๏ธ | โ๏ธ |
linux (x86_64) | โ | โ |
- To run it: open terminal and run
auto-multiple-choice
.
This tap aims to bring AMC (homepage, gitlab) to Homebrew, an alternative to Macports (portfile for AMC).
This tap features precompiled binaries (called bottle) built and tested daily using GitHub Actions. The bottles are uploaded to GitHub Packages.
The formula finally supports M1 macs! Note that prebuilt bottles (= faster install time) are not available since it would require renting an M1 mac. I have enable GitHub sponsoring for that reason.
Also I looked at the number of installations and it is surprisingly high! The formula maelvls/amc/auto-multiple-choice
is #2852 in terms of number of installations over the last year for a total of 1083 installations!!
I introduced a regression in
2671b0c
where I changed gtk+3
to gtk+
, which
prevented
people from installing or upgrading the auto-multiple-choice
formula for
approximately 24 hours. I fixed it today. My sincerest apologies!
On the 3rd of June, I announced the support for the M1 chips, and little did I know that the fix I introduced for #55 would only partially fix the issue. Since I don't have access to the Apple Silicon hardware, I cannot work out a fix for it.
To follow the news about this issue you can either subscribe to #55. You can also check out this official thread (in French).
It is now possible to use SMTP over TLS. Thanks to mimaoffice for reporting the issue!
I also re-introduced bottles (pre-built binaries) that should lower the installation and upgrade times from approximately 15 minutes to 60 seconds depending on the internet speed.
To understand what the pr-pull
label works, you can take a look at the
Homebrew post Homebrew tap with bottles uploaded to GitHub
Releases.
Thanks to the help of MouLam and Nemhome in #55, we discovered that macOS on M1 chips have a different behaviour with regards to compiling Perl modules (namely, Pango). That has been fixed and you can now install auto-multiple-choice
on Apple Silicon.
Another change is the removal of bottles (the pre-built binaries) for amc-pango. Bintray was retired in 2020, meaning that the amd-pango
bottles that Homebrew was trying to download are gone. That means amc-pango
will have to be recompiled every time... Not great, but that will do for now. I had to "vendor" Pango 1.42.4 because the latest versions of Pango were breaking the annotation mechanism (#33).
To build bottles (= zipped version of the pre-built auto-multiple-choice formula), I use some continous integration ([travis][build-status]). The builds have been failing for a while now, and I can't find enough time to fix the while CI system or to move it to Github Actions or to Azure Pipelines.
Until I find some time to make the CI work again (or if someone wants to help), I will remove
the bottles entirely. That means that the command brew install auto-multiple-choice
will take
longer to install (~8 minutes instead of 30 seconds with the bottles), but at least it will work
all the time!
When using the 'annotation' feature, you may get errors like:
Bad symbol syntax: 0-1:circle/hex_red at /usr/local/Cellar/auto-multiple-choice/1.4.0_6/lib/AMC/perl/AMC-annotate.pl line 151.
or
No PDF directory: /Users/mvalais/Projets-QCM/toyP/cr/corrections/pdf at /usr/local/Cellar/auto-multiple-choice/1.4.0_6/lib/AMC/perl/AMC-annotate.pl line 178.
The file /Users/mvalais/Projets-QCM/toyP/cr/corrections/pdf does not exist.
It might be something off in the settings file ~/.AMC.d/cf.default.xml
. Please try to rename
it and re-open your project.
The bug of the 'stacked caracters when annotating' has been fixed (see ticket).
Pango 1.14.4 introduces a bug that breaks annotations (see issue). The text is stacked at the beginning of each PDF:
With Pango 1.42.4, annotations should work. Here is the workaround: this
workaround isn't needed anymore!
brew unlink pango
brew install --build-from-source https://raw.githubusercontent.com/Homebrew/homebrew-core/a8ac7ea5/Formula/pango.rb
brew switch pango 1.42.4_2
If you get the error:
Error: Formulae found in multiple taps:
* maelvalais/amc/auto-multiple-choice-devel
* maelvls/amc/auto-multiple-choice-devel
To fix it:
brew untap maelvalais/amc
brew tap maelvls/amc
Regarding auto-multiple-choice-devel
, it was used in pre-1.4.0 but right now it has
the same version as auto-multiple-choice
and is useless. I removed the installation
information from the readme.
AMC-detect
and AMC-buildpdf
rely on opencv3. When Homebrew moved to opencv4,
it broke the dynamic library linkages as well as makfiles (now -std=c++11
is needed
and the header path is a bit different).
I'll fix that asap. Fixed on Jan. 6th, 2019 with version 1.4.0_1
!
If you still have the 1.4.0
version, just brew upgrade auto-multiple-choice
. You can do
brew info auto-multiple-choice
to check the installed version.
Note that the auto-multiple-choice-devel
will have the same version number
as auto-multiple-choice
probably for the next few months; I'll update
devel
as soon as new tags are created.
I was kind of frustrated at the fact that using --devel
was taking a LOT of
time, and updating it was thus a pain. I decided to create a real formula
called auto-multiple-choice-devel
that replaces the use of --devel
. What's
nice is that you will get precompiled: way less waiting when installing!!!
To sum up:
--devel
won't work anymore,- instead, use
brew install auto-multiple-choice-devel
. auto-multiple-choice
andauto-multiple-choice-devel
cannot be linked at simultanously (obviously).
I updated the --devel
version with the latest release candidate.
You can enable the development version using:
brew install maelvls/amc/auto-multiple-choice --devel
It will install the latest beta available. Note that due to Homebrew limitations, bottles cannot be built for devel versions, resulting in a longer installation time (it will need to download and install all the Perl dependencies).
We fixed the above bug (see PR53). Everything should be back to normal in 1.3.0.2199.
Note that bottles won't be available for a couple of days, but it only means that
the installation will be slightly longer in the meantime! done!
Homebrew updated OpenCV from 3.4.0 to 3.4.1. In 3.4.0, the C headers of OpenCV used
in AMC were fine (athough they have been deprecated
for a long time now) but in 3.4.1 the function cvLoadImage()
breaks. I'll see if we can move
away from the C bindings in AMC-detect.cc
(which is the culprit, see
the issue) but that will take some
days and even more time for pushing that upstream.
Homebrew has a bug that prevents me from creating bottles for a few days. I'll re-enable the bottles as soon as brew releases version 1.5.11. Until then, we must build from source, meaning that many perl packages will be downloaded and built during installation. Sorry for that!
Recorded preimage for 'auto-multiple-choice.rb'
error: Failed to merge in the changes.
Patch failed at 0001 amc: use the fork bitbucket.org/maelvalais/auto-multiple-choice
The copy of the patch that failed is found in: .git/rebase-apply/patch
Sorry for that, I am really dumb on this one. I force-pushed homebrew-amc
in order to revert the 2166 version. This is because I had created a fork
with a different version numbering; later, the commits in my fork were merged into
the main AMC repo and the version was 2161. brew audit
would tell me not to
have a version number lower than the previous ones... Solution:
git -C $(brew --repo maelvls/amc) reset --hard origin/master
- Why is the reduce button not working? This issue is discussed here. In short, it is related to the Glade UI toolkit which doesn't seem to be great with the Quartz (macOS) backend of Gtk3. The same issue appears when using Glade itself. Can't fix it from the AMC project itself ๐
- How can I uninstall in a clean way? If you want to go back to Macport's
auto-multiple-choice or you want to simply get rid or brew's installation,
ย you can uninstall using
brew uninstall auto-multiple-choice
(see uninstall-brew for uninstalling homebrew totally). If anything went wrong (bugs, errors), I would be pleased to see an issue opened on Github (or contact me by email at ย [email protected], but I would prefer that an issue is opened ๐). - What are the dependencies? For the installation, only Xquartz is
required. For running it, you need a latex distribution installed.
If you already have Mactex or Basic Tex installed (for example
ย the one you installed using
MacTeX.pkg
), you are ready to go!! You don't need to install a specific Homebrew version of Mactex. But if you don't have latex installed at all, you can install it usingbrew install homebrew/cask/mactex
. - How come there has never been an official formula for Homebrew? This
is mainly because of the complexity of auto-multiple-choice. It has an
insane number of Perl dependencies (~70 packages). Perl dependencies are not
handled by Homebrew (Macports does handle them), so I have to 'vendor'
them (= install them only for auto-multiple-choice, not system-wide).
The bad side is that it makes it a long formula (678 loc) that you
can compare to the
ansible.rb
formula (557 lines, but for vendoring python packages). - When building from source, why are there so many Perl download/make/make install? This is because Homebrew is not able to handle Perl dependencies, so I have to vendor each of the dependencies (around 70 of them), which means there are MANY downloads during the build phase if it is built from source.
- When running, there is a dylib/dydl error This is probably because it
installed from a bottle and that the bottle was outdated. I run a daily
cron script in order to check that the dylib links links are not broken.
Two solutions: 1) try reinstalling with
brew reinstall auto-multiple-choice
, 2) build from source withbrew install auto-multiple-choice --build-from-source
. If you are still stuck, please runbrew linkage auto-multiple-choice
and submit an issue on Github in order to help me fix it. - How did you do it? I took the macports recipe, vendored
perl packages and pdftk (also dblatex but it is only used during build).
Nothing is installed outside of the Homebrew environment so you don't
have to worry with messing your system. The only prerequisite is to
have Mactex (if you don't have it:
brew install homebrew/cask/mactex
). - Can I use the latest version (--devel, --HEAD) from mercurial?
At first, I had enabled the possibility for compiling using the
--HEAD
flag (so that it compiles using the latest sources from mercurial). But because it required latex during the build and that the compilation of the documentation and .sty was extremely cumbersome, I disabled it (allowing me to remove ~100 loc from the formula). - What are the next steps before publishing the formula to
homebrew-core? Two main problems before the maintainers of Homebrew can
accept this formula into the core formulas: I rely on a pre-built
pdftk.pkg
. It is not allowed in Homebrew core. A source-code-based PDFtk formula has existed for a while but the maintainer gave up as because of gcj-5 (from gcc@5 --with-java) 'hanging' during the build (Macports fixed gcc5 just in order to build PDFtk). This is because PDFtk relies on GCJ which is dead by now. We could replacepdftk
if we knew a way to scrap filled forms from PDFs.
-
Why are the windows tabbed like in Safari tabs? because it is using Gtk3, pop-up windows (like Open project) are (weirdly) opening as tabbed windows. This is a work-in-progress on the GTK3 side; the workaround is to un-tab the window by dragging out the tab, or disable the feature (System preferences -> Dock -> Prefer tabs when opening documents).
-
automultiplechoice.sty
is not found! This file cannot be installed to your Mactex distribution during installation as it requires sudo. You must run this after installing:sudo auto-multiple-choice latex-link
-
The font Linux Libertine is not found! Install Libertine using brew:
brew install homebrew/cask-fonts/font-linux-libertine
Note that you must drop the ending 'O' in your AMC-TXT and tex files. The command to use in tex files is:
\setmainfont{Linux Libertine}
and in amc-tex files:
Font: Linux Libertine
-
Why is x11 required by default but tex is not? This is because I am trying to comply to the Homebrew core repository practices in order to (eventually) merge the formula to the core repo. In the core repo,
x11
is accepted as a default dependency (xquartz is installed on their testing/bottling infrastructure). In the contrary,tex
is not accepted as a default dependency as Mactex is not installed during bottling. So we use the 'dist' tarballs from the Bitbucket's Downloads area which contain already compiled PDFs and documentation. -
The application craches after closing a warning popup The error is:
Gdk:ERROR:gdkeventloop-quartz.c:567:select_thread_collect_poll: assertion failed: (ufds[i].events == current_pollfds[i].events)
This bug seems to be related to Gtk+3 and Quartz backend used on macOS. I tried to fix the issue but it does not seem easily reproducible so I gave up.
-
Why is there no nice icon nor AutoMultipleChoice.app? Unfortunately, only deb-related linux distributions can (today) have a real application feel with a clickable icon in the application menu. On macOS, it would require to create an .app and sign it (which costs $99 per year). This is why we can only run it from the terminal and we don't get a fancy icon in the dock.
You can create an [issue] if you have any problem, question or if you think the whole idea of a formula that vendors everything is insane.
I went to http://deps.cpantesters.org and I copy-pasted the tree of dependencies (except for 'Core modules') into a Ruby array. For example:
"XML::Simple",
"XML::SAX",
"XML::NamespaceSupport",
"XML::SAX::Base",
I then gather all the ruby array with all dependencies (for example the
previous example) into a file list_of_deps
.
Then I run
./list_to_resources.pl < list_of_deps > resources
and I copy everything in resources
to the formula.
Here is list_to_resources.pl
:
#!/usr/bin/env perl
# Lines must be of form (spaces and the comma are ignored):
# "XML::Simple",
use MetaCPAN::Client;
my $mcpan = MetaCPAN::Client->new();
my %already_seen = ();
foreach $line ( <STDIN> ) {
chomp($line);
$line =~ s/^.*"([A-Za-z:0-9]*)".*$/\1/;
my $package = $mcpan->package($line);
if (! exists($already_seen{$line})) {
$already_seen{$line} = 1;
my $url = "https://cpan.metacpan.org/authors/id/".$package->file();
chomp(my $sha256 = `curl -sSL $url | sha256sum | cut -d' ' -f1`);
print "resource \"$line\" do\n";
print " url \"".$url."\"\n";
print " sha256 \"".$sha256."\"\n";
print "end\n";
}
}